我知道.xcdatamodel实际上是一个包含两个文件的目录(elements
和layout
)。
我知道这两个文件是二进制plist,并且可以将它们转换为带有plutil -convert xml1
的XML plists(虽然依赖于它可能是“不明智的”,它对于开发来说非常好:我希望构建工具可以编译/ optimize /无论何时将它们放在设备上,并假设Xcode不会失去读取旧文件的能力,我总是可以将它们转换回binary1
)。
我的两个问题:
layout
),这对多个开发人员来说完全无益。有没有人找到任何解决方案?我可以强制Xcode保存为XML plist,还是强制Subversion在提交时将它们转换为XML plist?差异甚至是模糊不清的吗?是否有执行.xcdatamodel diff的外部工具?
编辑:基于SCM的锁定并不能解决问题,只是说“我即将编辑X”;危险在于有人忘记锁定,进行更改,更新,一切都会中断。 svn:needs-lock
属性应该有效,但遗憾的是Xcode不尊重chmod -w
或elements
上的layout
(不可写的.xcdatamodel也不起作用,即使Xcode显示锁定图标,svn另外失败)。
答案 0 :(得分:0)
我不认为这是可能的。在几年前追踪损坏的文件时,我注意到模型文件似乎改变了过多的文本结构,以便进行微小的逻辑更改。它似乎不像代码,而是数据结构奇怪地移动。这可能是序列化没有固定顺序的嵌套NSSets的结果。
我认为最好的办法是锁定数据模型,一次只允许一次检出。坦率地说,我会非常担心以旧学校的方式合并任何XML文件。
答案 1 :(得分:0)
Git甚至Mercurial可能会比SVN更容易。
另外,我最近观看了WWDC 2011 Session Video,What's New in Core Data on iOS并听说在Xcode 4.2中,.xcdatamodel
文件是可扩展的。这些差异是否含糊不清,我还没有测试过。我们只是说我猜测打开三个Xcode GUI数据模型编辑器并通过查看其他两个来从头开始重建合并数据模型更容易。