gpt4 book ai didi

swift - sysctlbyname 在 swift 1.2 中失败

转载 作者:行者123 更新时间:2023-11-28 10:24:31 25 4
gpt4 key购买 nike

我让这段代码在 swift 1.1 中运行不确定如何修复它

var deviceModelIdentifier: String {
var size : UInt = 0 // Swift 1.2: var size : Int = 0 (as Ben Stahl noticed in his answer)
//sysctlbyname(_: UnsafePointer<Int8>, _: UnsafeMutablePointer<Void>, _: UnsafeMutablePointer<Int>, _: UnsafeMutablePointer<Void>, _: Int)
sysctlbyname("hw.machine", nil, &size, nil, 0)
var machine = [CChar](count: Int(size), repeatedValue: 0)
sysctlbyname("hw.machine", &machine, &size, nil, 0)
return String.fromCString(machine)!
}

错误:无法使用类型为“(String, nil, inout UInt, nil, Int)”的参数列表调用“sysctlbyname” sysctlbyname("hw.machine", nil, &size, nil, 0) ^错误:无法使用类型为“(String, inout [(CChar)], inout UInt, nil, Int)”的参数列表调用“sysctlbyname” sysctlbyname("hw.machine", &machine, &size, nil, 0)

感谢任何帮助

最佳答案

解决方案在您代码的注释中:Size 现在是 Int 而不是 1.2 中的 Uint,因此编译:

var deviceModelIdentifier: String {
var size : Int = 0
sysctlbyname("hw.machine", nil, &size, nil, 0)
var machine = [CChar](count: size, repeatedValue: 0)
sysctlbyname("hw.machine", &machine, &size, nil, 0)
return String.fromCString(machine)!
}

(如果愿意,您也可以编写 var size : size_t = 0)

当您遍历不安全指针样板时,错误消息提示:

note: expected an argument list of type '(UnsafePointer< Int8 >, UnsafeMutablePointer< Void >, UnsafeMutablePointer<Int>, UnsafeMutablePointer< Void >, Int)'

关于swift - sysctlbyname 在 swift 1.2 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29545132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com