我正在使用CoreData开发WatchKit扩展。

CoreData StoreURL与iOS App中的相同。
在iOS应用程序中,它的工作像预期的那样。

  • 我在模拟器中启动Watch-App。
  • 我在iOS应用程序中更改了一些数据。
  • Watch-App仍在加载旧数据。

  • 在SQLite-File(两个(应用程序+ WK-Extension)都使用)中,有新数据。
    因此,似乎WatchKit-Extension中的CoreData正在从缓存中获取数据。

    如何禁用缓存或强制加载新数据?

    这就是我获取数据的方式:
    - (NSArray*)fetchAllActive:(NSError**)error
    {
        NSFetchRequest* fetchRequest = [super fetchRequestForTemplate:@"AllActiveReminder" substitutionVariables:nil];
        NSArray* result = [super fetchWithRequest:fetchRequest error:error];
        return result;
    }
    

    调用[managedObjectContext refreshObject: mergeChanges:]仅在WKTable的for循环中有效。

    谢谢!

    最佳答案

    创建与包含应用程序的Core Data存储共享一个Action扩展时遇到了相同的问题。我遇到的对我有用的解决方案是在扩展内部按如下所示在主队列NSManagedObjectContext上设置stalenessInterval:

    objectContext.stalenessInterval = 0.0;
    

    这告诉扩展中的上下文每次获取新数据并忽略缓存。

    09-25 17:54
    查看更多