我有一个看起来像这样的数组:
var arr: [Int] = [1,2,3,4,5]
为了打印这个,我想将它转换为:var newArr: [String?] = ["1","2","3","4","5"]
我该如何解决这个问题?
var arr: [Int] = [1,2,3,4,5]
为了打印这个,我想将它转换为:var newArr: [String?] = ["1","2","3","4","5"]
我该如何解决这个问题?
Airspeed Velocity 给出了答案:
var arr: [Int] = [1,2,3,4,5]
var stringArray = arr.map { String($0) }
或者,如果您想使 stringArray 的类型为 [String?]
var stringArray = arr.map { Optional(String($0)) }
这种形式的map语句是Array类型的一个方法。它在数组中的每个元素上执行您提供的闭包,并将所有这些调用的结果组合成一个新的数组。它将一个数组映射为一个结果数组。 传入的闭包应该返回与输出数组中对象类型相同的对象。
我们也可以使用更长的形式来书写:
var stringArray = arr.map {
(number: Int) -> String in
return String(number)
}
如果您只需要将整数值安装到自定义表视图单元格中,则可能应该将数组保留为整数,并在cellForRowAtIndexPath
方法中将这些值安装到单元格中。
func tableView(tableView: UITableView,
cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell",
forIndexPath: indexPath) as! MyCustomCellType
cell.textLabel?.text = "\(arr[indexPath.row])"
return cell
}
如果您只想打印该数组,最好将其保留为整数对象的数组,并直接打印它们:
arr.forEach { print($0) }
更新:Swift 5
您可以使用以下代码来完成此操作:
var arr: [Int] = [1,2,3,4,5]
let stringArray = arr.map(String.init)
输出:
["1", "2", "3", "4", "5"]
您应该使用
cell.textLabel?.text = "\(arr[indexPath.row])"
Array(0...100).map { String($0) }
如果您想做类似Python的.join()
,Perl的join()
,PHP的implode()
的操作,您可以使用.joined(separator: String)
--但仅限于字符串值列表。
所以,您仍需要像上面所示的.map
来进行转换,但一旦完成后,它看起来更像您熟悉的样子:
let stringifiedNumberList = numberList
.map { String($0) }
.joined(separator: ", ")
如果你想要变得高级一点...
一个酷炫的事情是在输出的最后一个元素之前加入 "and" 或 "or",以提供牛津逗号分隔的列表,通过利用已经存在的 .map
。使用 .enumerated()
方法可以帮助你获得 map 迭代过程中每个元素的索引:
let stringifiedNumberList = numberList
.enumerated()
.map {
if $0.0 == (numberList.count - 1) {
return "and " + String($0.1)
} else {
return String($0.1)
}
}
.joined(separator: ", ")
像这样声明整数数组:
let integerArray = [1 , 2 ,4 ,5]
像这样打印您的类型转换数组:
print(integerArray.map { String($0) })
您可以尝试将任何数据类型(如Float,Double,Int8等)进行类型转换,这里map将从数组中获取每个元素并更改为指定的数据类型,然后将其分配回您的数组。
arr.map { String($0) }
. If you really want the strings to be optional,arr.map { Optional(String($0)) }
- Airspeed Velocity