【发布时间】:2017-11-17 15:45:20
【问题描述】:
假设我的 FetchedResultsController 中有对象。这些对象与另一个名为 Category 的实体有关系。如果用户没有设置类别,或者选择的类别,这可以是 nil。用户可以随时删除和创建类别。
但是,当一个类别被删除时,具有特定类别的对象,而不是 nil 作为类别属性,它具有特定类别,不再存在,给我一个错误。
如何更新我的 frc 对象,以便在删除类别时,将类别属性设置为已删除类别的所有其他对象将当前类别设置为 nil。
这就是我在 frc 中保存数据的方式:
func save(sumText: String, dataDescription: String, dataColor: UIColor, category: Categories?, type: String, completion: (_ finished: Bool) -> ()) {
let budget = NSEntityDescription.insertNewObject(forEntityName: "Budget", into: managedObjectContext!) as! Budget
budget.dataSum = sumText
budget.dataDescription = dataDescription
budget.dataColor = dataColor
budget.dateSubmitted = Date()
budget.dateSection = formatDate(date: Date())
budget.type = type
if let cat = category {
budget.category = cat
}
do{
try managedObjectContext?.save()
print("Succesfully saved data")
completion(true)
} catch {
debugPrint("Could not save \(error.localizedDescription)")
completion(false)
}
}
这就是我删除类别的方式:
let deleteAction = SwipeAction(style: .destructive, title: "Sterge") { (action, indexPath) in
guard let managedContext = appDelegate?.persistentContainer.viewContext else { return }
managedContext.delete(userCategories[indexPath.row])
do {
try managedContext.save()
} catch {}
self.fetchCoreDataObject()
tableView.reloadData()
}
因此,当我删除类别时,我必须更新该类别的所有对象以设置为 nil,但我不知道如何。
【问题讨论】:
-
我已经更新了答案:) 请看看。问题是从类别到预算的反向关系应该将删除规则设为无效,而不是从预算到类别的关系:) 这是你的情况。请阅读我的答案以了解更多信息:)
标签: ios swift core-data nsfetchedresultscontroller