Core data 此NSPersistentStoreCoordinator没有持久存储(未知)。它无法执行保存操作
我正在使用Microsoft Azure web服务创建应用程序。单击“注销”按钮,我需要完全清除本地核心数据库,所有数据将在使用相同的用户名和密码再次登录后重新加载。要删除核心数据,我使用以下方法Core data 此NSPersistentStoreCoordinator没有持久存储(未知)。它无法执行保存操作,core-data,ios7,xcode6,persistence,Core Data,Ios7,Xcode6,Persistence,我正在使用Microsoft Azure web服务创建应用程序。单击“注销”按钮,我需要完全清除本地核心数据库,所有数据将在使用相同的用户名和密码再次登录后重新加载。要删除核心数据,我使用以下方法 - (void) resetApplicationModel { AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; NSManagedObjectContext *context
- (void) resetApplicationModel {
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = delegate.managedObjectContext;
for (NSPersistentStore *store in delegate.persistentStoreCoordinator.persistentStores) {
NSError *error;
NSURL *storeURL = store.URL;
NSLog(@"storeURL: %@", storeURL);
NSPersistentStoreCoordinator *storeCoordinator = delegate.persistentStoreCoordinator;
[storeCoordinator removePersistentStore:store error:&error];
[[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];
NSLog(@"There are errors: %@", error);
}
delegate.persistentStoreCoordinator = nil;
context = nil;
delegate.managedObjectModel = nil;
}
这是删除我的所有数据,但当我试图再次登录而不关闭应用程序时,会出现以下错误
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This NSPersistentStoreCoordinator has no persistent stores (unknown). It cannot perform a save operation.'
发生这种情况的原因是,在删除数据时,我将persistentStoreCoordinator设置为nil,并且正在AppDelegate文件中创建其实例。有人能给我建议解决这个问题的办法吗
提前谢谢你的帮助 您的代码有许多错误 无论如何,要实现您所需要的,请尝试此方法的修改版本
resetApplicationModel
- (void) resetApplicationModel {
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
// NSManagedObjectContext *context = delegate.managedObjectContext;
for (NSPersistentStore *store in delegate.persistentStoreCoordinator.persistentStores) {
NSError *error;
NSURL *storeURL = store.URL;
NSLog(@"storeURL: %@", storeURL);
// NSPersistentStoreCoordinator *storeCoordinator = delegate.persistentStoreCoordinator;
// [storeCoordinator removePersistentStore:store error:&error];
[[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];
NSLog(@"There are errors: %@", error);
}
// delegate.persistentStoreCoordinator = nil;
// context = nil;
// delegate.managedObjectModel = nil;
}
您的目的是删除注释掉的代码行。要检查,您只想删除所有数据?对不起。我不能完全理解你。我得到的是,我想在这里实现数据删除。我想在用户单击注销按钮时完全删除我的核心数据库。按照您的建议注释这些行,这并不是删除我的本地数据库。所以,如果可能的话,请告诉我如何改进上述代码以完全删除数据。看来您不了解核心数据。删除持久存储就是删除数据库。似乎没有理由将核心数据框架设置为nil。我理解这一部分,删除持久存储就是删除数据库。但在同一方面,只要将storeURL.path设置为nil,就不会删除本地数据库中的所有条目。