如何在 Swift 中将 NSSet 转换为 NSMutableSet
How cast a NSSet to NSMutableSet in Swift
我在我的应用程序中使用核心数据,并且正在处理两个实体之间的多对多关系。
我的目标是让用户 select 通过使用表格视图并让用户 select 单元格将一个实体中的哪个实体与另一个实体相关联。
创建实体的 Class 时,"Lists" 被设置为 NSSet 类型,这很有意义,因为它不需要排序,而且我不想要一个以上那里的任何其他实体。
当我想将项目添加到 NSSet 时,我的问题就来了,据我所知,如果不使用 NSMutableSet,我将无法做到这一点。然后我获得 addObject
和 removeObject
。
除了我初始化 NSMutableSet 以拥有 "Lists" NSSet 当前拥有的一切的部分之外,我可以让一切正常工作。我尝试过的一切要么告诉我它总是会失败并且不会构建,要么最终意外返回 nil 并出错。
那么有没有一种方法可以正确更改 NSSet 的内容,或者至少将 NSSet 转换为 NSMutableSet,然后在我完成后,将该 NSMutableSet 转换回 NSSet?
如有必要,我可以添加一些我的代码,但我认为我解释得很好。
让我知道,我会添加您需要的任何详细信息。
提前致谢。
简单地创建一个可变副本:
var set = NSSet(objects: "One", "Two", "Three")
let mutableSet = set.mutableCopy() as! NSMutableSet
mutableSet.addObject("Four")
set = mutableSet
mutableCopy()
在您的 NSSet
上致电 mutableCopy()
:
let x = NSSet()
let y = x.mutableCopy() //returns NSMutableSet
我在我的应用程序中使用核心数据,并且正在处理两个实体之间的多对多关系。 我的目标是让用户 select 通过使用表格视图并让用户 select 单元格将一个实体中的哪个实体与另一个实体相关联。
创建实体的 Class 时,"Lists" 被设置为 NSSet 类型,这很有意义,因为它不需要排序,而且我不想要一个以上那里的任何其他实体。
当我想将项目添加到 NSSet 时,我的问题就来了,据我所知,如果不使用 NSMutableSet,我将无法做到这一点。然后我获得 addObject
和 removeObject
。
除了我初始化 NSMutableSet 以拥有 "Lists" NSSet 当前拥有的一切的部分之外,我可以让一切正常工作。我尝试过的一切要么告诉我它总是会失败并且不会构建,要么最终意外返回 nil 并出错。
那么有没有一种方法可以正确更改 NSSet 的内容,或者至少将 NSSet 转换为 NSMutableSet,然后在我完成后,将该 NSMutableSet 转换回 NSSet?
如有必要,我可以添加一些我的代码,但我认为我解释得很好。 让我知道,我会添加您需要的任何详细信息。
提前致谢。
简单地创建一个可变副本:
var set = NSSet(objects: "One", "Two", "Three")
let mutableSet = set.mutableCopy() as! NSMutableSet
mutableSet.addObject("Four")
set = mutableSet
mutableCopy()
在您的 NSSet
上致电 mutableCopy()
:
let x = NSSet()
let y = x.mutableCopy() //returns NSMutableSet