在 Swift 中清空并保存核心数据 Table 的最简单方法是什么?

Whats the easiest way to empty and save a Core Data Table in Swift?

所以我有一个实体,我在 iOS8 XCODE 和 SWIFT 中将其视为一个简单的数据库 Table。我想删除 table 中的所有条目。永久。因此,当我再次启动应用程序时,他们不会 reload.This 是我的代码。

func deleteAllItems(){
        println("All Items are being DELETED")
        var count:Int = 0

        while (HBCContactList.count > 0){
            let AppDel: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
            let MOContext: NSManagedObjectContext = AppDel.managedObjectContext!
            MOContext.deleteObject(HBCContactList[0] as NSManagedObject)
            HBCContactList.removeAtIndex(0)
            var error:NSError? = nil
            if !MOContext.save(&error){
            abort()
            }
            tableView.reloadData()
        }

它看起来正在加载。当它在屏幕上完成时,UITableView 中没有任何内容,一切都很好。但是,如果我通过获取语句向实体 return 编写代码,并对记录数进行计数。它仍然说有超过 150 个结果。

想法?我什至在正确的球场?

一种解决方案是获取对象并将其删除。 这是一个示例(确保您指定自己的实体):

// If you'll be using the Managed Object Contexte often,
// you might want to make it a lazy property :
lazy var managedObjectContext : NSManagedObjectContext? = {
    let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
    if let managedObjectContext = appDelegate.managedObjectContext {
        return managedObjectContext
    }
    else {
        return nil
    }
}()

func deleteData() {
    let context = self.managedObjectContext!

    let fetchRequest = NSFetchRequest(entityName: "yourEntity")
    fetchRequest.includesPropertyValues = false // Only fetch the managedObjectID (not the full object structure)
    if let fetchResults = context.executeFetchRequest(fetchRequest, error: nil) as? [yourEntity] {

        for result in fetchResults {
            context.deleteObject(result)
        }

    }

    var err: NSError?
    if !context.save(&err) {
        println("deleteData - Error : \(err!.localizedDescription)")
        abort()
    } else {
        println("deleteData - Success")
    }
}