gpt4 book ai didi

ios - 重命名 coredata .xcdatamodeld 文件和迁移

转载 作者:技术小花猫 更新时间:2023-10-29 10:26:17 35 4
gpt4 key购买 nike

我们有 2 个独立的应用程序,我们已将它们合并到同一工作区中的 2 个目标。两者都有自己的核心数据模型(app1.xcdatamodeldapp2.xcdatamodeld)。

现在两者都在同一个工作区中,因此不需要 2 个模型,因为它们 99% 相似。所以我想把.xcdatamodeld包的名字改成allApps.xcdatamodeld。我能够重命名它,但在这样做时我没有找到任何关于迁移行为的引用。

这是错误-

2015-07-28 09:04:06.079 AppName[51306:1423128] CoreData: error:
-addPersistentStoreWithType:SQLite configuration:(null) URL:file:///Users/shani/Library/Developer/CoreSimulator/Devices/EA75A69F-B108-4036-AB3D-B923F83D16DE/data/Containers/Data/Application/B1CB3AF3-DEF4-40DF-9A61-721063ECBB1D/Documents/AppName.sqlite
options:{
NSInferMappingModelAutomaticallyOption = 1;
NSMigratePersistentStoresAutomaticallyOption = 1;
NSSQLitePragmasOption = {
"journal_mode" = WAL;
}; } ... returned error Error Domain=NSCocoaErrorDomain Code=134130 "The operation couldn’t be completed. (Cocoa error
134130.)" UserInfo=0x7fc39c194360 {URL=file:///Users/shani/Library/Developer/CoreSimulator/Devices/EA75A69F-B108-4036-AB3D-B923F83D16DE/data/Containers/Data/Application/B1CB3AF3-DEF4-40DF-9A61-721063ECBB1D/Documents/AppName.sqlite,
metadata={
NSPersistenceFrameworkVersion = 519;
NSStoreModelVersionHashes = {
Attempt = <b4d1e878 69a97917 e751a67c 89e1887a ae4df1dc f380e4ee c9585f60 f39ff51e>;
BookmarkFlashcard = <33112f7c 2fa20bec eb2e019c b5d619b4 92be2547 a65fabee 1ac86ab7 92dd77bb>;
BookmarkQuestion = <38634b49 71f0d43c 6f9fbba9 bc2f1b81 675c9b3c f2da017e fc8de9d8 4e18a4a0>;
Category = <b0e4d91b 0c0ebc71 ed0f403c 9a0eec20 fc1686aa 0169bc60 4bcc7e57 165bce15>;
};
NSStoreModelVersionHashesVersion = 3;
NSStoreModelVersionIdentifiers = (
""
);
NSStoreType = SQLite;
NSStoreUUID = "F1B37CD0-8B89-4893-A262-1013C3544026";
"_NSAutoVacuumLevel" = 2; }, reason=Can't find model for source store} with userInfo dictionary {
URL = "file:///Users/shani/Library/Developer/CoreSimulator/Devices/EA75A69F-B108-4036-AB3D-B923F83D16DE/data/Containers/Data/Application/B1CB3AF3-DEF4-40DF-9A61-721063ECBB1D/Documents/AppName.sqlite";
metadata = {
NSPersistenceFrameworkVersion = 519;
NSStoreModelVersionHashes = {
Attempt = <b4d1e878 69a97917 e751a67c 89e1887a ae4df1dc f380e4ee c9585f60 f39ff51e>;
BookmarkFlashcard = <33112f7c 2fa20bec eb2e019c b5d619b4 92be2547 a65fabee 1ac86ab7 92dd77bb>;
BookmarkQuestion = <38634b49 71f0d43c 6f9fbba9 bc2f1b81 675c9b3c f2da017e fc8de9d8 4e18a4a0>;
Category = <b0e4d91b 0c0ebc71 ed0f403c 9a0eec20 fc1686aa 0169bc60 4bcc7e57 165bce15>;
};
NSStoreModelVersionHashesVersion = 3;
NSStoreModelVersionIdentifiers = (
""
);
NSStoreType = SQLite;
NSStoreUUID = "F1B37CD0-8B89-4893-A262-1013C3544026";
"_NSAutoVacuumLevel" = 2;
};
reason = "Can't find model for source store"; } 2015-07-28 09:04:06.089 AppName[51306:1423128] CoreData: annotation:
NSPersistentStoreCoordinator's current model hashes are {
Attempt = <b4d1e878 69a97917 e751a67c 89e1887a ae4df1dc f380e4ee c9585f60 f39ff51e>;
BookmarkFlashcard = <33112f7c 2fa20bec eb2e019c b5d619b4 92be2547 a65fabee 1ac86ab7 92dd77bb>;
BookmarkQuestion = <38634b49 71f0d43c 6f9fbba9 bc2f1b81 675c9b3c f2da017e fc8de9d8 4e18a4a0>;
Category = <b0e4d91b 0c0ebc71 ed0f403c 9a0eec20 fc1686aa 0169bc60 4bcc7e57 165bce15>; }

有没有办法在已经投入生产的应用中将 name1.xdatamodel 重命名为 name2.xdatamodel?

谢谢

最佳答案

与其重命名 app1.xcdatamodeld 或 app2.xcdatamodeld,不如创建一个新的 (allApps.xcdatamodeld)。这个新模型可以只是您想要保留的任何模型的副本。

然后在两个目标中的每一个中添加一个 .xcmappingmodel 文件并将其链接到 allApps.xcdatamodeld 并执行所需的任何转换。

根据 coreData 的工作方式,您需要保留原始的 app1 和 app2 xcdatamodeld 文件,以确保您永远不会破坏恰好还在其设备上运行您最旧的应用程序的用户。

文件 > 新建 > 文件 > 核心数据 > 映射模型。选择源模型并单击下一步。 enter image description here

选择目标数据模型并单击下一步。 enter image description here

在 app2 的另一个目标中再次执行此操作,您应该没问题。

关于ios - 重命名 coredata .xcdatamodeld 文件和迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31668137/

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