我正在使用ios项目,该项目在注销时删除数据库,但是当我尝试与其他用户重新登录时,出现如下错误:
NSSQLiteErrorDomain = 522
我的注销代码如下:
NSURL *storeURL = [[self contentStorageDirectory] URLByAppendingPathComponent:@"*****.sqlite"];
[[[NSFileManager alloc] init] removeItemAtURL:storeURL error:nil];
self.managedObjectContext = nil;
self.managedObjectModel = nil;
self.persistentStoreCoordinator = nil;
[self getManagedObjectContext];
答案 0 :(得分:0)
注销?时删除数据库。也许您试图删除所有以前登录的用户数据。您必须阅读有关CoreData的更多信息。您可以将上下文设置为零,但是不应触摸持久性存储协调器,因为它具有对要使用的模型的引用。
当商店分配为nil时,如何获取ManagedObjectContext
看看您的模型,您的实体的关系中有一个称为“删除规则”的东西,可能是 Deny,Nullify,Cascade和No Action。
来自苹果:
关系的删除规则指定如果 试图删除源对象。
所以您应该尝试的是注销后删除所有用户数据。
如果您想调试CoreData底层引擎上的所有动作,请在启动时传递的参数上放入您的Run方案
-com.apple.CoreData.SQLDebug 1