将iOS / Mac应用与dame数据模型同步?

时间:2015-01-10 19:03:16

标签: ios macos core-data synchronization

我创建了一个使用核心数据的iOS应用程序,基本上是todo列表。

我想创建一个OS X应用程序,它还会显示待办事项列表并与iOS设备同步。我对iCloud atm不感兴趣(同步会使用蓝牙/内部网络)虽然如果以后可以启用它会很好。

我目前对OS X开发一无所知,但我发现我可以使用基于文档的应用和核心数据。但我必须复制iOS应用程序的xcdatamodel。有没有办法分享数据模型?我是否可能必须使用与核心数据不同的东西?我不想要保留2个完整的副本......我也不想使用3D派对库(尽管欢迎提供建议作为评论)。可能这可以通过脚本来解决,但我想知道是否有更好的方法。

1 个答案:

答案 0 :(得分:0)

所以问题是如何避免复制你的xcdatamodel并在你的iOS或OS X XCode项目/工作区中只有一个版本化的xcdatamodel并与另一个共享??

每当模型发生变化时,您都可以使用momc工具将“xcdatamodel”文件编译为“momd”文件。 iOS / OS X App仅在运行时加载“momd”文件。编译步骤如下所示:

/Applications/Xcode.app/Contents/Developer/usr/bin/momc <your project folder>/MyApplication/MyApplication/MyApplication.xcdatamodeld/MyApplication.xcdatamodel <your destination folder>/my.momd

现在在应用程序的XCode项目中添加“my.momd”作为新的包资源,没有自己的模型。选择目标设置转到“构建阶段”转到“复制捆绑资源”并添加“my.momd”。

您需要相应地更改代码:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"my" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

当然“.xcdatamodeld”文件夹可以从应用程序项目中删除,没有自己的模型。