Как преобразовать NSSet в массив [String]?

У меня есть NSSet of Strings, и я хочу преобразовать его в [String]. Как я могу это сделать?

4 ответа

Решение

Я хотел бы использовать map:

let nss = NSSet(array: ["a", "b", "a", "c"])

let arr = nss.map({ String($0) })  // Swift 2

let arr = map(nss, { "\($0)" })  // Swift 1

Swift 2

Свифт 1

Если у тебя есть Set<String>Вы можете использовать конструктор Array:

let set: Set<String> = // ...
let strings = Array(set)

Или, если у вас есть NSSet, есть несколько разных вариантов:

let set: NSSet = // ...
let strings1 = set.allObjects as? [String] // or as!
let strings2 = Array(set as! Set<String>)
let strings3 = (set as? Set<String>).map(Array.init)
let set = NSSet(array: ["a","b","c"])
let arr = set.allObjects as! [String]

Вы могли бы сделать что-то вроде этого.

let set = //Whatever your set is
var array: [String] = []

for object in set {
     array.append(object as! String)
}
Другие вопросы по тегам