2013-07-04 58 views
1

所以我决定创建一个实体的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

在“寻找映射模型...目的地散列”下,广播线路是空的 - 这只是一个错误的复制/粘贴?假设是这样的,你是否已经试图明确地将映射模型设置为Model.cdm,而不是让CoreData进行比较来找到匹配?我怀疑这不会解决问题,但可能会生成一个不同的错误消息,并提供有关为什么模型未被接受的更多信息(但不确定,但不必明确映射自己)。 –

+0

如何将映射设置为我的model.cdm文件? 我刚刚看到核心数据搜索我的映射文件,它发现它并尝试使用,但没有成功。 –

+0

我一直在寻找我的代码和书签来弄清楚我是如何手工指定映射模型的,有一次我尝试了它,但不幸的是还没有拿出任何东西。但是,我确实遇到了这个问题,这与您的问题看起来完全相同,并提供了一些可能的解决方案:http://blog.vucica.net/2013/04/core-data-migrating-ignores-manual-mapping-model-或 - 失败 - 迁移 - 尽管映射模型存在.html –

回答

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测试版,请尝试在那里运行并再次比较哈希值。日志中可能还有更多信息可以帮助您。

在某些情况下,哈希值不正确,我自己正在处理这样的问题,但我一直无法确定模型中的哪些功能可能会触发此错误。

如果您能够找出触发此问题的原因,请回发并提交错误。

相关问题