如何使RLMResults可变?

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

目前这是你必须手动完成的。 你可以通过连接你的两个结果来创build一个RLMArray。

尽pipe如此,我们正在讨论在同types的RLMObjects路线图上更进一步的联合/合并方法。

任何你可以分享的东西都将帮助我们理解用例,并可能影响apidevise

只要它们是相同的types,这里就是一个通用的例子

 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) 

我发现了来自duemunk的解决scheme: 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 } 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]