我目前在Core-Data轻量级迁移方面遇到问题。深入研究之后,我发现模型中的一个实体上的NSStoreModelVersionHashes存在问题。实际上,甚至在我将模型版本添加到我的Core-Data模型之前,都发生了这种情况,并通过重新创建模型进行了验证。
我使用以下两种方法以编程方式获取了模型的版本哈希值:
NSDictionary * sourceMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:NSSQLiteStoreType URL:[NSURL fileURLWithPath:storePath] error:&error];
NSDictionary * hashesFromMetadata = [sourceMetadata objectForKey:@“ NSStoreModelVersionHashes”];
和
NSMutableArray * filePaths = [[[NSMutableArray alloc] init];
NSString * directoryPath = [bundle pathForResource:modelName ofType:@“ momd”];
NSDirectoryEnumerator * enumerator = [[NSFileManager defaultManager] enumeratorAtPath:directoryPath];
NSString * filePath;
while(((filePath = [enumerator nextObject])!= nil){
if([[[filePath pathExtension] isEqualToString:@“ mom”]){
[filePaths addObject:[directoryPath stringByAppendingPathComponent:filePath]];
}
}
/ * Model.momd目录仅包含一个“ mom”文件:Model.mom” * /
NSURL * momURL = [NSURL fileURLWithPath:[filePaths objectAtIndex:0]];
NSManagedObjectModel *模型= [[NSManagedObjectModel分配] initWithContentsOfURL:momURL];
NSDictionary * hashesFromModel = [模型EntityVersionHashesByName]; …