无法将'String'类型的值转换为预期的参数类型'NSManagedObject'Swift

问题描述 投票:0回答:2

我想知道为什么我无法将我的数据从Core Data添加到我的tableview。它首先被添加并存储但是当重新加载应用程序时数据已经消失所以我需要重新加载它但是我似乎无法将数据添加到我的tableview中?这是代码

var titlename: [NSManagedObject] = []

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)

    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    let manageContext = appDelegate.persistentContainer.viewContext
    let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Items")

    fetchRequest.returnsObjectsAsFaults = false

    do {
        let results = try manageContext.fetch(fetchRequest)

        for result in results as! [NSManagedObject] {
            if let theName = result.value(forKey: "name") as? String {
                titlename.append(theName)
            }
        }
    } catch let error as NSError {
        print("Could not fetch. \(error), \(error.userInfo)")
    }

    tableView.reloadData()
}
ios swift tableview
2个回答
1
投票

您可能希望将titleName类型更改为

 var titlename: [String] = []

1
投票

如果tableview使用NSManagedObject创建单元格,只需将NSManagedObject数据添加到数组中。

for result in results as! [NSManagedObject] {
         titlename.append(result)
    }

要么

tableview仅使用来自titlename数组的字符串来创建单元格,然后将类型NSManagedObject更改为String

var titlename: [String] = []

这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.