2016-04-24 102 views
1

如何在Swift中刪除實體的核心數據中的所有條目?在Swift 2中刪除實體的核心數據

我想要一個deleteAll()方法,以便我可以清除數據庫。

這是我到目前爲止有:

func deleteAllCoreData() { 
    let fetchRequest = NSFetchRequest(entityName: "DataPoint") 
    let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest) 

    do { 
     try coordinator.executeRequest(deleteRequest, withContext: managedContext) 
    } catch let error as NSError { 
     print("Could not fetch \(error), \(error.userInfo)") 
    } 

} 

但它有一個錯誤:

Unknown command type (entity: DataPoint; predicate: ((null)); sortDescriptors: ((null)); type: NSManagedObjectIDResultType;) >

回答

1

的iOS 9添加了一個名爲NSBatchDeleteRequest新的類,它允許您輕鬆刪除對象匹配的謂詞而不必將它們全部加載到內存中。以下是你如何使用它:

let fetchRequest = NSFetchRequest(entityName: "Foo") 
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest) 

do { 
    //`myPersistentStoreCoordinator` is from the core data stack 
    try myPersistentStoreCoordinator.executeRequest(deleteRequest, withContext: myContext) 
} catch let error as NSError { 
    // TODO: handle the error 
} 
+0

更新我的問題,仍然有一些錯誤。但我認爲我很接近。 – Aaron

+0

看看這個教程,http://www.learncoredata.com/nsbatchdeleterequest-in-ios-9/,也許你會發現它很有用。 –

+0

我的應用程序適用於OS X.我不確定NSBatchDeleteRequest是否適用於OS X. – Aaron