首页 > 解决方案 > 数组值显示 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)")
        }
        
    }
    
}

谢谢!

标签: arraysswiftcore-data

解决方案


而不是最差的类型[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数组中最后一项的。


推荐阅读