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阵列然后使用它(出于性能和简单性的原因)?

解决方法

一般的建议是,如果你应该避免从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 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...