ios - Realm 列表和 Swift 数组

标签 ios arrays swift realm

我想使用 Realm 来持久化数据,因为它似乎比 Core Data 更容易学习和使用。
然而,有些方面我仍然不清楚,其中之一是 Realm 列表的使用

例如我现在有这样的东西:

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 Array 上使用 Realm List 以建立“对多关系”。
除了计算平均值(如代码中所示)之外,我还使用 foo.b 数组来填充 tableview 和一些 for in 循环。我还将它映射到其他数组并使用它的 filter() 函数。

现在,我应该只使用 Realm List 还是应该将其映射到原生 Swift Array 然后改用它(出于性能和简单性原因)?

最佳答案

一般的建议是,如果你应该避免从 List<T> 转换至 [T]除非有必要。这有两个原因:

  1. List<T>是数据的实时 View ,而不是时间点快照。
  2. List<T>可以避免实例化 T s 用于许多计算。

实时取景

List<T>实例提供对数据的实时 View 而不是时间点快照。您可以将一个交给 View Controller ,它的内容将在应用程序的其他部分更新它包含的对象后更新。

效率

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

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

这将在不实现 Bar 的情况下计算 Realm 中基础值的平均值实例。

关于ios - Realm 列表和 Swift 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33743734/

相关文章:

objective-c - 我应该将我的事件指标发布声明放在 dealloc 中吗?

arrays - 从一组数组中返回最大的数组

javascript - 将数组和字符串合并成数组

php - 从多维数组中获取结果,在 php 中没有重复结果

ios - 展开时意外发现 URL 为 nil

ios - 使用自定义声音解析推送通知会播放默认声音

ios - 更改目录时 Gitlab CI 运行器作业失败退出状态 1

javascript - 来自 Android 和 IOS 客户端的 Ratchet 套接字

swift - WKWebView 在边框内显示 pdf,我不想要边框

ios - Xcode 找不到我的单元格标识符