在 viewController
启动期间,我试图从我的核心数据的一个属性中检索除 null
之外的所有值。但是在 for
循环期间,no
总是获取值 0 并且不会提前递增。所以我的 results.count
是 8,然后它显示 0 8 次并为属性获取相同的值。
func searchMark() -> Int
{
do
{
let mngdCntxt = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "AddedBookmark")
let results = try mngdCntxt.fetch(fetchRequest)
//fetchRequest.returnsObjectsAsFaults = false
for no in 0..<results.count{
if let match = results[no] as? AddedBookmark
{
print(no)
let providerNo = match.value(forKey: "providerNo") as! Int
print("providerNo: \(providerNo)")
return providerNo
}
}
catch{}
return 0
}
providerNo
的值同样通过 for
循环获取。
最佳答案
你返回得太早,所以循环甚至不会递增一次(这也是为什么在 no == results.count
时循环不会崩溃的原因):
func searchMark() -> Int {
var output = 0
do {
let mngdCntxt = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "AddedBookmark")
let results = try mngdCntxt.fetch(fetchRequest)
for no in 0...(results.count-1) {
if let match = results[no] as? AddedBookmark {
print(no)
let providerNo = match.value(forKey: "providerNo") as! Int
print("providerNo: \(providerNo)")
output = providerNo
}
}
return output
}
catch{}
return output
}
这个函数可能不完全是你所期望的,但它告诉你循环应该有多大以及何时返回
关于ios - 由于 FOR 循环,从数据库中获取核心数据失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47594298/