用于核心数据中 C 结构的 NSValueTransformer
Posted
技术标签:
【中文标题】用于核心数据中 C 结构的 NSValueTransformer【英文标题】:NSValueTransformer for C structs in Core Data 【发布时间】:2012-07-10 17:12:54 【问题描述】:如何为 C 结构创建 NSValueTransformer
,例如 Core Data 中的 CGRect
?
显然transformedValue
& reverseTransformedValue
需要和id
。有没有办法通过void*
,或者更好的方法来做到这一点?
【问题讨论】:
你试过NSValue
吗?
【参考方案1】:
使用 NSValue 包装 C 指针。
[NSValue valueWithPointer:&struct]
专门针对CGRect,可以使用
[NSValue valueWithCGRect:rect]
在 UIKit/UIGeometry.h 中声明
【讨论】:
不幸的是,这似乎不适用于CATransform3D
(确实可以被NSValue
装箱):-[NSKeyedArchiver encodeValueOfObjCType:at:]: this archiver cannot encode structs
。有什么建议吗?
我什至写了一个 NSValueTransformer
子类来将 CATransform3D
转换为 NSString
并返回并将其设置为转换器类,但结果相同......以上是关于用于核心数据中 C 结构的 NSValueTransformer的主要内容,如果未能解决你的问题,请参考以下文章