1
我想確認是否在覈心數據中的所有數據已經以下列源中刪除(其中「CoreDataHelper.getCoreDataHelper()。上下文」的NSManagedObjectContext)如何確認核心數據執行
public static func delete(predicates: [NSPredicate] = []) {
let fetchRequest = request(predicates: predicates)
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
do {
let result1 = try CoreDataHelper.getCoreDataHelper().context.fetch(fetchRequest)
NSLog("Delete batch size: %d", result1.count)
let result2 = try CoreDataHelper.getCoreDataHelper().context.execute(deleteRequest)
NSLog("Delete request succeeded: %d", result2)
} catch {
NSLog("Delete request failed")
return
}
}
當我1個
刪除請求成功:250432
測試它,以下是日誌刪除批量大小所示
但是當我真正看到數據時,似乎沒有被刪除。 我嘗試添加一個數據,如下所示,數據已經存在於核心數據中。
public static func add(from object: Dictionary<String, Any>) -> NSManagedObjectProtocol? { let exists = fetch(id: object) if exists.count > 0 { NSLog("Object already exists in CoreData : %@", object.description) return nil } else { return newObject(object: object) as NSManagedObjectProtocol } }
對象已存在於CoreData:....
所以我的問題是我怎麼知道NSBatchDeleteRequest的是執行功能工作正常。是否有返回值可以用來確認執行過程中是否有錯誤?
是不是真的,上下文不必在每次刪除請求可以得救?無論保存操作如何,核心數據都應能夠知道數據的狀態。 –
順便說一下,一些測試用例成功地刪除了數據,但有些則沒有。所以我仍然需要知道刪除的結果是否成功,或者至少知道有多少行受到影響。 –
我們需要更多地瞭解您的Core Data Stack以進一步提高。 – shallowThought