ios - 由于 FOR 循环,从数据库中获取核心数据失败

标签 ios swift core-data

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/

相关文章:

iphone - 如何在 iPhone 5 上保留 iPhone 4- 格式化

ios - 来自 UICollectionView Cell 的 Swift 3 Segue

swift - 强制解包从 UserDefaults 检索到的可选值而不是使用 guard/if let 安全解包是一种好习惯吗?

swift - 使用核心数据中的索引来获取特定的二进制数据

ios - 如何通过 iOS Social.framework 在 fb 和 twitter 上上传多张照片?

ios - 多点连接 IOS : didFinishReceivingResourceWithName Error Handling (Crash)

swift - 为什么协议(protocol)默认值必须通过 Swift 中的扩展来实现?

将 Swift 字符串转换为 CChar 指针

objective-c - 带有包含 NSManagedObjectID 的 NSPredicate 的 NSFetchRequest 是否可以安全地跨线程边界传递?

swift - 我应该使用 NSUserDefault 还是 CoreData 来保存最后十个分数?