我刚刚开始使用Realm for Objective-C,之前我使用过Realm for Swift,我记不起它有任何问题。
我想存储获取的对象并将它们转换为RLMObjects / NSMutableArrays并将它们作为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;
我知道RLMObjects不是线程安全的,但由于我同时向不同的对象模型添加不同的数据(并且在应用程序启动时只有一次),保持对线程的引用对我来说似乎不是一个好主意。 / p>
答案 0 :(得分:0)
为了澄清,RLMResults
对象是实时的,这意味着如果它们的基础数据发生了变化,它们会自动更新。因此,从来没有真正需要重新查询或刷新相同的结果对象。
如果您仍想存储自定义排序的RLMObject
实例列表,最有效的方法是创建一个具有RLMArray
属性的单独Realm模型类,然后您可以在其中保存你的所有物品。
例如,可能将其称为SalesList
对象:
RLM_ARRAY_TYPE(Sales)
@interface SalesList : RLMObject
@property RLMArray<Sales *><Sales> *sortedSales;
@end
然后,只需保留一个SalesList
对象,并将您排序的所有Sales
个对象添加到sortedSales
数组中。