iOS PromiseKit和CoreData NSManagedObjectContext

时间:2015-04-01 21:19:31

标签: ios core-data concurrency nsmanagedobjectcontext promisekit

拥有NSManagedObjectContext并发类型为NSPrivateQueueConcurrencyType的PromiseKit可以用来美化performBlock:^{} / performBlockAndWait:^{}吗?

我的第一个想法是这样写:

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

但是,我担心因为promise块会在DISPATCH_QUEUE_CONCURRENT中注册,如果来自不同线程的updateModel:多次调用,则无法保证来自performBlock的块以正确的顺序注册。

这是否会发生变化? 那么使用performBlockAndWait:^{}呢?

1 个答案:

答案 0 :(得分:0)

您可以将dispatch_promise_on与您自己创建的并发队列一起使用:

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

如果这不能回答您的问题,请告诉我,我会尝试进一步提供帮助。