我有两个实体,一个称为橱柜,一个抽屉,具有一对多关系橱柜<->>抽屉。对于橱柜,我使用collectionView,并创建了一个到tableView(抽屉)的segue。但我不知道当我在 DrawerViewController 中时如何向 Cupboard 添加新的抽屉
我这样保存我的橱柜:
func saveCupboard(name: String, type: String){
let cupboard = NSEntityDescription.insertNewObject(forEntityName: "Cupboard", into: managedContext) as! Cupboard
cupboard.name = name
cupboard.type = type
saveContext()
}
lazy var managedContext: NSManagedObjectContext = {
var context = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
context.persistentStoreCoordinator = self.storeCoordinator
return context
}()
func saveContext() {
if managedContext.hasChanges {
do {
try managedContext.save()
} catch {
print(error.localizedDescription)
}
}
}
我的继续:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDrawer" {
let dst = segue.destination as! DrawerViewController
guard let indexPath = collectionView.indexPathsForSelectedItems else{
return
}
dst.cupboard = ??
}
}
也许有人可以帮助我。 预先感谢您
编辑:
lazy var fetchedResultsCtrl: NSFetchedResultsController<Cupboard> = {
let request: NSFetchRequest<Cupboard> = Cupboard.fetchRequest()
let sort = NSSortDescriptor(key: "name", ascending: true)
request.sortDescriptors = [sort]
let fetchedCtrl = NSFetchedResultsController(fetchRequest: request, managedObjectContext: appDelegate.coreDataResource.managedContext, sectionNameKeyPath: nil, cacheName: nil)
fetchedCtrl.delegate = self
return fetchedCtrl
}()
最佳答案
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDrawer" {
let dst = segue.destination as! DrawerViewController
guard let indexPath = collectionView.indexPathsForSelectedItems else{
return
}
dst.cupboard = cupboards[indexPath.row] as! Cupboard //Pass the cupboard to DrawerViewController.
}
}
您可以像上面一样将橱柜传递给 DrawerViewController。然后在 DrawerViewController 中添加新抽屉时,您只需设置
let newDrawer = Drawer(context:moc)
newDrawer.cupboard = cupboard
因为橱柜和抽屉之间存在一对多的关系。
关于ios - 在核心数据关系中添加子对象 - Swift4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47478693/