用数组值附加一个NSSet



如何将我的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;
}
readPermSet.adding(val)

加法不是一种变异方法,它返回一个添加了其他值的新集合

试试:

var readPermSet: Set<HKObjectType> = []

readPermSet.insert(val)

不能添加到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;
}

最新更新