我從CoreData
中獲取大約2500顆星以用於構建星圖,並且想要在後臺線程中計算座標等的大部分數學運算,原因很明顯。我的問題是,因爲我必須將CoreData
對象作爲NSManagedObjectID
s傳遞迴主線程,您將如何處理計算,例如後臺線程中的一組笛卡爾座標,並且(最好)在NSManagedObject
子類中設置這些座標?CoreData - 後臺線程中的計算屬性
對於它的價值,這裏是我使用的是從CoreData獲取並傳遞給主線程的代碼片段:
// Context and Model
NSManagedObjectContext *context = [self.dataProvider newManagedObjectContext];
NSManagedObjectModel *model = [self.dataProvider sharedManagedObjectModel];
// Fetch the stars
NSArray *stars = [SkyObject getSkyObjectsBetweenMinCoords:minCoords
maxCoords:maxCoords
minMag:self.minimumMagnitude
maxMag:self.maximumMagnitude
model:model
context:context];
NSMutableArray *starIDs = [[NSMutableArray alloc] init];
// Add the star's objectID to the set
for (SkyObject *star in stars) {
[starIDs addObject:star.objectID];
}
// Pass objects across thread boundaries
[self performSelectorOnMainThread:@selector(updateLocalContextWithObjectIDs:) withObject:starIDs waitUntilDone:YES];
// Release retained memory
[starIDs release];
[context release];
謝謝,我已經在使用'NSOperationQueue'工作。 –