gpt4 book ai didi

iphone - 核心数据 : Is it possible to merge . xcdatamodel "files"?

转载 作者:行者123 更新时间:2023-12-03 20:16:38 25 4
gpt4 key购买 nike

我知道 .xcdatamodel 实际上是一个包含两个文件的目录( elementslayout )。

我知道这两个文件是二进制 plist,并且可以使用 plutil -convert xml1 将它们转换为 XML plist。 (虽然依赖于此可能是“不明智的”,但它对于开发来说是完全可以的:我希望构建工具在将它们放在设备上时能够编译/优化/无论什么,并且假设 Xcode 不会失去读取旧文件的能力,我始终可以将它们转换回 binary1 )。

我的两个问题:

  • 如果您移动一个实体,Xcode 就会修改两个文件(我本以为只是更改 layout ),这对于多个开发人员来说完全没有帮助。
  • 似乎没有简单的方法来合并更改(即使 XML plist 格式是 NSKeyedArchiver 序列化对象图,因此文本合并也不起作用)。
  • 似乎没有简单的方法来查看发生了什么变化(也许我可以将它们都转换为 XML 并进行比较......呃)。

有没有人找到解决这些问题的方法?我可以强制 Xcode 将其另存为 XML plist,或者强制 Subversion 在提交时将其转换为 XML plist吗?这种差异甚至是模糊的吗?是否有执行 .xcdatamodel diff 的外部工具?

编辑: 基于 SCM 的锁定并不能真正解决问题,只不过是说“我要编辑 X”;危险在于有人忘记锁定、进行更改、更新,然后一切都崩溃了。 svn:needs-lock属性应该可以工作,但不幸的是 Xcode 不尊重 chmod -welementslayout (不可写的 .xcdatamodel 也不起作用,即使 Xcode 显示锁定图标,并且 svn 也会失败)。

最佳答案

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

我认为最好的选择是锁定数据模型并且一次只允许一项检查。坦率地说,我对于以老式方式合并任何 XML 文件会感到非常紧张。

关于iphone - 核心数据 : Is it possible to merge . xcdatamodel "files"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3653889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com