打印数组中的第三项

print the 3rd item in a array

在我尝试的 swift 代码中,我想打印从核心数据属性 atBATS 获取的数组中的第 3 个项目。代码中也有一个排序描述符。现在代码打印所有的名字,只打印第三个名字。假设数组中有 3 个项目。

 func printStrings() {
        let appD = UIApplication.shared.delegate as! AppDelegate

        let context = appD.persistentContainer.viewContext

        let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Data")
        request.returnsObjectsAsFaults = false


        do {
            let result = try context.fetch(request)



            var retrievedData = [String]()

            for data in result as! [NSManagedObject] {
                
                let sort = NSSortDescriptor(key: "atBATS", ascending: false)
                 request.sortDescriptors = [sort]
                
                
                if let value = data.value(forKey: "atBATS") as? String {
                    retrievedData.append((value))


                }

            }


            print(retrievedData)


        } catch {

            print("Failed")
        }
    }

首先不要命名自定义结构或 class Data。它会干扰 Foundation Data.

排序描述符在错误的位置。在获取数据之前,它必须附加到获取请求

而且你的代码已经过时了。始终使用 NSManagedObject 的子 class。在下面的代码中,我将 class MyData

命名为
func printStrings() {
    let appD = UIApplication.shared.delegate as! AppDelegate

    let context = appD.persistentContainer.viewContext

    let request : NSFetchRequest<MyData> = MyData.fetchRequest()
    request.sortDescriptors = [NSSortDescriptor(key: "atBATS", ascending: false)]

    do {
        let result = try context.fetch(request)
        let atBATS = result.map(\.atBATS)
        if atBATS.count > 2 {
            print(atBATS[2])
        } else {
            print("There are less than 3 items")
        }

    } catch {
        print(error)
    }
}