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

関連する問題