附加一个带有数组值的 NSSet

append a NSSet with array values

如何将我的 HKObjectType 附加到 NSSet 中。
它总是 returns 空的。还有更好的办法吗???

     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)

添加不是一种变异方法,它returns一个添加了另一个值的新集合

试试:

var readPermSet: Set<HKObjectType> = []

readPermSet.insert(val)

您不能添加到 NSSet。您 可以 添加到 NSMutableSet:

var readPermSet = NSMutableSet()
...
readPermSet.add(val)

adding 是 Swift 的一种方法,即 returns 一个包含所有相同元素的新集合,加上新元素.您在这里忽略了它的 return 值。

既然你在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;
 }