我們有需要做一些取一個後臺線程..但它並不需要任何數據 - 只有我們這樣做是使用特定的新的ObjectID是NSPersistentStoreCoordinator executeRequest沒有任何背景下,安全地獲取_objectIDs_
原本爲此創建空白託管上下文。
NSFetchRequest *request = [DKDocumentDetails requestAllWithPredicate:predicate inContext:ctx];
[request setResultType:NSManagedObjectIDResultType];
self.objectIDs = [DKDocumentDetails executeFetchRequest:request inContext:ctx];
...
但最近我發現了,我也能做到這一點的PST本身,沒有任何背景因爲我不希望被管理對象,但只標識
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];
...
所以在我的測試中,它從來沒有墜毀,並在文檔中,我不明白爲什麼它不應該工作...我的意思是我沒有得到未保存的東西,我不能得到的對象,但用這種方式...
它更快,看起來優雅,但它安全還是不安全?
這寫的很好,你引用文件強調你的觀點..並放棄像這樣我認爲它有資格作爲有效的答案:)謝謝:) –
我會鎖定(只是爲了安全:D) –
謝謝,我很高興我能幫上忙! – redlightbulb