我建立了一个名为" 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文件?
答案 0 :(得分:2)
您正在创建新的NSPersistantStore
并尝试访问尚未设置的URL
。您还创建了一个新的NSPersistentStoreCoordinator
,它甚至没有用商店进行初始化。
您最有可能尝试删除现有的NSPersistentStore
。你应该像这样抓住它:
@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提供的核心数据堆栈,您应该能够通过NSPersistentStoreCoordinator
访问appDelegate
。