use*_*671 1 model core-data objective-c ios
继承人问题......我在应用程序商店中有一个应用程序,它使用核心数据...我一直在更新我的模型(使用版本等)但是最近我不小心丢失了我的最新模型(与之对应的那个)应用商店)所以现在我得到这个错误:reason ="找不到源存储的模型";
我已经创建了我的模型,据我所知,我已经从之前的版本中做出了完全相同的更改...但我仍然无法让它像我的模型版本一样.所以我的问题是,我可以以某种方式欺骗核心数据,使其认为它具有正确的版本吗?或者有没有办法可以检查哪些实体有问题?我知道核心数据存储模型的散列以检查版本是否相同,但我不知道版本模型必须在多大程度上相同才能使"散列检查"成功. .
任何帮助都会很棒!谢谢!
您可以从应用程序的应用程序商店副本中恢复数据模型,然后将其导回到项目中.核心数据模型的编译方式与源代码的编译方式不同,因此反转过程通常是有效的.以下假设您已在Mac上的iTunes中下载了应用程序的当前应用程序商店版本:
首先将应用商店捆绑包复制到安全的地方:
cp ~/Music/iTunes/Mobile\ Applications/YOUR-APP-NAME.ipa /tmp
cd /tmp/
Run Code Online (Sandbox Code Playgroud)
接下来打开那个包,这只是一个zip文件.
unzip YOUR-APP-NAME.ipa
Run Code Online (Sandbox Code Playgroud)
这将创建一个名为Payload包含应用程序及其包的目录.该捆绑包含核心数据模型.从包中复制出来:
cp -rp Payload/YOUR-APP-NAME.app/YOUR-MODEL-NAME.momd /tmp/
Run Code Online (Sandbox Code Playgroud)
(调整名称以匹配您的数据模型).
如果您在应用商店中已有多个版本,则该模型momd包含多个mom文件.每个mom文件对应一个模型版本.其中一个是你需要的.你需要弄清楚哪个是哪个.
现在,切换到Xcode.创建数据模型的新版本,但不要使其成为最新版本.删除此版本中的所有内容,所有实体,所有内容.显示now-empty模型后,进入Editor菜单并选择Import....在文件打开对话框中,/tmp/从上面导航到数据模型的副本.选择需要恢复的版本,然后单击"打开".
该模型版本中的所有实体现在都存在于刚刚创建的新模型文件中.现在,您可以在进行模型迁移时将此模型用作"原始"模型.
或者,您可以使用我的momdec项目来反编译模型,而不是导入Xcode .这将生成一个未编译的Core Data模型,您可以将其添加到Xcode项目中.
如果模型不可恢复,您可以"假装".
| 归档时间: |
|
| 查看次数: |
4743 次 |
| 最近记录: |