在 Mac OS X 和 iOS 的 Core Data 中存储贝塞尔路径

Posted

技术标签:

【中文标题】在 Mac OS X 和 iOS 的 Core Data 中存储贝塞尔路径【英文标题】:Storing bezier paths in Core Data for Mac OS X and iOS 【发布时间】:2011-07-24 07:55:18 【问题描述】:

我正在开发一个预加载 CoreData 内容的 ios 应用程序。

我正在尝试为 Mac OS X 命令行创建一个导入器应用程序,它使用相同的 xcdatamodel 并导入我可以随实际应用程序提供的初始数据。

到目前为止,一切都很好。

但是,模型中的一个字段是可转换的,我想在其中存储贝塞尔路径。不幸的是,Mac OS X 使用 NSBezierPath 而 iOS 使用 UIBezierPath 来存储贝塞尔路径。

有没有办法在我的 OS X 项目中使用来自 iOS Simulator 平台的二进制 UIBezierPath 类(及其头文件)? 我不想将我的项目转换为在模拟器中运行,因为我希望能够从命令行运行它并传递参数。 应该有办法让这项工作,不是吗?因为模拟器平台是为 Mac 的架构编译的,从未使用过任何 GUI 组件。

我也在寻找其他(创造性的?)方法来解决这个问题......也许是自定义 NSValueTransformer,或者 UIBezierPath 的 NSCoding 适配的逆向工程? 也许我只是太狭隘了,太专注于本质上会被证明是徒劳的尝试。如果您认为是这种情况,请随时在您的回答中指出这一点……

【问题讨论】:

去苹果文档...希望如此,阅读文档后一切都会清楚......! 【参考方案1】:

库 CKBezierPath 模拟 iOS 的 NSBezierPath。没有测试过,但试试看。 ;-)

【讨论】:

【参考方案2】:

Ken Ferry (Apple engineer from the Cocoa frameworks team):

键控存档容器格式为 可互换,但无论是 特定档案是可互换的 取决于里面有什么。显然如果 一个类只存在于一个 iOS 上 和 Mac OS X,这是一个问题。为了 存在任意单个类 在两个操作系统上,很难说 太具体了。人们可能 已利用新操作系统 放弃某些方面的兼容性。

如果您的密钥存档包含 专门的基础课程,它是 我们的意图是它们应该是 可在 iOS 和 Mac OS 之间互换 X 在 Mac OS X 版本之间。我 不要认为我们有具体的测试 确保它有效,所以,好吧, 如果它不适合某事,请提交一份 错误。

NSBezierPath 虽然是 AppKit,所以你必须退回到逆向工程。这可能不会太难,因为UIBezierPathNSBezierPath 可能都依赖于CGPath,但这只是一个猜测。

【讨论】:

以上是关于在 Mac OS X 和 iOS 的 Core Data 中存储贝塞尔路径的主要内容,如果未能解决你的问题,请参考以下文章

Core Data Mac OS X 基于文档的应用程序中的 NSArrayController 类与实体模式

如何在 MAC OS X 中获得最大 TCP 接收/发送窗口?

mac OS与iOS的系统调用

mac OS与iOS的系统调用

mac OS与iOS的系统调用

详解OS X和iOS图像处理框架Core Image