2012-10-29 35 views
7

在我的多線程應用程序,主線程和一個或多個後臺線程可以同時訪問,獲取,並在我的核心數據存儲更改信息。對於每個線程,我正在創建一個新的NSManagedObjectContext。但是,NSManagedObjectContext的每個實例都使用相同的「NSPersistentStoreCoordinator」實例(存儲在其他地方的單例中)。NSMergeByPropertyObjectTrumpMergePolicy與NSMergeByPropertyStoreTrumpMergePolicy

我的問題是在問候的NSManagedObjectContext每個實例的合併政策。如果我爲主線程設置了後臺線程的一個合併策略(NSMergeByPropertyStoreTrumpMergePolicy)和另一個策略(NSMergeByPropertyObjectTrumpMergePolicy),是否有內在的好處?

在我NSMangagedObjectContext消氣,我有以下條件:

if ([NSThread isMainThread]) { 

     [_context setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy]; 

    } else { 

     [_context setMergePolicy:NSMergeByPropertyStoreTrumpMergePolicy]; 
    } 

謝謝。

編輯:是否有必要?我是否應該爲兩種類型的線程默認使用另一種策略?

回答

3

我結束了這個解決方案(遠遠超過一年前)去,但我最近沒有收到任何回答這個問題,我決定把我自己的。

NSManagedObjectContext *context; 

if ([NSThread isMainThread]) { 

    context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; 
    [context setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy]; 

} else { 

    context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType]; 
    [context setMergePolicy:NSMergeByPropertyStoreTrumpMergePolicy]; 

}