2016-04-24 104 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