附加一个带有数组值的 NSSet
Posted
技术标签:
【中文标题】附加一个带有数组值的 NSSet【英文标题】:append a NSSet with array values 【发布时间】:2021-04-09 08:37:29 【问题描述】:如何将我的 HKObjectTypes 附加到 NSSet。 它总是返回空。有更好的方法吗???
func getPermsFromOptions(_ options: NSArray) -> NSSet
var readPermSet = NSSet()
var optionKey: String
var val: HKObjectType
for i in options
optionKey = i as! String
val = HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier(rawValue: optionKey))!
readPermSet.adding(val)
print("set", readPermSet) //always empty
return readPermSet;
【问题讨论】:
var readPermSet = NSSet()
=> var readPermSet = NSMutabmeSet()
然后是readPermSet.add(val)
,但你为什么继续使用NSArray
和NSSet
?你不能改用 Swift Set
和 Array
吗?
【参考方案1】:
readPermSet.adding(val)
添加不是一种变异方法,它返回一个添加了其他值的新集合
试试看:
var readPermSet: Set<HKObjectType> = []
和
readPermSet.insert(val)
【讨论】:
【参考方案2】:您不能添加到NSSet
。您可以添加到NSMutableSet
:
var readPermSet = NSMutableSet()
...
readPermSet.add(val)
adding
是 Swift 的一个方法,它返回一个包含所有相同元素以及新元素的新集合。您在这里忽略了它的返回值。
既然你在 Swift 中,为什么不使用Set<HKObjectType>
和[String]
?
func getPermsFromOptions(_ options: [String]) -> Set<HKObjectType>
var readPermSet = Set<HKObjectType>()
for optionKey in options
let val = HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier(rawValue: optionKey))!
readPermSet.insert(val)
print("set", readPermSet)
return readPermSet;
【讨论】:
以上是关于附加一个带有数组值的 NSSet的主要内容,如果未能解决你的问题,请参考以下文章