gpt4 book ai didi

objective-c - NSPrivateQueueConcurrencyType 未正确保存

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

AFNetworking 从我的应用服务器获取信息后,将调用以下方法来填充我的 Core-Data

这些信息似乎工作得很好,因为当表格更新时,我可以看到 UITableView 中正在更新的新信息。

现在我遇到的问题是,即使我可以看到信息(从服务器获取信息后,存储到核心数据中并重新获取以显示在我的 UITableView 中)如果我然后去关闭我的应用程序并重新打开它,信息不再存在。

似乎信息不是持久的,问题似乎出在线程上。鉴于如果我删除方法中的线程选项,一切都会正常工作。

我错过了什么?我已经尝试了遇到的大多数事情,但似乎找不到解决方案。

NSManagedObjectContext *childContext = [[NSManagedObjectContext alloc]
initWithConcurrencyType:NSPrivateQueueConcurrencyType];
childContext.parentContext = managedObjectContext;
myModel.context = childContext;


[childContext performBlock:^{
// ... Lots Controller logic code that then calls the class myModel where all my Core-Data save methods are

// Sort Wall Pictures
if ( [dataHolder[@"verb"] isEqualToString:@"addWallPicture"] ) {
data = @{ @"resourceID":dataHolder[@"_id"][@"$id"],
@"resourceName":dataHolder[@"details"][@"resourceName"],
@"author":@{ @"id":dataHolder[@"userId"][@"$id"],
@"username":dataHolder[@"details"][@"authorName"] },
@"likesNumber":@0,
@"likesPeople":@[]
};

[myModel saveSocialWall:data date:date verb:dataHolder[@"verb"] code:dataHolder[@"_id"][@"$id"] myUser:myUser];
continue;
}
[childContext save:&error];
}];

最佳答案

您还必须在某个时候保存主要上下文,例如保存子上下文后。

保存子上下文仅保存到主上下文,保存主上下文则保存到存储文件。

像这样(手机上写的,就会有是语法错误):

// ...
[childContext save:&error];
[mainContext performBlock:^{
[mainContext save:&error];
}];

Swift 2.0 中,这将是:

do {
try childContext.save()
mainContext.performBlock {
do {
try mainContext.save()
} catch let err as NSError {
print("Could not save main context: \(err.localizedDescription)")
}
}
} catch let err as NSError {
print("Could not save private context: \(err.localizedDescription)")
}

关于objective-c - NSPrivateQueueConcurrencyType 未正确保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19328394/

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