在Core Data中访问Transformable属性的原始NSData

3
在我的模型中,我有一个属性transformingString,它将NSString对象存储为NSData,并使用“Transformable”类型。在我的代码中,我有一个NSString作为NSManagedObject中的动态属性,访问该属性会自动调用值转换器以将NSData转换为NSString。
但是,在某些情况下,我希望在我的代码中访问原始NSData,而不调用NSValueTransformer,这样我可以针对一些边缘情况以不同的方式处理NSData。我该怎么办?我认为没有任何方法可以关闭我的Core Data模型中的Transformable类型。我希望有一种方式可以直接访问传递给转换器的原始NSData。
我尝试了[self primitiveValueForKey: @"transformingString"],但这也会调用NSValueTransformer并返回NSString类型。有什么方法可以做到这一点吗?

你的问题中并没有明确为什么要避免使用值转换器,可以解释一下吗? - quellish
长话短说,我在可转换属性中保存了一个特定于UIKit的对象,但现在我需要将其转换为更通用的东西,比如NSString,但仍然在我的代码中显示为UIKit对象(或Mac上的AppKit对象)。我已经想出了一个解决方法,虽然不像直接访问底层NSData那样优雅,但仍然很有用。 - Z S
1个回答

0
如果您希望访问未存储在持久存储中的NSManagedObject上的值,我建议您在NSManagedObject上添加一个类别。在此类别中,声明一个只读属性(以确保不用于其他用途)。在实现中返回原始NSData。

我不确定我理解了。如何使用原始NSData设置此属性?你能举个例子吗?顺便说一下,该值已存储在持久存储中。 - Z S
变压器代码并不是很相关... 我想知道是否可以直接访问可转换属性的NSData,而不是在变压器代码之外。 - Z S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接