的第一步是將您的NSArray
轉換爲具有適當的類型,在這種情況下,它看起來像你想:
if let array = myArray as? [[String]] {
}
然後你有多種選擇,其中最有效的的可能是一個嵌套的迭代:
let myArray = NSArray(arrayLiteral:
NSArray(arrayLiteral: "150.10,310.20"),
NSArray(arrayLiteral: "400.10,310.20", "100,200")
)
if let source = myArray as? [[String]] {
for array in source {
for element in array {
print(element.componentsSeparatedByString(","))
}
}
}
// -> ["150.10", "310.20"]
// ["400.10", "310.20"]
// ["100", "200"]
如果所有你想要做的是提取點,你可以使用地圖:
if let source = myArray as? [[String]] {
print(source.map {
$0.map { $0.componentsSeparatedByString(",") }
}
)
}
// -> [[["150.10", "310.20"]], [["400.10", "310.20"], ["100", "200"]]]
如果你想點摺疊成一個數組,你可以使用flatMap,如氦,這會變成數組的數組,成爲一個簡單的數組指出:
if let source = myArray as? [[String]] {
print(source.flatMap {
$0.map { $0.componentsSeparatedByString(",") }
}
)
}
// -> [["150.10", "310.20"], ["400.10", "310.20"], ["100", "200"]]
當然,您還可以使用另一個地圖調用將其提取爲[[Double]]而不是[[String]]:
if let source = myArray as? [[String]] {
print(source.map {
$0.map { $0.componentsSeparatedByString(",").map { Double($0)! } }
})
}
// -> [[150.1, 310.2], [400.1, 310.2], [100.0, 200.0]]
如果您顯示myArray的聲明以及某些藥物實際的問題是。 –
myArray是對象及其向量的二維數組。然後,我循環遍歷每個對象,並拉出它的每個向量來測試,因此newArray的每個元素都是一個字符串vectory,例如。 「150.10,310.00」在迅速我似乎無法找到一種方法來分離向量。它會讓我做newArray.componentsSeparatedByString(「,」),但不newArray [I] .componentsSeperatedByString(「,」) – TazmanNZL