Realm doc说RLMResults
舔NSArray
。我从数据库返回了一些结果,我想将它合并到另一个RLMResults
。但似乎它是不可变的,如何使RLMResults
从另一个RLMResults
添加对象?还是让它变得可变?或将其转换为NSArray
?
答案 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]