我正在查询带有objectsWhere的RLMArray,我得到一个RLMResults,但我需要一个RLMArray,结果是我的代码中的这一点。
private var data: RLMArray?
self.data = self.currentSubcategory!.datasheets // is a RLMArray
self.data = self.data!.objectsWhere("is_favourite = 1")
答案 0 :(得分:12)
RLMArray
已分为两类:RLMArray
和RLMResults
。RLMArray
现在仅用于多个属性RLMObject
个类,而RLMResults
用于所有类 查询和排序方法。这样做是为了反映这两者 实际上有相当不同的API(例如,RLMResults
没有 有addObject:
),我们预计他们会在我们补充时进一步分歧 更改查询通知。此迁移应该像替换
RLMArray
一样简单 在编译器抱怨的所有位置都有RLMResults
约。为此,
arraySortedByProperty:ascending:
已重命名 到sortedResultsUsingProperty:ascending:
和addObjectsFromArray:
已重命名为addObjects:
以反映您可以这样做的事实 将任何可枚举对象传递给它(例如NSArray
,RLMArray
或RLMResults
)。
来源:http://realm.io/news/realm-cocoa-0.87.0/#rlmresults
希望够了
答案 1 :(得分:4)
let datasheets = self.currentSubcategory!.datasheets!.objectsWhere("is_favourite = 1")
let objects = Array(datasheets.generate())
self.data!.removeAllObjects()
self.data!.addObjects(objects)
创建结果数组是必需的,因为self.data!.removeAllObjects()
行也会清除datasheets
,因为RLMResults
会在您对源进行更改时进行实时更新。