0

具有NSManagedObjectContext併發類型NSPrivateQueueConcurrencyType可以使用PromiseKit來美化performBlock:^{}/performBlockAndWait:^{}iOS PromiseKit和CoreData NSManagedObjectContext

我首先想到的是寫這樣的:

- (PMKPromise *)updateModel:(Model *)model 
{ 
    return [PMKPromise new:^(PMKPromiseFulfiller fulfill, PMKPromiseRejecter reject) { 
     [_managedContenxtModel performBlock:^{ 
       //... 
       fulfill(...) 
     }]; 
    }]; 
} 

但是,恐怕是因爲承諾塊將在DISPATCH_QUEUE_CONCURRENT,如果多次調用updateModel:註冊,從不同的線程,由它不能保證performBlock的塊按正確的順序註冊。

這是否會發生變化?
那麼用performBlockAndWait:^{}來代替呢?

回答

0

你可以使用dispatch_promise_on與您自己創建一個併發隊列:

- (PMKPromise *)updateModel:(Model *)model 
{ 
    return dispatch_promise_on(myQ, ^{ 
     [_managedContenxtModel performBlockAndWait:^{ 
       //... 
     }]; 
     fulfill(...) 
    }]; 
} 

如果這不回答你的問題,讓我知道,我會盡力進一步幫助。