Swift错误:无法将'Int32'类型的值转换为预期的参数类型'Int32'

时间:2015-11-28 20:17:09

标签: swift

我正在尝试编写一对函数来将String转换为[UInt8]字节数组,然后再返回。

作为来自[UInt8] -> String的函数的一部分,我正在尝试将单个Int32转换为Character

let num : Int32 = 5
let char = Character(_builtinUnicodeScalarLiteral: num)

但我收到了这个奇怪的错误:

error: cannot convert value of type 'Int32' to expected argument type 'Int32'
let char = Character(_builtinUnicodeScalarLiteral: num)
                                                   ^~~
编辑:我设法使用不同的代码编写我的函数,但我仍然对错误的含义感到好奇。

2 个答案:

答案 0 :(得分:1)

您应该避免使用前缀为_的类型,方法和初始化程序,因为它们是私有的,并且是实现细节。对于名称中包含builtin的任何内容也是如此。

Character期望UnicodeScalar可以从UInt32(以及UInt8)构建:

let num : UInt32 = 65
let g = Character(UnicodeScalar(num))
print(g) // prints 'A'

您的错误发生是因为您传递Int32而Swift期望Builtin.Int32,这是一种不同的类型。错误信息不够清楚。

答案 1 :(得分:0)

你可以这样使用那个构造函数

let num: Int32 = 5
let g = Character(_builtinUnicodeScalarLiteral: num.value)