Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法使用RestKit 0.20在生成之间持久化数据_Ios_Objective C_Core Data_Restkit - Fatal编程技术网

Ios 无法使用RestKit 0.20在生成之间持久化数据

Ios 无法使用RestKit 0.20在生成之间持久化数据,ios,objective-c,core-data,restkit,Ios,Objective C,Core Data,Restkit,因此,我最近切换到RestKit核心数据实现,在构建/应用程序启动之间持久化数据时遇到了一些问题,即如果我创建了一个对象并保存了它,只要应用程序保持打开状态,它就可以正常工作,但一旦我关闭模拟器并重新构建数据,数据就消失了。我对此做了一些研究,发现了一些类似于以下的StackOverflow线程: 大多数情况下都提供相同的解决方案-从save:切换到saveToPersistentStore:-但不幸的是,即使进行了此更改,我的保存仍然无法持久。我将非常感谢任何帮助 My App Delegat

因此,我最近切换到RestKit核心数据实现,在构建/应用程序启动之间持久化数据时遇到了一些问题,即如果我创建了一个对象并保存了它,只要应用程序保持打开状态,它就可以正常工作,但一旦我关闭模拟器并重新构建数据,数据就消失了。我对此做了一些研究,发现了一些类似于以下的StackOverflow线程:

大多数情况下都提供相同的解决方案-从save:切换到saveToPersistentStore:-但不幸的是,即使进行了此更改,我的保存仍然无法持久。我将非常感谢任何帮助

My App Delegate,基本配置与基本RestKit教程中的配置完全相同:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSError *error = nil;
    NSURL *modelURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"appName" ofType:@"momd"]];
   // NOTE: Due to an iOS 5 bug, the managed object model returned is immutable.
    NSManagedObjectModel *managedObjectModel = [[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL] mutableCopy];
    RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel];

   // Initialize the Core Data stack
    [managedObjectStore createPersistentStoreCoordinator];

    NSPersistentStore __unused *persistentStore = [managedObjectStore addInMemoryPersistentStore:&error];
    NSAssert(persistentStore, @"Failed to add persistent store: %@", error);

    [managedObjectStore createManagedObjectContexts];

   // Set the default store shared instance
    [RKManagedObjectStore setDefaultStore:managedObjectStore];

   // Override point for customization after application launch.
    UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
    LoginVC *controller = (LoginVC *) navigationController.topViewController;
    controller.managedObjectContext = managedObjectStore.mainQueueManagedObjectContext;
    return YES;
}
以及实际创建NSManagedObject对象的代码:

- (void) theSaveButtonOnTheAddDayVCWasTapped:(AddDaytimeVC *)controller{
    [controller.navigationController popViewControllerAnimated:YES];
    if([[controller.activityDescriptionTextField text] length] > 0){
        NSManagedObjectContext *context = self.managedObjectContext;
        Daytime *daytime = [context insertNewObjectForEntityForName:@"Daytime"];
        daytime.activityDescription = [controller.activityDescriptionTextField text];
        daytime.thoughts = [controller.thoughtsTextField text];
        NSError *error;
        if (![context saveToPersistentStore:&error]) {
            NSLog(@"Error saving context");
        }
        [self reloadArrayWithCurrentViewActivityType:@"Daytime"];
        [[self tableView] reloadData];
    }
}
我正在通过标准在视图之间传递mainQueueManagedObjectContext:

@property (nonatomic, strong) NSManagedObjectContext* managedObjectContext;

进入准备阶段。我最近还做了一些小的模型更改,添加了一个字段,并重新生成了模型对象,如果这可能有帮助的话。。。不幸的是,我不能完全确定它是否像之前预期的那样工作

如果有人好奇的话,这其实相当直截了当。整个内存中的持久性存储让我无法启动,但我不认为教程会使用这样一个临时示例。。。我错了:-

在我的应用程序中,代理添加了:

NSString *path = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"Fringe.sqlite"];
将persistentStore更改为:

  NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:path fromSeedDatabaseAtPath:nil withConfiguration:nil options:[self optionsForSqliteStore] error:&error];
并补充说:

- (id)optionsForSqliteStore {
return @{
         NSInferMappingModelAutomaticallyOption: @YES,
         NSMigratePersistentStoresAutomaticallyOption: @YES
         };
}
配置SQLite存储。现在一切都好了