无法将“Int”类型的值转换为预期的参数类型“(inout UnsafeMutableBufferPointer<_>, inout Int) throws -> Void”
Posted
技术标签:
【中文标题】无法将“Int”类型的值转换为预期的参数类型“(inout UnsafeMutableBufferPointer<_>, inout Int) throws -> Void”【英文标题】:Cannot convert value of type 'Int' to expected argument type '(inout UnsafeMutableBufferPointer<_>, inout Int) throws -> Void' 【发布时间】:2019-05-15 05:07:24 【问题描述】:这行var machine = [CChar](_unsafeUninitializedCapacity: size, initializingWith: 0)
抛出错误。
错误信息:
无法将“Int”类型的值转换为预期的参数类型“(inout UnsafeMutableBufferPointer<_>, inout Int) throws -> Void”
这是我的代码:
struct MailTemplate
let destination = "test@gmail.com"
let subject = "Test"
let body:String
init()
let appVersion: String! = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String
var platform: String
var size: Int = 0
sysctlbyname("hw.machine", nil, &size, nil, 0)
var machine = [CChar](_unsafeUninitializedCapacity: size, initializingWith: 0)
sysctlbyname("hw.machine", &machine, &size, nil, 0)
return String.fromCString(machine)!
body = "Email Body"
【问题讨论】:
【参考方案1】:我得到了答案,
initializingWith: _,_ in
这样:
var machine = [CChar](_unsafeUninitializedCapacity: size, initializingWith: _,_ in)
【讨论】:
【参考方案2】:inout
参数是那些将被我们传递给它的函数修改的参数。因此,您需要将其传递为&size
。
【讨论】:
当我传递大小时,我得到了这个错误:无法将类型“Int”的值转换为预期的参数类型“(inout UnsafeMutableBufferPointer以上是关于无法将“Int”类型的值转换为预期的参数类型“(inout UnsafeMutableBufferPointer<_>, inout Int) throws -> Void”的主要内容,如果未能解决你的问题,请参考以下文章
无法将类型“[Surah]”的值转换为预期的参数类型“Range<Int>”
如何在此 for 循环中修复'无法将'String'类型的值转换为预期的参数类型'Int'
在 swift assert(0) 中无法将 Int 类型的值转换为预期的参数类型 Bool
无法将“Binding<Int>”类型的值转换为预期的参数类型“Binding<_>”
无法将类型“Range<Int32>”的值转换为预期的参数类型“Range<_>”
无法将“Int”类型的值转换为预期的参数类型“(inout UnsafeMutableBufferPointer<_>, inout Int) throws -> Void”