【问题标题】:Core Data - Disable loading from cache核心数据 - 禁用从缓存加载
【发布时间】:2015-06-18 20:48:51
【问题描述】:

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

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

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

在 SQLite-File(两者都使用(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 循环中起作用。

谢谢!

【问题讨论】:

    标签: ios objective-c caching core-data watchkit


    【解决方案1】:

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

    objectContext.stalenessInterval = 0.0;
    

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

    【讨论】:

    • 谢谢,解决了。获取之前的[managedObjectContext reset] 也可以。
    • 如果没有 Stackoverflow,世界将会崩溃。也为我工作。
    猜你喜欢
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多