swift - 更新 tableview 和 coredata
问题描述
我的核心数据中有一些数据,我在 tableview 上显示它。单击单元格时,我想更新 tableview 行。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath) as! ItemTableViewCell
cell.starImage.image = UIImage(named: "Gray star icon")
cell.selectionStyle = .none
let context = coreData.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Item")
do {
let result = try context.fetch(request)
let img = UIImage(named: "Gray star icon")
for data in result as! [NSManagedObject] {
let data = img!.pngData() as NSData?
data?.setValue(data, forKey: "starImage")
}
} catch {
print("Failed")
}
coreData.saveContext()
tableView.reloadData()
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as? ItemTableViewCell else {
return UITableViewCell()
}
cell.itemName.text = itemCategoryNameArray[indexPath.row]
cell.itemDescription.text = itemDescriptionArray[indexPath.row]
cell.itemCategory.text = itemCategoryTypeArray[indexPath.row]
cell.starImage.image = UIImage(data: itemStarArray[indexPath.row])
cell.profileImage.image = UIImage(data: itemImageArray[indexPath.row])
return cell
}
但是我遇到了一些错误,例如:-
由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类不符合键 starImage 的键值编码。”
解决方案
请合并您的变量名称:循环中有两个不同data
的变量会导致混淆和错误
更好的
for item in result as! [NSManagedObject] {
let data = img!.pngData() as? NSData
item.setValue(data, forKey: "starImage")
}
不过我建议使用更具体的类型并且只创建一次图像
let request = NSFetchRequest<Item>(entityName: "Item")
do {
let result = try context.fetch(request)
let img = UIImage(named: "Gray star icon")
let data = img!.pngData() as? NSData
for item in result {
item.starImage = data
}
} catch {
print("Failed", error)
}
推荐阅读
- python - 试图在两个日期列之间进行差异
- amazon-s3 - 从源访问 XMLHttpRequest 已被 CORS 策略阻止:请求中不存在“Access-Control-Allow-Origin”标头
- azure - 如何确保消息将在队列中等待 10 分钟
- java - 如何通过 mongoDb 中的 spring 数据进行 serverStatus() 查询
- c# - SilverLight 5 和 VS2019 - 缺少程序集参考?
- excel - 如果满足条件,则显示下拉列表
- firebase-cloud-messaging - FirebaseMessagingException:调用 FCM 后端服务时出错
- mysql - 如何将多行列和显示一行
- flutter - 如何在没有动画的情况下旋转材质图标?
- python - 在计划任务的情况下如何从芹菜中获取任务ID(节拍)