用于核心数据中 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的主要内容,如果未能解决你的问题,请参考以下文章

目标 C:在非结构或联合的情况下请求成员 XXX。 (核心数据)

后台开发 -- 核心技术与应用实践

C++核心准则C.1:组织相关数据形成结构体或者类

RDKit 安装教程

C零基础视频-32-指针铺垫知识:计算机分级结构

JSTL标签库