0

我在我的应用程序中使用 Core Data,并且正在处理两个实体之间的多对多关系。我的目标是让用户通过使用 tableview 并让用户选择单元格来选择一个实体中的哪个实体将与另一个实体相关。

创建实体的类时,“列表”设置为 NSSet 类型,这是有道理的,因为不需要对其进行排序,而且我不希望其中的任何其他实体超过一个。

当我想将项目添加到 NSSet 时,我的问题就出现了,据我所知,如果不使用 NSMutableSet,我就无法做到这一点。然后我获得addObjectremoveObject。除了我初始化 NSMutableSet 以拥有“列表”NSSet 当前拥有的所有内容的部分之外,我可以让一切正常工作。我尝试过的一切要么告诉我它总是会失败并且不会构建,要么最终会意外返回 nil 并出现错误。

那么有没有办法正确更改 NSSet 的内容,或者至少将 NSSet 转换为 NSMutableSet,然后当我完成后,将该 NSMutableSet 转换回 NSSet?

如有必要,我可以添加一些代码,但我认为我解释得很好。让我知道,我会添加你需要的任何细节。

先感谢您。

4

2 回答 2

2

只需创建一个可变副本:

var set = NSSet(objects: "One", "Two", "Three")
let mutableSet = set.mutableCopy() as! NSMutableSet
mutableSet.addObject("Four")
set = mutableSet
于 2016-06-21T20:50:24.470 回答
0

mutableCopy()

致电mutableCopy()您的NSSet

let x = NSSet()
let y = x.mutableCopy() //returns NSMutableSet
于 2016-06-21T20:55:07.417 回答