我想在iOS和OSX之间共享一种通用的文档格式。请注意,这不是MDI应用程序;将有一个文件来保存/加载。不需要NSDocument风格的用户驱动管理(例如,保存,另存为,打开等)。
最大的挑战是似乎没有与OSX和IOS自然兼容的通用文档编码格式(尚未)。根据iOS的基于文档的应用程序编程指南,看起来NSDocument和UIDocument派生类之间需要编码/解码转换。我希望有一个通用的序列化机制与Apple生态系统中的所有设备兼容。在这方面,任何想法,想法和提示都会受到赞赏。
我可以在我的mac osx应用程序中使用UIDocument派生类,并且该文档与IOS兼容吗?
答案 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个不同的类,并且每个目标都会从一个公共位置引入类别。