在核心数据中查找或创建对象的标准



是否有任何标准或首选方法在Core Data中实现"查找或创建对象"?

我计划在NSManagedObject子类中使用类方法,但想确保我获得最佳性能。

例如,缓存提取以避免过多地访问磁盘是否有意义,还是浪费时间?

类方法很好。您必须点击磁盘才能检索,如果再次插入不成功。我没有看到性能下降。

如果你这样做 1000 次,当然在内存中这样做更有效。获取所有相关数据,甚至仅获取相关字段(带NSDictionaryResultType),并使用谓词在内存中过滤。如果您使用 KVC(键值编码),这可能是非常高效和优雅的 - 我在 100.000 条记录中使用了类似以下内容的内容:

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:"Entity"];
NSArray *result = [context executeFetchRequest:request error:nil];
NSArray *allIDs = [result valueForKeyPath:@"idAttribute"];
NSArray *existingIDs = [allIDs filteredArrayUsingPredicate:
     [NSPredicate predicateWithFormat:@"self in %@", idsToCheck]];
NSArray *newIDs = [idsToCheck filteredArrayUsingPredicate:
     [NSPredicate predicateWithFormat:@"self not in %@" existingIDs];

最新更新