首先,我将介绍一下我正在做的工作。我正在创建一个CRUD iOS应用程序,它从我们创建的API中获取信息。一旦我下载了数据,我就将其存储在CoreData中。然后我使用NSFetchedResultsController在表视图中显示此数据。问题是,当我在表视图顶部显示模态视图然后关闭模态视图时,表格被清除,并且重新下载数据并再次插入数据的所有内容都不起作用。
当我从API中提取新数据时,问题就出现了。使用试验和错误我已经将问题缩小到我删除持久存储中的所有旧数据的位置(我有两个存储,一个用于用户创建的数据,一个用于来自其他用户的数据)。此代码段来自我处理数据的API调用:
[self deleteAllEntitiesNamed:@"Object"];
[self parseResponseObjectIntoManagedObjects:[response results] inStoreWithURL:storeURL];
success(response);
[self deleteAllEntitiesNamed:@"Object"];
调用进入商店以供其他用户使用以下代码删除所有Object实体:
NSArray *result = [self performFetchRequestForEntityNamed:entity inStoreWithURL:url];
for(id r in result)
{
[self.managedObjectContext deleteObject:r];
}
我已将问题追溯到此函数调用。如果我在API处理程序中注释掉删除调用,那么在视图之间维护表是没有问题的,尽管它具有复制商店中已有的大量数据的不良副作用。我觉得我可能会遗漏一些关于删除商店中的商品的事情,虽然这对我没有意义,因为我在删除旧商店后立即重新插入数据。
我尝试删除并重新初始化整个商店,但根本没有数据加载。
提前感谢您提供任何见解。
编辑:我还应该补充一点,当我在回到表视图后尝试从商店中提取对象时,我使用相同的获取请求获得一个空结果,该请求成功地将对象从商店中取出后立即执行我在成功回调中完成了API调用。