我可以在Mac OSX应用程序中使用UIDocument吗?

时间:2011-11-30 10:50:24

标签: ios cocoa-touch macos cocoa osx-lion

我想在iOS和OSX之间共享一种通用的文档格式。请注意,这不是MDI应用程序;将有一个文件来保存/加载。不需要NSDocument风格的用户驱动管理(例如,保存,另存为,打开等)。

最大的挑战是似乎没有与OSX和IOS自然兼容的通用文档编码格式(尚未)。根据iOS的基于文档的应用程序编程指南,看起来NSDocument和UIDocument派生类之间需要编码/解码转换。我希望有一个通用的序列化机制与Apple生态系统中的所有设备兼容。在这方面,任何想法,想法和提示都会受到赞赏。

我可以在我的mac osx应用程序中使用UIDocument派生类,并且该文档与IOS兼容吗?

2 个答案:

答案 0 :(得分:5)

不,你不能在Cocoa应用程序中使用或子类化UIDocument,因为Cocoa中不存在UIDocument。

在NSDocument和UIDocument中,您确定要使用的格式。因此,只需将它们实现为输出和输入使用相同的格式。

在为iOS构建Mac和UIDocument时,使用预处理器设置实现NSDocument子类的文件对并不会太难。这样可以防止序列化和反序列化实现不匹配,因为每个版本只有一个副本,并且在两个平台上都使用它。

答案 1 :(得分:1)

彼得的答案是正确的,但我有一个建议,不涉及C预处理器(在Swift中不可用),它更像Cocoa。

观看WWDC 2014会话233,将单个项目中的iOS和Mac应用程序设置为单独的目标,然后在文档类上使用类别来实现常用功能:

CommonFunctions.h    

@interface AppDocument (CommonFunctions)
- (void)function;
@end

-

CommonFunctions.m

@implementation AppDocument (CommonFunctions)

- (void) function {
      /// stuff here
}

@end

对于每个平台/目标,您的AppDocument类将根据需要从UI / NSDocument继承2个不同的类,并且每个目标都会从一个公共位置引入类别。