【问题标题】:Does Core Data cache transient attributes?Core Data 是否缓存瞬态属性?
【发布时间】:2010-02-03 15:28:08
【问题描述】:

我有以下场景:

  • 具有用于分段的瞬态属性的实体
  • 定期刷新基于 Web 的数据模型
  • NSFetchedResultsController

一切正常,但是当我进行刷新时,该瞬态属性似乎已经过时了。

该属性由我的实体对象中的访问器返回。我尝试在访问器中设置断点,并注意到当我的应用程序启动和我的 NSFetchedResultsController 时它实际上并没有被调用。这似乎表明 Core Data 正在某个地方缓存这个值(因为我的表仍然是正确的部分)。有没有办法清除这个缓存?

【问题讨论】:

    标签: iphone core-data


    【解决方案1】:

    是的。使用

    + (void)deleteCacheWithName:(NSString *)name;
    

    名字是你在NSFetchedResultsController初始化时提供的名字,调用时

    - (id) initWithFetchRequest:(NSFetchRequest *)fetchRequest managedObjectContext:(NSManagedObjectContext *)context sectionNameKeyPath:(NSString *)sectionNameKeyPath cacheName:(NSString *)name;
    

    设置cacheName 参数。

    或者,您可以避免 Core Data 在 NSFetchedResultsController 初始化期间缓存数据:只需将 nil 传递给 cacheName 参数。

    【讨论】:

    • 这属于 NSFetchedResultsController;操作系统是否在应用程序运行之间缓存这些结果?
    • 来自 NSFetchedResultsController 文档:“缓存在应用程序的启动过程中得到维护”。
    猜你喜欢
    • 2013-01-09
    • 2011-11-13
    • 1970-01-01
    • 2011-11-22
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2012-03-07
    相关资源
    最近更新 更多