将RLMResults转换为RLMArray

时间:2014-11-25 14:41:26

标签: ios swift realm

我正在查询带有objectsWhere的RLMArray,我得到一个RLMResults,但我需要一个RLMArray,结果是我的代码中的这一点。

private var data: RLMArray?

self.data = self.currentSubcategory!.datasheets // is a RLMArray
self.data = self.data!.objectsWhere("is_favourite = 1")

2 个答案:

答案 0 :(得分:12)

  

RLMArray已分为两类:RLMArray和   RLMResultsRLMArray现在仅用于多个属性   RLMObject个类,而RLMResults用于所有类   查询和排序方法。这样做是为了反映这两者   实际上有相当不同的API(例如,RLMResults没有   有addObject:),我们预计他们会在我们补充时进一步分歧   更改查询通知。

     

此迁移应该像替换RLMArray一样简单   在编译器抱怨的所有位置都有RLMResults   约。

     

为此,arraySortedByProperty:ascending:已重命名   到sortedResultsUsingProperty:ascending:addObjectsFromArray:   已重命名为addObjects:以反映您可以这样做的事实   将任何可枚举对象传递给它(例如NSArrayRLMArray或   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会在您对源进行更改时进行实时更新。