1

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

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

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

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

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

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

4

2 回答 2

0

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

于 2011-04-01T09:54:34.700 回答
0

Ken Ferry(来自 Cocoa 框架团队的 Apple 工程师)

密钥存档容器格式是可互换的,但是特定存档是否可互换取决于其中的内容。显然,如果一个类只存在于 iOS 和 Mac OS X 之一上,那就是个问题。对于两个操作系统上存在的任意单个类,很难说得太具体。人们可能已经利用新操作系统放弃了某些方面的兼容性。

如果您的键控存档仅包含 Foundation 类,那么我们的意图是它们应该在 iOS 和 Mac OS X 之间以及在 Mac OS X 版本之间一样可互换。不过,我认为我们没有特定的测试来确保它可以正常工作,所以,好吧,如果它不适合某些东西,请提交错误。

NSBezierPath不过是 AppKit,所以你必须退回到逆向工程。这可能不是太难,因为UIBezierPath并且NSBezierPath可能两者都依赖于 CGPath,但这只是一个猜测。

于 2011-03-28T09:44:28.920 回答