今天我什么时候回溯这段代码
func salesCountForEmployees(_ employee: Employee) -> String {
let fetchRequest: NSFetchRequest<Sale> = NSFetchRequest(entityName: "Sale")
let predicate = NSPredicate(format: "employee == %@", employee)
fetchRequest.predicate = predicate
let context = employee.managedObjectContext!
do {
let results = try context.fetch(fetchRequest)
return "\(results.count)"
} catch let error as NSError {
print("Error: \(error.localizedDescription)")
return "0"
}
}
我很惊讶&#34;因为回溯字段显示我甚至在实际获取执行之前已经获取了结果。
也许有人知道为什么会发生这种情况?
答案 0 :(得分:1)
results
变量已声明,但尚未初始化(因为尚未执行提取),因此它指向应用程序通常使用的未清除的内存字段。当您继续执行程序时,results
变量中的“垃圾”会被有效的获取结果数组覆盖。
所以这并不意味着你在命令执行之前就已经执行了获取请求。