Как я могу добавить свои HKObjectTypes в NSSet. Он всегда возвращается пустым. Есть способ лучше ??? func getPermsFromOptions (_ options: NSArray) -> NSSet {var readPermSet = NSSet () ...

0
grooot 9 Апр 2021 в 11:37

2 ответа

Лучший ответ
readPermSet.adding(val)

Добавление не является изменяющим методом, оно возвращает новый набор, в который добавлено другое значение.

Попробуйте:

var readPermSet: Set<HKObjectType> = []

А также

readPermSet.insert(val)
1
Shadowrun 9 Апр 2021 в 08:39

Вы не можете добавить в 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;
 }
1
Sweeper 9 Апр 2021 в 08:45