打印数组中的第三项



在我的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")
}
}

首先不要将自定义结构体或类命名为Data。它会干扰基金会Data

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

你的代码已经过时了。总是使用NSManagedObject的子类。在下面的代码中,我将类命名为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)
}
}

相关内容

  • 没有找到相关文章

最新更新