将[Float]转换为变量参数

时间:2017-12-06 14:47:17

标签: swift variables arguments nsstring

我尝试使用NSString(format: , arg...)通过增加此标签中的一个或多个值来更新UILabel。

要做到这一点,我有一个函数,我接收args为Float...(这是我想要的),我发现存储它们的唯一解决方案是使用数组[Float](这不是我想要的)。 然后,我修改我的数组的每个值来显示它。

要修改我的UILabel的文本,我使用的是label.text = NSString(format: "%f and %f", myArrayOfFloat),但它不起作用。 NSString将数组作为单个值,而不是数组。

如果有人有解决方案,我全心全意。

1 个答案:

答案 0 :(得分:1)

有一个

NSString(format: String, arguments argList: CVaListPointer)

初始化程序,它将替换值作为CVaListPointer (这是C中的va_list的Swift等价物)。例如:

let myArrayOfFloat: [Float] = [1.2, 3.4]
let text = withVaList(myArrayOfFloat) {
    NSString(format: "%f and %f", arguments: $0)
}
print(text) // 1.200000 and 3.400000

但是,使用

创建String更简单
String(format: String, arguments: [CVarArg])

初始化程序,它将替换值作为单个数组参数。例如:

let myArrayOfFloat: [Float] = [1.2, 3.4]
let text = String(format: "%f and %f", arguments: myArrayOfFloat)
print(text) // 1.200000 and 3.400000