'Init(cstring :)'已弃用:使用字符串(解码:数组,AS::: utf8.self),而是在截断了零终止后。
var size = 0 sysctlbyname("hw.model", nil, &size, nil, 0) var modelIdentifier: [CChar] = Array(repeating: 0, count: size) sysctlbyname("hw.model", &modelIdentifier, &size, nil, 0) return String(cString: modelIdentifier)
写作:
return String(decoding: modelIdentifier, as: UTF8.self)
产生错误:
表达的type是模棱两可的,没有类型的注释
我如何摆脱这种?
return String(decoding: modelIdentifier, as: UTF8.self)
产生错误:
Type of expression is ambiguous without a type annotation
不幸的是,这是因为
String(decoding:as:)
init<C, Encoding>(
decoding codeUnits: C,
as sourceEncoding: Encoding.Type
) where C : Collection, Encoding : _UnicodeEncoding, C.Element == Encoding.CodeUnit
I.E。,需要是codeUnits
的集合,而不是UTF8.CodeUnit
UTF8.CodeUnit
,它直接采用
UInt8
:
CChar