arrays - 数组值显示 coreData 值的所有信息,而不仅仅是值
问题描述
我希望有人可以帮助我了解如何从数组中获取值,而不是从下面的屏幕截图中显示的有关数组的所有系统信息。
相反,我宁愿只显示“测试”来证明 CoreData 保存并返回了值。
这是代码:
import UIKit
import CoreData
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let newItem = Item(context: context)
var textIn = ""
var textOut = ""
var itemArray = [] as Array
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBOutlet weak var dataIn: UITextField!
@IBAction func save(_ sender: Any) {
newItem.title = dataIn.text
saveItems()
}
@IBOutlet weak var textLabel: UILabel!
@IBAction func showButton(_ sender: Any) {
loadItems()
}
func saveItems() {
do {
try context.save()
print("Saved!")
} catch {
print("Error saving context \(error)")
}
}
func loadItems() {
let request : NSFetchRequest<Item> = Item.fetchRequest()
do {
itemArray = try context.fetch(request) as [Any]
for item in itemArray {
print(item.self)
textLabel.text = ("Value: \(item.self)")
}
} catch {
print("Error fetching data from context \(error)")
}
}
}
谢谢!
解决方案
而不是最差的类型[Any]
使用最好的类型[Item]
var itemArray = [Item]()
然后删除无意义的类型,loadItems
以便能够使用该title
属性
func loadItems() {
let request : NSFetchRequest<Item> = Item.fetchRequest()
do {
itemArray = try context.fetch(request)
for item in itemArray {
print(item.title)
textLabel.text = ("Value:", item.title)
}
} catch {
print("Error fetching data from context \(error)")
}
}
考虑到在循环之后,标签将始终显示title
数组中最后一项的。
推荐阅读
- chartjs-2.6.0 - Charjs 哪个选项用于绘制雷达或极地
- amazon-web-services - 在 aws kubernetes 中创建节点组时出错
- javascript - 如何使用 AsyncStorage 将项目保存在一个屏幕中,然后将其显示在另一个屏幕中
- javascript - 当我在 React 中进行新的 API 调用时,如何更新相同的对象格式?
- java - 检查第二个数字的数字是否可以重新排列以形成第一个数字的功能是什么
- java - 如何使 mvn cobertura:cobertura 运行的测试不超过 mvn test
- android - 在使用 Border radius 和 backgroudn 图像时,移除 Flutter 中 Button 的默认白色
- php - php iconv 字符编码从泰语 ISO-8859-11 到 utf-8
- java - 如何将 Netbeans 连接到 Microsoft Sql Server?
- c# - 需要创建一个 WepApi 控制器来处理通用对象