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

3
我在想为什么我无法将Core Data数据添加到我的表格视图中。它首先被添加和存储,但当应用重新加载时,数据就消失了,因此我需要重新加载它,但似乎无法将数据添加到我的表格视图中? 以下是代码:
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()
}
2个回答

1
你可能想要将 titleName 的类型更改为:
 var titlename: [String] = []

1
如果tableView使用NSManagedObject来创建单元格,只需将NSManagedObject数据添加到数组中即可。
for result in results as! [NSManagedObject] {
         titlename.append(result)
    }

或者

表视图只使用titlename数组中的字符串创建单元格,然后将类型NSManagedObject更改为String

var titlename: [String] = []

这将有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接