私はSWIFT 2に、特定のエンティティからすべてのオブジェクトをクリア機能を持っていた:コアデータ:swift 3で "汎用"フェッチ/削除機能を書くには?
private static func clearTable(tableName : String)
{
let appDel = UIApplication.sharedApplication().delegate as! AppDelegate
let context : NSManagedObjectContext = appDel.managedObjectContext
let request = appDel.persistentStoreCoordinator
let fetchRequest = NSFetchRequest(entityName: tableName)
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
do {
try request.executeRequest(deleteRequest, withContext: context)
} catch let error as NSError {
debugPrint(error)
}
}
最近、私は迅速3に移行し、今では次のようになります。私は今、理解できるように
static func clearTable(_ tableName : String)
{
let appDel = UIApplication.shared.delegate as! AppDelegate
//let context : NSManagedObjectContext = appDel.managedObjectContext
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let request = NSFetchRequest(entityName: tableName)
let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: tableName)
let deleteRequest = NSBatchDeleteRequest(fetchRequest: NSFetchRequest(entityName: tableName))
do {
try request.execute(deleteRequest, with: context)
} catch let error as NSError {
debugPrint(error)
}
}
私はこの問題は私が前に実体を知らないということです
let fetchRequest: NSFetchRequest<SomeEntity> = NSFetchRequest(entityName: "SomeEntity")
よう
request
と
fetchRequest
を宣言する必要がハンド。迅速な解決策はありますか?そして、私は迅速かつコアデータに新しいです、これはオブジェクトをフェッチまたは削除するための通常の方法ですか?
NSManagedObject
を含むコアデータで
コードの重複が原因でコードが少し混乱します。あなたは同じ 'NSFetchRequest' 3xをインスタンス化します。私の答えは別の解決策を見てください。 –