Swift 核心数据删除

Swift 核心数据删除,swift,core-data,Swift,Core Data,在一个应用程序上工作,当任何用户登录时,一些核心数据存储应该被删除-以前的用户应该从数据库中删除。使用删除实体的组合 func deleteEntity(_ entity : String) { let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: entity) fetchRequest.includesPropertyValues = false do

在一个应用程序上工作,当任何用户登录时,一些核心数据存储应该被删除-以前的用户应该从数据库中删除。使用删除实体的组合

func deleteEntity(_ entity : String) {
        let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: entity)
        fetchRequest.includesPropertyValues = false
        do {
            let results = try self.context.fetch(fetchRequest)
            for managedObject in results {
                let managedObjectData : NSManagedObject = managedObject as! NSManagedObject
                self.context.delete(managedObjectData)
            }
            try self.context.save()
        } catch let error {
            print(error)
        }
    }

也许您需要在上下文中调用
reset()
?但是“登录”到某个外部服务器是什么意思?是的,在从外部服务器插入新数据之前,数据被/应该被删除。
reset()
调用可以解决问题,如果没有它,
self.context.registeredObjects.count
将在删除文件后返回非零值,但是,
fetch
似乎不返回任何对象?
fileprivate func deleteStore(_ storeName: String) {
        self.context.performAndWait { [weak self] () -> Void in

            guard let stores = self?.context.persistentStoreCoordinator?.persistentStores else {return }
            guard let appDelegate = self?.appDelegate else {return }

            for store in stores {
                if storeName == store.sqliteStoreName {
                    do {
                       // try self?.context.persistentStoreCoordinator?.remove(store)
                         try self?.context.persistentStoreCoordinator?.destroyPersistentStore(at: store.url!, ofType: NSSQLiteStoreType, options: nil)
                        try FileManager.default.removeItem(at: store.url!)
                        try FileManager.default.removeItem(at: store.walFileURL as URL)
                        try FileManager.default.removeItem(at: store.shmFileURL as URL)


                        if appDelegate.shouldUseInMemoryStores {
                            try self?.context.persistentStoreCoordinator?.addPersistentStore(ofType: NSInMemoryStoreType, configurationName: nil, at: store.url!, options: nil)
                        } else {
                            try self?.context.persistentStoreCoordinator?.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: store.url!, options: appDelegate.coreDataStoreOptions)
                        }
                    } catch let error as NSError {
                        DDLogError("caught error: \(error)")
                    }
                }
            }
        }