Ios 存储RLMResults而不是重新获取

Ios 存储RLMResults而不是重新获取,ios,objective-c,multithreading,concurrency,realm,Ios,Objective C,Multithreading,Concurrency,Realm,我刚刚开始用领域来表示Objective-C,我以前用领域来表示Swift,我不记得有任何问题 我想存储获取的对象并将它们转换为RLMObjects/nsmutablearray,并将它们作为ViewController的属性,这样我就不必再次使用谓词和描述符获取它们,并通过循环将它们区分开来,因为要获取的数据很多 RLMResults *results = [Sales allObjects]; NSMutableArray<NSString *> resultsIDs* = [[

我刚刚开始用领域来表示Objective-C,我以前用领域来表示Swift,我不记得有任何问题

我想存储获取的对象并将它们转换为RLMObjects/nsmutablearray,并将它们作为ViewController的属性,这样我就不必再次使用谓词和描述符获取它们,并通过循环将它们区分开来,因为要获取的数据很多

RLMResults *results = [Sales allObjects];
NSMutableArray<NSString *> resultsIDs* = [[NSMutableArray alloc] init];
NSMutableArray<Sales *> *uniqueSales = [[NSMutableArray alloc] init];
for (Sales *sale in results) {
    NSString *id = sale.id;
    if (![resultsIDs id]) {
        [resultsIDs id];
        [uniqueSales addObject:sale];
    }
}

self.distinctProducts = uniqueSales;
RLMResults*results=[销售分配对象];
NSMUTABLEARRY resultsIDs*=[[NSMUTABLEARRY alloc]init];
NSMutableArray*uniqueSales=[[NSMutableArray alloc]init];
用于(销售额*销售业绩){
NSString*id=sale.id;
如果(![resultsIDs id]){
[结果id];
[唯一销售添加对象:销售];
}
}
self.distinctProducts=uniqueSales;

我知道RLMObjects不是线程安全的,但由于我同时向不同的对象模型添加了不同的数据(并且仅在应用程序启动时添加一次),因此保留对线程的引用对我来说似乎不是一个好主意。

只是澄清一下,
RLMResults
对象是活动的,这意味着如果它们的底层数据发生更改,它们会自动更新。因此,根本不需要重新查询或刷新同一个results对象

如果仍要存储
RLMObject
实例的自定义排序列表,最有效的方法是创建一个单独的领域模型类,该类具有
rlmaray
属性,然后可以在其中保存所有对象

例如,可以将其称为
SalesList
对象:

RLM_ARRAY_TYPE(Sales)

@interface SalesList : RLMObject
@property RLMArray<Sales *><Sales> *sortedSales;
@end
RLM_阵列_类型(销售)
@接口销售列表:RLMObject
@马里雷酒店*分类销售;
@结束

然后,只需保留一个
SalesList
对象,并将您排序的所有
Sales
对象添加到
sortedSales
数组中。

只是澄清一下,
RLMResults
对象是活动的,这意味着如果其基础数据发生更改,它们会自动更新。因此,根本不需要重新查询或刷新同一个results对象

如果仍要存储
RLMObject
实例的自定义排序列表,最有效的方法是创建一个单独的领域模型类,该类具有
rlmaray
属性,然后可以在其中保存所有对象

例如,可以将其称为
SalesList
对象:

RLM_ARRAY_TYPE(Sales)

@interface SalesList : RLMObject
@property RLMArray<Sales *><Sales> *sortedSales;
@end
RLM_阵列_类型(销售)
@接口销售列表:RLMObject
@马里雷酒店*分类销售;
@结束
然后只需保留一个
SalesList
对象,并将您排序的所有
Sales
对象添加到
sortedSales
数组中