Tag: 核心数据迁移

迁移持久性商店崩溃

我有一个开关打开或closuresiOS 7应用程序的iCloud。 iCloud同步工作正常。 当iCloud打开时,我将其closures,我称之为: – (void)migrateiCloudStoreToLocalStore { NSError *error; __weak NSPersistentStoreCoordinator *psc = self.managedObjectContext.persistentStoreCoordinator; NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption:@YES, NSPersistentStoreRemoveUbiquitousMetadataOption : @YES}; NSPersistentStore *currentStore = [psc persistentStores][0]; NSLog(@"iCloud Store – %@", currentStore); NSLog(@"Local Store – %@", self.store); [psc migratePersistentStore:currentStore toURL:self.store options:options withType:NSSQLiteStoreType error:&error]; } 我可以看到两个存储都存在,但是当migratePersistentStore:toURL:options:withType:error:被调用时,它仍然崩溃。 这是我得到的错误: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** […]

iOS:什么是迁移coredata关系时的值expression式函数?

关系函数如下所示: FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:","employeesToEmployees",$source.employees") 这个“function”是什么? 它将如何被称为? 有没有任何指导介绍这个? 我读过苹果的 核心数据模型版本控制和数据迁移编程指南 但我还是不明白

使用iOS的多块核心数据迁移块

我正在尝试迁移一个大约11Mb的iPhone / iPad的SQLite商店。 它有大约三十个不同的实体,所有这些实体之间都相互关联。 在3GS上,需要相当长的一段时间。 即使轻量级迁移也需要四分钟左右的时间 我想这是因为所有的关系都是在记忆中。 阅读苹果迁移指南,它说,对于大型数据集,一种方法是使用不同的映射模型进行多次通过。 一切顺利。 但是,如果一个映射模型中的实体与另一个映射模型中的实体相关,则似乎无法执行此操作。 实际上,编译错误是在映射模型xcmappingmodel文件中的“无法自动生成具有零映射名称的值expression式”的行中生成的。 任何提示,非常感谢。 非常感谢, 马克斯

如何使用App Storetesting核心数据迁移?

我们有一个应用程序,目前在应用程序商店。 它使用核心数据作为其持久性机制。 我们准备好了一个新的版本,它有一些模式的变化。 具体而言,我们添加了1个新实体,并为现有实体添加了新的属性。 从我的理解和阅读来看,这是可能发生的最简单的迁移之一。 没有字段删除,没有关系改变。 数据模型由5个实体组成,根本没有关系。 我们对数据模型进行了版本化,并创build了一个.xcmappingmodel来处理迁移。 我们通过添加以下选项来创buildPersistentStoreCoordinator来处理迁移: NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, nil]; 目前,我们已经使用以下过程成功地与团队的几名成员进行了testing: 从设备和iTunes中删除应用程序的所有testing版本 转到app store并下载当前版本 对将certificate迁移成功的应用进行一些更改 将新的二进制文件(使用相同的包标识符签名)拖到iTunes中并进行同步 在设备上加载新版本,validation在以前版本中所做的更改仍然存在,并且应用程序不会崩溃 我的问题是:是否有一个更容易/更好的方法来testing这个? 我们担心的是,一旦应用程序走出门外,没有其他方法可以确保我们的用户有最好的体验。

在Core Data中将多对多关系迁移到连接表

我有一个iPhone应用程序,使用多对多的关系将标签和笔记链接在一起。 我目前正在使用核心数据的“关系”function来实现这一点,但想迁移到使用连接表。 这是我的挑战:我想从旧模型迁移到连接表模型,我需要弄清楚如何执行数据迁移。 有没有什么好的例子,如何做到这一点? 更新:我在这里澄清我的问题,以帮助这里发生了什么:我想尝试使用Simperium来支持我们的应用程序,但Simperium不支持多对多的关系(!)。 作为我想要做的一个例子,我们以iPhoneCoreDataRecipes应用程序为例。 这是我的核心数据scheme目前类似: …这是我正在过渡到: 我如何从一个到另一个,并与我的数据? 核心数据迁移的苹果文档是非常稀疏的,我没有看到使用NSEntityMapping或NSMigrationManager子类来完成工作的任何有用的演练。

核心数据 – 轻量级迁移和多核心数据模型文件(xcdatamodel)

从两个单独的xcdatamodel文件定义的存储迁移时,执行轻量级迁移时遇到问题。 在我的应用程序的1.0版中,我将模型分解为分析模型,模型-A和模型-B中的所有其他模型。 编译时,模型将被分组在一起,一切进展顺利。 在使用新版本1.1时,我通过向模型B添加新模型版本并将新版本设置为活动状态来升级模型B. 从1.0升级到1.1时出现问题。 看来Core Data检查磁盘上的模型存储(由版本1.0创build),并寻找描述它的模型,但无法find定义整个商店的SINGLE模型(模型-A仅涵盖分析,模型-B覆盖一切),所以它会抛出一个“无法find源存储模型”的错误。 有没有人find一个解决scheme来分离模型,但仍然允许升级+轻量级迁移工作,没有定义自定义迁移额外的麻烦? 以下是用于加载模型的代码片段: NSArray *modelNames = [NSArray arrayWithObjects:@"model-A", @"model-B", nil]; NSMutableArray *models = [NSMutableArray array]; for (NSString *name in modelNames) { LogInfo(@"loading model %@", name); NSURL *modelURL = [[NSBundle mainBundle] URLForResource:name withExtension:@"momd"]; NSManagedObjectModel *model = [[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL] autorelease]; [models addObject:model]; } // combine all the separate models into […]

iPhone“自动轻量级移植”期间发生的“源存储模式找不到”?

我真的陷入了iPhone应用程序从V1到V2的升级testing。 我有IPA版本,我正在通过iTunes专门分发到我的iPhone设备,一个用于v1版本的应用程序,另一个用于v2版本。 注意: v1安装在我的设备上运行良好 如果我删除V1和部署V2(所以没有迁移),那么它工作正常 当我部署v2,而v1已经在那里,我得到的错误:“原因=无法find源存储模型” 来自错误的片段… * reason=**Can't find model for source store**}, { URL = "file://localhost/var/mobile/Applications/AAAAF424-D6ED-40FE-AB8D-66879386739D/Documents/MyApp.sqlite"; metadata = { NSPersistenceFrameworkVersion = 320; <cut> 当我使用“手机磁盘”来看我的设备时,我看到有Documents / MyApp.sqlite文件 问题 – 任何想法如何解决这个问题? 我可以在这里做什么样的debugging/分析? 让我知道如果你需要更多的信息。 我所做的概述是: 没有为我的核心数据模型设置一个版本(即在版本的时候没有真正意识到,所以没有设置一个版本),将我的v1应用程序部署到AppStore。 对于v2而言,唯一的附加变化是在一个模型上的一个新属性 所以对于V2版本我所做的是: 重新创build了一个新的核心数据模型 为该模型创build了一个v1版本 创build了v1的对象/属性 保存 为该模型创build了一个v2版本 创build了一个额外的属性 保存 重新创build托pipe对象类 更新了代码,以便将选项置于每个http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweight.html#//apple_ref/doc/uid/TP40008426-SW1调用addPersistentStoreWithType PS更全面的错误版本,如果这有助于 – 这一次它来自模拟器上的迁移错误 , reason=Can't find model for source […]

iPhone核心数据“自动轻量级迁移”

我正在尝试更新一个实现核心数据存储的应用程序。 我正在为其中一个实体添加一个属性。 我将下面的代码添加到我的委托类: – (NSPersistentStoreCoordinator *)persistentStoreCoordinator { if (persistentStoreCoordinator != nil) { return persistentStoreCoordinator; } NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"Shoppee.sqlite"]]; NSError *error = nil; persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) { NSLog(@"Error: […]