【发布时间】:2017-01-08 14:48:47
【问题描述】:
我正在尝试确认核心数据中的所有数据是否已通过以下来源删除(其中“CoreDataHelper.getCoreDataHelper().context”为 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 的执行功能正常工作。有没有返回值可以用来确认执行是否没有错误?
【问题讨论】: