iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 核心数据:为什么必须调用重新加载数据才能使我的应用程序正常工作?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我整晚都在调试一个简单的应用程序.该应用程序从Web检索一个图像(是一个…以使我的生活更轻松),并在表格视图中显示它.我这样做是为了学习核心数据.在我修复它之前,错误消息显示如下:

基本上它是说FRC委托方法出了问题.一方面,节号从0变为1.另一方面,“0插入,0删除”.那么节号如何增加呢?这应该不会发生..因此错误.

我通过简单地将[self.tableView reloadData]添加到我的FRC设置方法来修复错误.我从post获得灵感,但我不太明白.答案似乎过于复杂和具体项目.有人可以解释为什么添加reloadData可以修复bug吗?答案可能很简单,我希望如此.

我的应用程序的关键组件,如果重要:

>使用UIManagedDocument建立核心数据堆栈
>创建一个帮助方法,从Flickr API下载图像
>在NsmanagedObject子类文件中,尝试从持久存储中获取图像.如果还没有,请将其插入MOC.

- (void)setupFetchedResultsController
{
    NSFetchrequest *fetchrequest = [[NSFetchrequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"BigImage" inManagedObjectContext:self.document.managedObjectContext];
    [fetchrequest setEntity:entity];

    NSSortDescriptor *imageDescriptor = [[NSSortDescriptor alloc] initWithKey:@"image" ascending:YES];
    NSArray *sortDescriptors = [NSArray arrayWithObject: imageDescriptor];
    [fetchrequest setSortDescriptors:sortDescriptors];

    [fetchrequest setFetchBatchSize:20];

    // Create fetch results controller
    self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchrequest:fetchrequest managedObjectContext:self.document.managedObjectContext sectionNameKeyPath:nil cachename:@"Root"];

    self.fetchedResultsController.delegate = self;

    NSError *error;
    if (![self.fetchedResultsController performFetch:&error])
    {
        NSLog(@"Error in performFetch: %@,%@",error,[error userInfo]);
    }

    // Critical!! I add this line to fix the bug!
        [self.tableView reloadData];
    }
@H_696_21@解决方法
获取的结果控制器仅跟踪第一次提取后对托管对象内容的更改.然后使用委托方法didChangeSection,didChangeObject等将这些更改传播到表视图.

但是没有自动机制将初始提取的结果发送到表视图.这就是你必须在performFetch之后调用reloadData的原因.

但是,有一种情况似乎会自动发挥作用. UITableViewController在viewWillAppear中调用reloadData(如果第一次加载表).因此,如果您在viewDidLoad中设置FRC,则会在viewWillAppear中调用reloadData,而您不必手动调用它.

大佬总结

以上是大佬教程为你收集整理的ios – 核心数据:为什么必须调用重新加载数据才能使我的应用程序正常工作?全部内容,希望文章能够帮你解决ios – 核心数据:为什么必须调用重新加载数据才能使我的应用程序正常工作?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。