2015-07-27 27 views

cevap

11

Ben map kullanırsınız:

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

Swift 1

+0

hızlı 2 - nsset'in bir harita yöntemine sahip olmadığını ve ikincisinin benden yapmaya zorladığını söyledi! NSString - ama biraz dynamicCastObjCClassUnconditional almak biter. Yani her ikisi de neden olursa olsun – noobprogrammer

+0

Benim için çalışır ([ekran görüntüsü] (https://www.evernote.com/l/AFnfzlnodJtJBIq_wK4tRvGdoCwfTU5_2Ck)). Belki Xcode'u yükseltin mi? 7b4 kullanıyorum. – Moritz

+0

Ve Xcode 6 sürümü için [ekran görüntüsü] (https://www.evernote.com/l/AFmdJD9SvyVMYLxPtmGj9aRVz6TolnczF7Q). :) – Moritz

1

Böyle bir şey yapabilirdi.

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

for object in set { 
    array.append(object as! String) 
} 
+0

bu ans günümü –

2
let set = NSSet(array: ["a","b","c"]) 
let arr = set.allObjects as! [String] 
4

Eğer bir Set<String> varsa, Array yapıcısı kullanabilirsiniz:

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

Yoksa NSSet varsa, birkaç farklı seçenek vardır:

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) 
İlgili konular