Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Objective c RestKit重置核心数据存储_Objective C_Ios_Restkit - Fatal编程技术网

Objective c RestKit重置核心数据存储

Objective c RestKit重置核心数据存储,objective-c,ios,restkit,Objective C,Ios,Restkit,在官方的RestKit页面中,我找到了以下重置存储的方法: - (void) resetSavedDatabase:(id)sender { RKManagedObjectStore *objectStore = [[RKObjectManager sharedManager] objectStore]; [objectStore resetPersistentStores]; [objectStore save:nil]; } 这很有效。但是,如果在使用此方

在官方的RestKit页面中,我找到了以下重置存储的方法:

- (void) resetSavedDatabase:(id)sender {
    RKManagedObjectStore *objectStore = [[RKObjectManager sharedManager] objectStore];
    [objectStore resetPersistentStores];
    [objectStore save:nil];    

}
这很有效。但是,如果在使用此方法后执行以下操作,则会出现错误:

TestEntity *testEntity = [TestEntity createEntity];

testEntity.name = @"TestEntity";    

NSError *error;

[[RKObjectManager sharedManager].objectStore save:&error];
错误:

由于未捕获异常而终止应用程序 'NSInvalidArgumentException',原因:'对象的持久存储是 无法从此NSManagedObjectContext的协调器访问

一切都在后台调用。其思想是,我想预加载一些sqlite数据,然后用我的同步逻辑对它们进行同步。(当我不删除持久性存储时,逻辑工作正常)


有人能帮我吗?

是的,它会自动重新创建存储,但在接下来的步骤中,它还会重新创建对象上下文

因此,您几乎肯定希望在主线程上执行此操作。否则,RestKit将把创建的持久存储与后台线程中的对象上下文相关联,当线程结束时,该上下文将消失


我完全不明白您为什么要这样做。

是的,它会自动重新创建存储,但在接下来的步骤中,它还会重新创建对象上下文

因此,您几乎肯定希望在主线程上执行此操作。否则,RestKit将把创建的持久存储与后台线程中的对象上下文相关联,当线程结束时,该上下文将消失



我完全不明白你为什么要这么做。

你删除了商店。按照第一次运行时创建的方式重新创建它。@Paul de Lange,我添加了超链接。@Mundi,正如我在RestKit代码中看到的,deletePersistentStore会自动创建一个新的超链接store@Andy
deletePersistentStore
已更改为。。请根据您删除的商店更新您的问题。按照第一次运行时创建的方式重新创建它。@Paul de Lange,我添加了超链接。@Mundi,正如我在RestKit代码中看到的,deletePersistentStore会自动创建一个新的超链接store@Andy
deletePersistentStore
已更改为。。请更新你的问题。我有一个同步机制,正在后台进行,将一些xml数据与restkit同步到核心数据中。有时,同步没有意义,我不想同步某个文件,而是想将现有的填充sqlite核心数据文件下载到documentsfolder,并用该文件替换旧的本地文件。听起来很复杂,但无论哪种方式,您都需要将永久存储区与所有托管对象上下文重新关联。否则,一个线程上的访问将崩溃,正如您所看到的。这很复杂,但这是这种情况下唯一可能的方法。我该怎么做?当我在后台线程中使用TestEntity*test=[TestEntity createEntity]创建一些对象时。我如何保存这些对象,你能给我一个例子吗?也许最简单的方法就是在主线程上创建每个对象,不是吗?我接受这个答案,因为问题是在后台线程中通过RestKit API创建对象。在主线程上执行每个调用都解决了这个问题。我得到了一个在后台进行的同步机制,将一些xml数据与restkit同步到核心数据中。有时,同步没有意义,我不想同步某个文件,而是想将现有的填充sqlite核心数据文件下载到documentsfolder,并用该文件替换旧的本地文件。听起来很复杂,但无论哪种方式,您都需要将永久存储区与所有托管对象上下文重新关联。否则,一个线程上的访问将崩溃,正如您所看到的。这很复杂,但这是这种情况下唯一可能的方法。我该怎么做?当我在后台线程中使用TestEntity*test=[TestEntity createEntity]创建一些对象时。我如何保存这些对象,你能给我一个例子吗?也许最简单的方法就是在主线程上创建每个对象,不是吗?我接受这个答案,因为问题是在后台线程中通过RestKit API创建对象。在主线程上执行每个调用都解决了问题。