gpt4 book ai didi

ios - 使用 Magical Record 导入的记录不会立即显示在 tableView 中

转载 作者:行者123 更新时间:2023-11-29 10:49:45 29 4
gpt4 key购买 nike

我的应用程序从第 3 方数据库(使用 AFNetworking)下载 XML 文件,然后使用 NSXMLParser 提取我需要的信息,“随时随地”创建带有子节点的记录。我正在使用 MagicalRecord 与 CoreData 通信。下载和解析部分工作正常,但在我完成后,并非所有条目都在我的表中可见,我猜测当我刷新 tableView 时 MR 尚未完成。如果我离开 tableView 并返回,则会显示所有记录。

我正在使用 dispatch_group 来确保在所有下载和导入任务完成之前不会更新 UI。使用 NSLog 我已经确认 dispatch_group_notify block 中的代码确实在所有下载和解析完成后执行。

关于如何修复代码以便所有记录立即显示在表中的任何建议?

这是一些代码:

-(void) importRecords
{
dispatch_group_t dispatchGroup = dispatch_group_create();

for (NSString *s in self.newRecords)
{
dispatch_group_enter(dispatchGroup);

NSData *data = [self downloadDataforRecord: s]; // using AFNetworking
if (data)
[self importData: data];

dispatch_group_leave(dispatchGroup);
}

dispatch_group_notify(dispatchGroup, dispatch_get_main_queue(), ^{
// done with all the downloading and parsing
// now update the UI

self.records = [NSMutableArray arrayWithArray: [Record MR_findAllSortedBy: @"id" ascending: ascending]];

[self.tableView reloadData];
});
}


- (void) importData:(NSData *) data
{
[MagicalRecord saveWithBlock: ^(NSManagedObjectContext *localContext) {
Root *rootObject = [[Root alloc] init];
rootObject.context = localContext;

NSXMLParser *parser = [[NSXMLParser alloc] initWithData: data];

parser.delegate = rootObject;
[parser setShouldProcessNamespaces: YES];
[parser parse];

// during the parse, records and subnodes are created using:
// [Record MR_createInContext: context];
// where context is the same as in the rootObject above
}
completion: ^(BOOL success, NSError *error) {
if (error)
{
// show error alert
}
else if (success)
{
}
}];

}

最佳答案

为什么你不能像下面这样使用你的完成处理器

completion: ^(BOOL success, NSError *error) {
if (error)
{
// show error alert
}
else if (success)
{
self.records = [NSMutableArray arrayWithArray: [Record MR_findAllSortedBy: @"id" ascending: ascending]];
[[NSOperationQueue mainQueue] addOperationBlock:^{
[self.tableView reloadData];
}];
}
}];

而且您不需要实现 dispatch_group_t。

关于ios - 使用 Magical Record 导入的记录不会立即显示在 tableView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20973603/

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