我们有一个后台线程需要进行一些获取..但它不需要任何数据——只需要 objectID
最初我们只是为此使用特定的新创建的空白托管上下文来执行此操作。
NSFetchRequest *request = [DKDocumentDetails requestAllWithPredicate:predicate inContext:ctx];
[request setResultType:NSManagedObjectIDResultType];
self.objectIDs = [DKDocumentDetails executeFetchRequest:request inContext:ctx];
...
但最近我发现,我也可以在 PST 本身上执行此操作,无需任何上下文,因为我不想要托管对象,而只想要 ID
NSFetchRequest *request = [DKDocumentDetails requestAllWithPredicate:predicate inContext:mainctx /*used in the wrong thread but only for getting entity description*/];
[request setResultType:NSManagedObjectIDResultType];
NSError *error = nil;
self.objectIDs = [pst executeRequest:request inContext:nil error:&error];
...
所以在我的测试中它从未崩溃,在文档中我不明白为什么它也不应该工作......我的意思是我没有得到未保存的东西,我无法得到对象,但是以这种方式使用......
它更快,看起来很优雅,但它是否安全?