如何让RLMResults变得可变?

时间:2015-03-04 05:39:27

标签: ios iphone realm

Realm doc说RLMResultsNSArray。我从数据库返回了一些结果,我想将它合并到另一个RLMResults。但似乎它是不可变的,如何使RLMResults从另一个RLMResults添加对象?还是让它变得可变?或将其转换为NSArray

2 个答案:

答案 0 :(得分:3)

目前,您必须手动执行此操作。您可以通过连接两个结果来创建RLMArray。

我们正在讨论相同类型的RLMObjects的路线图中的联合/合并方法。

您可以分享的任何内容都有助于我们了解用例并可能影响api设计

只要它们是同一类型,这是一个通用的例子

let currentTask = Task.objectsWhere("name = %@", "First task").firstObject() as Task
let currentRecords = currentTask.records
let arrayOfRecords = RLMArray(objectClassName: "Record")

arrayOfRecords.addObjects(currentRecords)

let futureTask = Task.objectsWhere("name = %@", "Future task").firstObject() as Task
let futureRecords = futureTask.records

arrayOfRecords.addObjects(futureRecords)

答案 1 :(得分:1)

我找到了来自duemunk的解决方案:https://github.com/realm/realm-cocoa/issues/1046

基本上我将RLMResults转换为[RLMObject]: func toArray<T>(ofType: T.Type) -> [T] { var array = [T]() for result in self { if let result = result as? T { array.append(result) } } return array }

let tracks = Track.allObjects().toArray(Track.self) // tracks is of type [Track]