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