【问题标题】:Assign array of items to selected item - Many to Many relationship in core data将项目数组分配给选定项目 - 核心数据中的多对多关系
【发布时间】:2021-10-23 12:23:10
【问题描述】:

我正在使用 Core Data 和 Swift 5.5 开发 iOS 应用 我有 2 个实体 ( Category ) 和 ( Item ),我在这些实体之间创建了多对多关系,因此在 Category 中,它有 ( items ),在 Item 中,它有 ( categories )。

现在我想将多个项目分配给选定的类别,所以我尝试了这段代码,但没有成功

var selectedItems = [Item]()

let category = selectedCategory
category.items = selectedItems

do {
  try moc.save()
} catch {
  print(error.localizedDescription)
}

这种方式在一对多关系中运作良好,但在多对多关系中却行不通。 那么我该如何解决这个问题,或者如何将一组选定的项目分配给特定的类别?

【问题讨论】:

    标签: ios swift core-data


    【解决方案1】:

    您应该使用生成的添加(或删除)方法之一,而不是写入属性。如果关系名为items,您应该有两种方法addToItems 用于添加单个或多个Item

    所以试试

     category.addToItems(NSSet(array: selectedItems))
    

    【讨论】:

    • 谢谢,我试过这个方法,但它只接受一个项目,我试图传递一个项目数组,但它在下面给了我这个错误:调用实例方法'addToItems'没有完全匹配
    • 使用for 循环添加每个项目
    • @AdelBassiony 添加多个对象时需要一个 Set,我已经更新了答案
    • @JoakimDanielson 我尝试使用更新的解决方案,但我得到了同样的错误(调用实例方法'addToItems'没有完全匹配)
    • 关系名称是items?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多