Lor*_*ssi 7 arrays realm 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
//...
}
Run Code Online (Sandbox Code Playgroud)
据我所知,我需要List在Swift 上使用Realm Array才能建立"多对多关系".
除了计算平均值(如在代码中),我使用foo.b数组来填充tableview和一些for in循环.我还将它映射到其他数组并使用其filter()功能.
现在,我应该只使用Realm List还是应该将它映射到本机Swift阵列然后使用它(出于性能和简单性的原因)?
bda*_*ash 10
一般的建议是,除非必要List<T>,[T]否则应避免转换.有两个原因:
List<T> 是对数据的实时视图,而不是时间点快照.List<T>可以避免T为多次计算实例化s.List<T>实例提供数据的实时视图,而不是时间点快照.您可以将其中一个提供给视图控制器,其内容将在应用程序的其他部分更新其包含的对象后更新.
List<T>以及它提供的方法可以避免T在许多情况下实现实例.例如,您可以List使用an 过滤a ,NSPredicate而Realm不需要在内存中创建Swift对象来执行此操作.另一种情况是average您示例中的计算属性.它可以写成这样(假设b现在是List<Bar>):
var average: Double {
return b.average("c") as Double?
}
Run Code Online (Sandbox Code Playgroud)
这将计算Realm中基础值的平均值,而不实现Bar实例.
| 归档时间: |
|
| 查看次数: |
6370 次 |
| 最近记录: |