フェッチを行う必要があるバックグラウンド スレッドがありますが、データは必要ありません。オブジェクト ID のみです。
当初は、このためだけに特定の新しく作成された空のマネージド コンテキストを使用してこれを行いました。
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];
...
したがって、私のテストではクラッシュすることはありませんでした。ドキュメントでは、なぜ機能しないのかわかりません...つまり、保存されていないものを取得せず、オブジェクトを取得できませんが、この方法で使用されます...
より高速でエレガントに見えますが、安全でしょうか?