RestKit> [RestKit 0.9]在运行时交换核心数据库

时间:2013-06-18 10:56:10

标签: restkit

Le mardi 18 juin 2013 12:50:29 UTC + 2,Appsidoaécrit: 您好,

我正在尝试在运行时创建一个新的持久存储并使用这个新的持久存储。

要创建新的持久性商店,请使用以下代码段

NSURL *modelUrl = [[NSBundle bundleForClass:[self class]] URLForResource:@"AppDataModel" withExtension:@"momd"];

NSManagedObjectModel *managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelUrl];

[[AppDelegate appDelegate] objectManager].objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:@"AppStore"
                                                                                                      usingSeedDatabaseName:nil
                                                                                                         managedObjectModel: managedObjectModel
                                                                                                                   delegate:nil];

这样可以正常工作,并在iphone设备文件系统上创建一个新的持久存储。

然后我创建一个新对象并使用以下代码段将其保存在持久性存储中

MyEntity *f = [MyEntity object];
[f setValue:[NSNumber numberWithInt:70] forKey:@"id"];
[f setValue:@"New Family" forKey:@"name"];

NSError *error;
[[f managedObjectContext] save:&error];
if (error) NSLog(@"error > %@", error);

对象保存在持久性存储中,但不是新创建的对象,而是旧的。

因此,可以基于相同的数据模型文件定义多个持久性存储,并在运行时从一个交换到另一个,并将数据保存在每个持久性存储实例中。

感谢您的支持。

2 个答案:

答案 0 :(得分:0)

查看https://github.com/magicalpanda/MagicalRecord

// get the default context
[NSManagedObjectContext MR_defaultContext];
// create the other context
NSManagedObjectContext *myNewContext = [NSManagedObjectContext MR_context];
// set the new default
[NSManagedObjectContext MR_setDefaultContext:myNewContext];

你需要在某处存储上下文以便在它们之间交换,也许是字典。

答案 1 :(得分:0)

您应该首先使用此代码

删除旧的一个persistentStore
[objectManager.objectStore deletePersistantStore];