【发布时间】:2011-12-13 06:44:17
【问题描述】:
我有一个 NSFetchedResultsController 从上下文中获取 User 实体。一切正常; User 对象的更改被 fetchedResultsController 识别,tableView 相应地更新。
但是,每个 User 实体都有一个二进制数据 (NSData) picture 属性。每当我更改User 的picture 时,fetchedResultsController 不会接受任何更改。
user.picture = UIImagePNGRepresentation([UIImage imageNamed:@"picture.png"]);
我希望 controllerDidChangeContent: 在更改 picture 时被调用,但没有触发任何内容。
编辑:我忘了提到我在异步调用的成功块中设置了picture。我不确定这是否会有所不同。
有什么想法吗?
【问题讨论】:
-
图片属性在底层模型中是如何表示的?它是持久属性还是瞬态属性?它是声明为二进制类型还是其他类型?您如何更改值 - 您是否使用正常的核心数据语义来确保您的更改触发正确的核心数据设置器?
-
如果指定 Transformable 而不是 Binary Data 会发生什么?您可以在 Apple Xcode 参考:核心数据编程指南中了解如何使用 Transformable。
-
@tim 图片属性存储为持久二进制数据。设置图片,我打电话给
[self setPicture:image]。 @matt Transformable 也不适用于我,但它确实允许我将 UIImage 存储在核心数据中而不是二进制数据中。我可以在User对象上扩展didChangeValueForKey:并调用委托方法,也许这样就可以了。
标签: objective-c nsfetchedresultscontroller binary-data nsmanagedobjectcontext