ios – 领域列表和Swift阵列

前端之家收集整理的这篇文章主要介绍了ios – 领域列表和Swift阵列前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用Realm来保存数据,因为它似乎比Core Data更容易学习和使用.
然而,有些方面对我来说仍然不清楚,其中一个方面是使用领域列表.

例如,我现在有这样的事情:

class Foo {
    var a: String
    var b: [Bar]
    var average: Double {
        return Double(b.reduce(0.0,combine: {$0 + $1.c})) / Double(b.count);
    }
    //...

}

class Bar {
    var c: Float
    var d: NSDate
    //...
}

据我所知,我需要在Swift数组上使用Realm List来实现“to-many relationship”.
除了计算平均值(如在代码中),我使用foo.b数组来填充tableview,在一些中用于in循环.我还将它映射到其他数组并使用其filter()函数.

现在,我应该只使用领域列表还是应该将其映射到本机Swift阵列然后使用它(出于性能和简单性的原因)?

解决方法@H_502_14@
一般的建议是,如果你应该避免从List< T>转换到[T]除非有必要.有两个原因:

>列表< T>是对数据的实时视图,而不是时间点快照.
>列表< T>可以避免为许多计算实例化Ts.

实时视图

列表与LT; T>实例提供数据的实时视图,而不是时间点快照.您可以将其中一个提供给视图控制器,其内容将在应用程序的其他部分更新其包含的对象后更新.

效率

List< T>及其提供的方法可以避免在许多情况下实现T的实例.例如,您可以使用NSPredicate过滤List,而Realm不需要在内存中创建Swift对象来执行此操作.另一种情况是您的示例中的平均计算属性.它可以这样写(假设b现在是List< Bar>):

var average: Double {
    return b.average("c") as Double?
}

这将计算Realm中基础值的平均值,而不实现Bar实例.

猜你在找的iOS相关文章