gpt4 book ai didi

objective-c - AFIncrementalStore 是否需要 NSMainQueueConcurrencyType 上下文?

转载 作者:行者123 更新时间:2023-12-03 13:13:01 25 4
gpt4 key购买 nike

我一直在按照使用 SQLite 的存储库中的示例代码将 AFIncrementalStore 合并到我们的应用程序中。后备商店。所有示例都使用带有 NSMainQueueConcurrencyType 的单例 managedObjectContext .

+ (NSManagedObjectContext *)managedObjectContext {
static NSManagedObjectContext *_managedObjectContext = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{

NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
}
});

return _managedObjectContext;
}

使用这个 moc,我可以执行提取,看到它从网络中提取,并存储在 sqlite 后备存储中。我尝试将其更改为使用 NSPrivateQueueConcurrencyType ,虽然我会看到网络请求,但没有任何内容保存到 SQLite后备商店。但是,如果我让这个 moc 与主队列并发,然后从中创建一个 child ,并使用那个 moc,那么一切都很好。
+ (User *)user
{
// grab a user if we already have one
NSManagedObjectContext *managedObjectContext = [VigilCoreDatabase managedObjectContext];
NSManagedObjectContext *tmpContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
tmpContext.parentContext = managedObjectContext;

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
fetchRequest.fetchLimit = 1;
[fetchRequest setAffectedStores:@[ ]];

NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:tmpContext];
[fetchRequest setEntity:entity];

__block User *user = nil;
[tmpContext performBlockAndWait:^{
NSError *error = nil;
NSArray *fetchedObjects = [tmpContext executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
NSLog(@"error");
}
if(fetchedObjects.count > 0) {
user = fetchedObjects[0];
}
}];
return user;
}

我想弄清楚我的理解是否遗漏了什么。我似乎找不到任何不使用具有主队列并发性的 moc 作为父上下文的示例(使用私有(private)队列上下文的后备存储),但同时找不到任何文档解释这是否是必需的,或者在使用私有(private)队列上下文与在堆栈中具有主队列上下文时,我是否需要手动将更改推送到父级。

最佳答案

此时AFIncrementalStore患有错误。我问了一个关于另一个 IncrementalStore(它使用相同的代码)和 the response 的问题。让我相信 AFIS 需要 NSMainQueueConcurrencyType

关于objective-c - AFIncrementalStore 是否需要 NSMainQueueConcurrencyType 上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18533049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com