Swift设置为数组?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

NSSet可以转换为Array使用set.allObjects()但是,新的方法中没有这样的方法。Set(与SWIFT 1.2介绍)。仍然可以通过将SWIFT集转换为NSSet并使用allObjects()方法

提问于
用户回答回答于

可以使用给定SWIFT中的所有元素创建数组Set简单地

let array = Array(someSet)

这是因为Set符合SequenceType协议和Array可以用序列初始化

let mySet = Set(["a", "b", "a"])  // Set<String>
let myArray = Array(mySet)        // Array<String>
print(myArray) // [b, a]
用户回答回答于

初始化器以获得ArraySet...init(_:)有以下声明:

init<S>(_ s: S) where S : Sequence, Element == S.Iterator.Element

用法:

let stringSet = Set(arrayLiteral: "car", "boat", "car", "bike", "toy")    
let stringArray = Array(stringSet)

print(stringArray)
// may print ["toy", "car", "bike", "boat"]
let stringSet = Set(["car", "boat", "bike", "toy"])
let stringArray = stringSet.sorted()

print(stringArray)
// will print ["bike", "boat", "car", "toy"]
let stringSet = Set(arrayLiteral: "car", "boat", "car", "bike", "toy") 
let stringArray = stringSet.filter { $0.characters.first != "b" }

print(stringArray)
// may print ["car", "toy"]
let intSet = Set([1, 3, 5, 2]) 
let stringArray = intSet.flatMap { String($0) }

print(stringArray)
// may print ["5", "2", "3", "1"]
let intSet = Set([1, 3, 5, 2])
// alternative to `let intArray = Array(intSet)`
let intArray = intSet.map { $0 }

print(intArray)
// may print [5, 2, 3, 1]

扫码关注云+社区