将RLMResults转换为RLMArray

mrc*_*rcl 12 realm ios swift

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

private var data: RLMArray?

self.data = self.currentSubcategory!.datasheets // is a RLMArray
self.data = self.data!.objectsWhere("is_favourite = 1")
Run Code Online (Sandbox Code Playgroud)

Vi *_*huk 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

希望这就够了

  • 对于像我这样的未来Realm新手,请通过这些更改更新此博客文章.https://realm.io/news/tutorial-building-a-todo-app-with-realm/很棒的框架,但文档目前有点零散. (3认同)

Pet*_*isu 6

你需要从对象添加RLMResult到RLMArray...

@implementation RLMResults (RLMArrayConversion)

- (RLMArray *)toArray {
    RLMArray * array = [[RLMArray alloc] initWithObjectClassName:self.objectClassName];
    [array addObjects:self];
    return array;
}

@end
Run Code Online (Sandbox Code Playgroud)