Ios NSFetchedResultController缓存结果获胜';不要消失

Ios NSFetchedResultController缓存结果获胜';不要消失,ios,swift,azure,Ios,Swift,Azure,我有一个NSFetchedResultsController,它取自一个azure示例。它工作正常,可以正确地从数据库中获取数据,但是如果我退出应用程序,并从数据库中删除记录,它们仍然会显示在我的应用程序中,并且在不重新安装应用程序的情况下无法使它们消失。有人知道这是什么原因吗?我没有缓存集,我尝试设置一个缓存集并在启动时将其删除,但没有成功。以下是fetchedResultController的代码 lazy var fetchedResultController: NSFetchedResu

我有一个NSFetchedResultsController,它取自一个azure示例。它工作正常,可以正确地从数据库中获取数据,但是如果我退出应用程序,并从数据库中删除记录,它们仍然会显示在我的应用程序中,并且在不重新安装应用程序的情况下无法使它们消失。有人知道这是什么原因吗?我没有缓存集,我尝试设置一个缓存集并在启动时将其删除,但没有成功。以下是fetchedResultController的代码

lazy var fetchedResultController: NSFetchedResultsController<NSFetchRequestResult> = {
    let fetchRequest:NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: "Events")
    let managedObjectContext = (UIApplication.shared.delegate as! AppDelegate).managedObjectContext!

    fetchRequest.predicate = NSPredicate(format: "completed != true")
    //fetchRequest.predicate = NSPredicate(format: "text != ''")

    fetchRequest.sortDescriptors = [NSSortDescriptor(key: "createdAt", ascending: true)]

    let resultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)

    resultsController.delegate = self;

    return resultsController
}()
惰性变量fetchedResultController:NSFetchedResultsController={
let fetchRequest:NSFetchRequest=NSFetchRequest(entityName:“事件”)
让managedObjectContext=(UIApplication.shared.delegate为!AppDelegate)。managedObjectContext!
fetchRequest.predicate=NSPredicate(格式:“已完成!=true”)
//fetchRequest.predicate=NSPredicate(格式:“text!=”)
fetchRequest.sortDescriptors=[NSSortDescriptor(键:“createdAt”,升序:true)]
让resultsController=NSFetchedResultsController(fetchRequest:fetchRequest,managedObjectContext:managedObjectContext,sectionNameKeyPath:nil,cacheName:nil)
resultsController.delegate=self;
返回结果控制器
}()

从您显示的配置中,我完全可以看出它没有连接到
NSFetchedResultsController的缓存。因为您没有在构造函数方法中设置缓存名称

来自苹果的文档

初始化NSFetchedResultsController实例时 通常指定缓存名称。(如果未指定缓存名称, 控制器不缓存数据。)


可能是因为数据库没有正确地从服务器获取更新。

修复了它。问题在于MSSyncTable。现在,我每次刷新时都对表执行强制清除,这样可以保持值的正确性

self.table?.forcePurge(completion: nil)

但这些记录肯定存储在设备上,因为在没有互联网连接的情况下启动应用程序时,我仍然可以访问我以前看到的记录。我还尝试将nil传递给删除缓存的函数,但没有区别。