如何将cstring转换为swift6中的字符串?

问题描述 投票:0回答:1
以下代码在Swift6中发出警告:

'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是模棱两可的,没有类型的注释

我如何摆脱这种?

swift string migration c-strings swift6
1个回答
0
投票
写作:

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

。
Instead,您可以使用
UTF8.CodeUnit
,它直接采用
UInt8
CChar
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.