Я работаю над проектом Core Data, и я получил ошибку компилятора для удаления элемента из TableViewController
:Невозможно преобразовать значение типа String, ожидаемого тип аргумента NSManagedObject
Невозможно преобразовать значение типа String, ожидаемый типа аргумента NSManagedObject
Вот код:
var listArr:[String] = []
override func viewDidLoad() {
super.viewDidLoad()
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName:"Entity")
request.returnsObjectsAsFaults = false
do {
let results = try context.fetch(request)
if results.count > 0 {
for result in results as! [NSManagedObject] {
if let listName = result.value(forKey: "listName") {
listArr.append(listName as! String)
}
}
}
} catch {
// Handle error
print(error)
}
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let identifier = "cellID"
let cell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath)
// Configure the cell...
cell.textLabel?.text = listArr[indexPath.row]
return cell
}
// Override to support editing the table view.
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
// Delete the row from the data source
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
context.delete(listArr[indexPath.row]) //The error is here
listArr.remove(at: indexPath.row)
}
self.tableView.reloadData()
}
Что мне нужно изменить?
После изменения массива на [NSManagedObject] произошла другая ошибка, которая была перенесена из NSManagedObject в несвязанный тип «string», всегда в методе cellForRowAt indexPath. –