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(...) 
    }]; 
} 

Если это не отвечает на вопрос, дайте мне знать, и я постараюсь помочь дальше.