我用一个名为“user”的实体和几个属性构建了一个模型。然后我将三个用户的信息存储在这样的实体中。现在我创建了一个按钮“reset”来永久删除所有三个用户信息,但保持数据模型为SWIFT语言。我试过了但有个错误:
EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
发生在var storeURL声明行中。以下是我的代码:
@IBAction func deleteIterm(){
var store:NSPersistentStore = NSPersistentStore()
var storeURL:NSURL = store.URL
var storeCoordinator:NSPersistentStoreCoordinator = NSPersistentStoreCoordinator()
storeCoordinator.removePersistentStore(store, error: nil)
NSFileManager.defaultManager().removeItemAtPath(storeURL.path, error: nil)
}
问题在哪里,如何解决?另外,有没有办法手动删除它对应的sqlite文件?
最佳答案
您正在创建一个新的NSPersistantStore
并尝试访问它的URL
,但尚未设置。您还创建了一个新的NSPersistentStoreCoordinator
,这个NSPersistentStore
甚至没有用存储初始化。
您最有可能尝试完成的是删除现有的NSPersistentStoreCoordinator
。你应该这样抓住它:
@IBAction func deleteIterm(){
var storeCoordinator:NSPersistentStoreCoordinator = /* Your already existing NSPersistantStoreCoordinator */
var store:NSPersistentStore = storeCoordinator.persistantStores[0] as NSPersistantStore
var storeURL:NSURL = store.URL
storeCoordinator.removePersistentStore(store, error: nil)
NSFileManager.defaultManager().removeItemAtPath(storeURL.path, error: nil)
}
如果您使用的是Xcode提供的核心数据堆栈,那么您应该能够通过
appDelegate
访问。关于ios - 快速删除Xcode核心数据模型中的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24268306/