Iphone CoreData:是否可以合并.xcdatamodel“;文件;?

Iphone CoreData:是否可以合并.xcdatamodel“;文件;?,iphone,core-data,Iphone,Core Data,我知道.xcdatamodel实际上是一个包含两个文件的目录(元素和布局) 我知道这两个文件是二进制plist,可以使用plutil-convert xml1将它们转换为XML plist(但依赖于此可能是“不明智的”,这对于开发来说非常好:我希望构建工具在将它们放到设备上时会编译/优化/任何东西,并且假设Xcode不会失去读取旧文件的能力,我总是可以将它们转换回binary1) 我的两个问题: 如果您移动了一个实体(我本以为这只会改变布局),那么Xcode会修改这两个文件,这对多个开发人员完

我知道.xcdatamodel实际上是一个包含两个文件的目录(
元素
布局

我知道这两个文件是二进制plist,可以使用
plutil-convert xml1
将它们转换为XML plist(但依赖于此可能是“不明智的”,这对于开发来说非常好:我希望构建工具在将它们放到设备上时会编译/优化/任何东西,并且假设Xcode不会失去读取旧文件的能力,我总是可以将它们转换回
binary1

我的两个问题:

  • 如果您移动了一个实体(我本以为这只会改变
    布局
    ),那么Xcode会修改这两个文件,这对多个开发人员完全没有帮助
  • 似乎没有简单的方法来合并更改(即使XML plist格式是NSKeyedArchiver序列化的对象图,因此文本合并也不起作用)
  • 似乎没有简单的方法来查看发生了什么变化(也许我可以将它们都转换为XML并进行区分)
有人找到了解决这些问题的方法吗?我可以强制Xcode另存为XML plists,还是强制Subversion在提交时将其转换为XML plists?这种差别甚至是模糊的合理吗?是否有执行.xcdatamodel差异的外部工具


编辑:基于SCM的锁定并不能真正解决问题,就像说“我要编辑X”;危险在于,有人忘记锁定、进行更改、更新,然后一切都会中断。
svn:needs lock
属性应该可以工作,但不幸的是,Xcode不尊重
元素
布局
上的
chmod-w
(一个不可写的.xcdatamodel也不工作,即使Xcode显示锁图标,svn也会另外失败)。

我认为这是不可能的。几年前,在跟踪一个损坏的文件时,我注意到模型文件似乎为了一些小的逻辑更改而改变了大量的文本结构。它看起来不像是代码,而是数据结构被奇怪地移动。这可能是序列化没有固定顺序的嵌套NSSET的结果


我认为最好的办法是锁定数据模型,一次只允许一次签出。坦率地说,如果以一种老式的方式合并任何XML文件,我会非常紧张

Git甚至Mercurial可能会比SVN更容易


另外,我最近看了,听说在Xcode 4.2中,
.xcdatamodel
文件是可扩散的。无论这些差异是否合理,我还没有测试过。比方说,我猜打开三个Xcode GUI数据模型编辑器,通过查看另外两个,从头开始重建合并的数据模型会更容易。

NSSET可能以哈希表顺序保存。可以使其模糊一致(使用更好的散列并将高阶位用作哈希表索引),但遗憾的是,使用bad-hash-mod-a-large-prime要常见得多。它也不适用于集合的集合……不要把它当作福音,这只是我记忆中的猜测。我怀疑Git是否知道如何从NSKeyedArchiver(我认为是.xcdatamodel)合并二进制blob。