相关疑难解决方法(0)

多次通过核心数据迁移的示例或说明?

我的iPhone应用程序需要迁移其核心数据存储,而且一些数据库非常庞大.Apple的文档建议使用"多次传递"来迁移数据以减少内存使用.但是,文档非常有限,并没有很好地解释如何实际执行此操作.有人可以指出我一个好的例子,或者详细解释如何实际解决这个问题的过程吗?

iphone core-data objective-c core-data-migration ios

85
推荐指数
1
解决办法
3万
查看次数

找不到适合核心数据迁移的映射模型

我正在尝试执行需要MappingModel的iOS核心数据迁移.由于某种原因,核心数据无法使用映射模型,而是回退到自动轻量级迁移.

我启用了MigrationDebug选项以获取更多信息,我看到的内容毫无意义.映射模型的源哈希值和目标哈希值与源和目标ManagedObjectModels相同,忽略顺序.似乎应该使用映射模型,但日志显示"找不到合适的映射模型".

这是(省略)日志:

CoreData: annotation: (migration)    will attempt automatic schema migration
CoreData: annotation: (migration) looking for mapping model with 
 source hashes: 
{
    TSBaseEntity = <4797118c 50068f2f f544d9a9 4884720b 55ec7e4d 0d4c8f4e 1ee44be3 b06d2edc>;
    TSBuyer = <91e837d1 3f348913 eff634d6 6fb9b3a6 747e2390 fbdc4ae6 32cc56d6 7582d4a8>;
    ...
}
 destination hashes: {
    TSBaseEntity = <4797118c 50068f2f f544d9a9 4884720b 55ec7e4d 0d4c8f4e 1ee44be3 b06d2edc>;
    TSBuyer = <e316a857 8919c4be eef15387 5c67a21b 67d32919 99ead438 1ff93c05 2e065fcc>;
    ...
}
CoreData: annotation: (migration) checking mapping model at path file://localhost/Users/xandrews/Library/Application%20Support/iPhone%20Simulator/6.1/Applications/0A84951E-21FC-47C0-A1B7-F880ACB672C4/Dev.app/Migrate_0_5_24To_0_5_27.cdm
 source hashes: …
Run Code Online (Sandbox Code Playgroud)

migration core-data ios

10
推荐指数
1
解决办法
2737
查看次数

核心数据自定义迁移

我的旧核心数据模型有一个NSDate字段,我想将其更改为NSNumber.我在SO和其他博客上阅读了Apple文档和几个类似的问题(请参阅问题末尾的参考资料)

但无论我做什么,我都会遇到同样的错误:

因未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因是:'映射和源/目标模型之间不匹配'

我只有2个版本的模型,我已经一次又一次地验证了源模型和目标模型是正确的.

我甚至放弃了所有更改并重新创建了一个新模型,映射和实体(NSManagedObject子类).我现在已经坚持了近2天,并且不知道我在做什么.关于我做错的任何指示都将不胜感激.

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
    if (_persistentStoreCoordinator != nil) {
        return _persistentStoreCoordinator; 
    }

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Old.sqlite"];

    NSError *error = nil;
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

    NSString *sourceStoreType = NSSQLiteStoreType;
    NSURL *sourceStoreURL = storeURL;

    NSURL *destinationStoreURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"New.sqlite"];
    NSString *destinationStoreType = NSSQLiteStoreType;
    NSDictionary *destinationStoreOptions = nil;

    NSDictionary *sourceMetadata =
    [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:sourceStoreType
                                                               URL:sourceStoreURL
                                                             error:&error];

    if (sourceMetadata == nil) {
        NSLog(@"source metadata is nil");
    }

    NSManagedObjectModel *destinationModel …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c core-data-migration ios

9
推荐指数
1
解决办法
1994
查看次数