0

Le mardi 2013 年 6 月 18 日 12:50:29 UTC+2,Appsido a é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);

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

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

谢谢您的支持。

4

2 回答 2

0

您应该首先使用此代码删除旧的 persistentStore

[objectManager.objectStore deletePersistantStore];
于 2014-01-24T14:18:54.000 回答
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];

您将需要某个地方来存储上下文以保持它们之间的交换,也许是一本字典。

于 2013-06-18T11:01:27.567 回答