【问题标题】:NSFetchedResultsController won't respond updates to binary attributeNSFetchedResultsController 不会响应二进制属性的更新
【发布时间】:2011-12-13 06:44:17
【问题描述】:

我有一个 NSFetchedResultsController 从上下文中获取 User 实体。一切正常; User 对象的更改被 fetchedResultsController 识别,tableView 相应地更新。

但是,每个 User 实体都有一个二进制数据 (NSData) picture 属性。每当我更改Userpicture 时,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


【解决方案1】:

默认情况下,NSFetchRequest 返回NSArray,而不是NSMutableArray。确保您的数组类型为 NSMutableArray,然后将下面的行用于您的 fetchRequest。

NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];

可以在here找到更多信息。

【讨论】:

  • 这实际上并没有回答我的问题。也许我的问题不清楚。我在问为什么fetchedResultsController 不接受对 NSData 字段的更改,它不应该与NSArrayNSMutableArrayexecuteFetchRequest: 有任何关系。
猜你喜欢
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多