所以我决定创建我的一个实体的2个子实体。
为了测试我创建了这两个实体,没有任何属性,也没有任何关系。
如果我使用推断映射模型,核心数据会失败,并且应用程序中会出现崩溃。报告here
如果我创建映射模型,核心数据也无法升级。我检查了核心数据日志,它说实体哈希是正确的。 这可能有什么问题?
CoreData: annotation: Incompatible version schema for persistent store
'file://localhost/Users/.../StoreContent/persistentStore'.
store metadata = {
NSPersistenceFrameworkVersion = 419;
NSStoreModelVersionHashes = {
Chat = <05d870d5 8d51e966 51a6b121 56fd0eff 6a35760e 829245ce 38e82724 b511b400>;
Contact = <7f14d6ac 1bf1035e 63208d38 c048c396 d6385a95 3c8aec0b 36fbb86f 293fdb4d>;
Message = <45852277 e01bffe5 a83f71fe 09c20dba 838bb51c 411dc185 56ba4ff1 7b68ba3d>;
User = <1400bc94 f742db62 91627ea5 883e54a8 104da454 a9a7b073 f1e827ad 26f7e7c8>;
};
NSStoreModelVersionHashesVersion = 3;
NSStoreModelVersionIdentifiers = (
3July13
);
NSStoreType = SQLite;
NSStoreUUID = "73F77A17-9720-4D0E-90DD-D07A0EAECB29";
"_NSAutoVacuumLevel" = 2; } and current model versions = {
Broadcast = <e2afd25a 758f8e8b 7a2e1f2d 03042e32 e5e23693 a4935257 04a8e9fb 535e2452>;
Chat = <05d870d5 8d51e966 51a6b121 56fd0eff 6a35760e 829245ce 38e82724 b511b400>;
Contact = <7f14d6ac 1bf1035e 63208d38 c048c396 d6385a95 3c8aec0b 36fbb86f 293fdb4d>;
Group = <67fa7527 b68ea99d ee8e704f 30f20e48 58350963 73e29c19 8aea7604 dfac7d7c>;
Message = <45852277 e01bffe5 a83f71fe 09c20dba 838bb51c 411dc185 56ba4ff1 7b68ba3d>;
User = <1400bc94 f742db62 91627ea5 883e54a8 104da454 a9a7b073 f1e827ad 26f7e7c8>; }
2013-07-04 10:25:53.678 JonglaIM[90118:22103]
CoreData: annotation: (migration) will attempt automatic schema
migration 2013-07-04 10:25:55.209 x[90118:22103] CoreData:
annotation: (migration) looking for mapping model with source
hashes: {
Chat = <05d870d5 8d51e966 51a6b121 56fd0eff 6a35760e 829245ce 38e82724 b511b400>;
Contact = <7f14d6ac 1bf1035e 63208d38 c048c396 d6385a95 3c8aec0b 36fbb86f 293fdb4d>;
Message = <45852277 e01bffe5 a83f71fe 09c20dba 838bb51c 411dc185 56ba4ff1 7b68ba3d>;
User = <1400bc94 f742db62 91627ea5 883e54a8 104da454 a9a7b073 f1e827ad 26f7e7c8>; }
destination hashes: {
Broadcast = <e2afd25a 758f8e8b 7a2e1f2d 03042e32 e5e23693 a4935257 04a8e9fb 535e2452>;
Chat = <05d870d5 8d51e966 51a6b121 56fd0eff 6a35760e 829245ce 38e82724 b511b400>;
Contact = <7f14d6ac 1bf1035e 63208d38 c048c396 d6385a95 3c8aec0b 36fbb86f 293fdb4d>;
Group = <67fa7527 b68ea99d ee8e704f 30f20e48 58350963 73e29c19 8aea7604 dfac7d7c>;
Message = <45852277 e01bffe5 a83f71fe 09c20dba 838bb51c 411dc185 56ba4ff1 7b68ba3d>;
User = <1400bc94 f742db62 91627ea5 883e54a8 104da454 a9a7b073 f1e827ad 26f7e7c8>; }
2013-07-04 10:25:55.214 x[90118:22103]
CoreData: annotation: (migration) checking mapping model at path
file://localhost/Users/.../Model.cdm
source hashes: {(
<1400bc94 f742db62 91627ea5 883e54a8 104da454 a9a7b073 f1e827ad 26f7e7c8>,
<7f14d6ac 1bf1035e 63208d38 c048c396 d6385a95 3c8aec0b 36fbb86f 293fdb4d>,
<05d870d5 8d51e966 51a6b121 56fd0eff 6a35760e 829245ce 38e82724 b511b400>,
<45852277 e01bffe5 a83f71fe 09c20dba 838bb51c 411dc185 56ba4ff1 7b68ba3d> )}
destination hashes: {(
<e2afd25a 758f8e8b 7a2e1f2d 03042e32 e5e23693 a4935257 04a8e9fb 535e2452>,
<1400bc94 f742db62 91627ea5 883e54a8 104da454 a9a7b073 f1e827ad 26f7e7c8>,
<7f14d6ac 1bf1035e 63208d38 c048c396 d6385a95 3c8aec0b 36fbb86f 293fdb4d>,
<67fa7527 b68ea99d ee8e704f 30f20e48 58350963 73e29c19 8aea7604 dfac7d7c>,
<05d870d5 8d51e966 51a6b121 56fd0eff 6a35760e 829245ce 38e82724 b511b400>,
<45852277 e01bffe5 a83f71fe 09c20dba 838bb51c 411dc185 56ba4ff1 7b68ba3d> )} 2013-07-04 10:25:55.215 x[90118:22103] CoreData:
annotation: (migration) no suitable mapping model found
答案 0 :(得分:1)
用于直接指定映射模型的API是NSMigrationManager的:
- (BOOL)migrateStoreFromURL:(NSURL *)sourceURL
type:(NSString *)sStoreType
options:(NSDictionary *)sOptions
withMappingModel:(NSMappingModel *)mappings
toDestinationURL:(NSURL *)dURL
destinationType:(NSString *)dStoreType
destinationOptions:(NSDictionary *)dOptions
error:(NSError **)error;
不幸的是,这不太可能有用,因为在直接通过此API使用模型时会执行相同的哈希检查。
iOS 6中的哈希记录已被破坏,因为它显示匹配的哈希,即使它显然不应该。如果您可以访问iOS 7测试版,请尝试在那里运行并再次比较哈希值。日志中可能还有更多信息可以提供帮助。
在某些情况下哈希不正确存在问题,我自己正在处理这样的问题,但我无法确定模型中的哪些功能可能会触发此错误。
如果您能够找出导致此问题的原因,请回发并提交错误。
答案 1 :(得分:1)
现在是2019年,在撰写本文时,Xcode v10.2仍然存在。
我在我的数据模型中添加了一个属性(在新版本中),并希望基于当前属性将一些数据迁移到该模型中,以确保在访问商店时该属性具有值。我创建了一个新的模型版本,添加了属性,然后使用自定义策略创建了实体映射文件以实现此目的。
将我的头撞在墙上一整天后,此处的说明突出显示了解决方法:https://blog.vucica.net/2013/04/core-data-migrating-ignores-manual-mapping-model-or-fails-migration-despite-mapping-models-existence.html
基本上,在Xcode映射模型编辑器中,交换“ Source”和“ Destination”模型,然后再次切换回它们。我验证了这实际上是 did 导致的更改,方法是先在更改之前进行提交,然后再观察对xcmapping.xml
文件的轻微更改。
这不是Xcode中的一个愚蠢的错误第一次导致沮丧,这可能不是最后一次。那好吧。向上和向上!