在 Mac OS X 和 iOS 的 Core Data 中存储贝塞尔曲线路径
我正在开发一个预装 CoreData 内容的 iOS 应用程序。
我正在尝试为 Mac OS X 命令行创建一个导入器应用程序,它使用相同的 xcdatamodel 并导入我可以随实际应用程序一起提供的初始数据。
到目前为止,一切都很好。
然而,模型中的一个字段是一个可转换字段,我想在其中存储贝塞尔曲线路径。不幸的是,Mac OS X 使用 NSBezierPath,而 iOS 使用 UIBezierPath 来存储贝塞尔曲线路径。
有没有办法在我的 OS X 项目中使用来自 iOS Simulator 平台的二进制 UIBezierPath 类(及其头文件)?
我不想将我的项目转换为在模拟器中运行,因为我希望能够从命令行运行它并传递参数。
应该有一种方法可以让这项工作发挥作用,不是吗?因为模拟器平台是针对Mac架构编译的,并且从未使用过GUI组件。
我也在寻找其他(创意?)方法来解决这个问题......也许是自定义 NSValueTransformer,或者 UIBezierPath 的 NSCoding 适应的逆向工程?
也许我的心胸太狭隘了,过于专注于最终会被证明是徒劳的尝试。如果您认为情况确实如此,请随时在您的回答中指出这一点......
I am developing an iOS application that comes pre-loaded with CoreData content.
I am trying to create an importer app for the Mac OS X command-line which uses the same xcdatamodel and imports the initial data that I can ship with the actual app.
So far, so good.
One of the fields in the model, however, is a transformable in which I want to store a Bezier path. Unfortunately, Mac OS X uses NSBezierPath while iOS uses UIBezierPath to store bezier paths.
Is there any way of using the binary UIBezierPath class (and its header file) from the iOS Simulator platform in my OS X project?
I don’t want to convert my project to run in the simulator because I want to be able to run it from the command-line and pass arguments.
There should be a way to make this work, shouldn’t there? Because the simulator platform is compiled for the Mac’s architecture and no GUI components are ever used.
I am also looking for other (creative?) ways to solve this problem… A custom NSValueTransformer, perhaps, or a reverse-engineering of UIBezierPath’s NSCoding adaptation?
Maybe I am just too narrow-minded, too focused on what will essentially turn out to be a futile attempt. Please feel free to point this out in your answer if you think it’s the case…
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
库 CKBezierPath 模拟 iOS 的 NSBezierPath。未测试,但尝试一下。 ;-)
The library CKBezierPath emulates the NSBezierPath for iOS. Not tested, but give it a try. ;-)
Ken Ferry(Cocoa 框架团队的 Apple 工程师) :
NSBezierPath 是 AppKit,所以你必须退回到逆向工程。这可能不会太困难,因为
UIBezierPath
和NSBezierPath
可能都依赖于 CGPath,但这只是猜测。Ken Ferry (Apple engineer from the Cocoa frameworks team):
NSBezierPath
is AppKit though, so you have to fall back to reverse engeneering. It might not be too difficult becauseUIBezierPath
andNSBezierPath
probably both depend on CGPath, but that's only a guess.