的第一步是将您的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