如何在Swift中将NSSet强制转换为NSMutableSet

时间:2016-06-21 20:44:46

标签: ios swift core-data nsset nsmutableset

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

当创建实体的类时,“Lists”被设置为类型NSSet,这是有意义的,因为它不需要被排序,并且我不希望其中任何其他实体有多个。 / p>

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

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

如果有必要,我可以添加一些代码,但我认为我解释得非常好。 让我知道,我将添加您需要的任何细节。

提前谢谢。

2 个答案:

答案 0 :(得分:2)

只需创建一个可变副本:

var set = NSSet(objects: "One", "Two", "Three")
let mutableSet = set.mutableCopy() as! NSMutableSet
mutableSet.addObject("Four")
set = mutableSet

答案 1 :(得分:0)

mutableCopy()

NSSet上致电mutableCopy()

let x = NSSet()
let y = x.mutableCopy() //returns NSMutableSet