核心数据 - 禁用从缓存加载

Core Data - Disable loading from cache

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

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

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

在 SQLite 文件中(由 (App + 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 循环中有效。

谢谢!

我在创建与其包含的应用程序共享核心数据存储的 Action 扩展时遇到了同样的问题。我遇到的对我有用的解决方案是在扩展中的主队列 NSManagedObjectContext 上设置 stalenessInterval,如下所示:

objectContext.stalenessInterval = 0.0;

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