0

首先,我将介绍一下我正在做的事情的背景。我正在创建一个从我们创建的 API 获取信息的 CRUD iOS 应用程序。一旦我拉下数据,我将它与 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 调用。

4

0 回答 0