gpt4 book ai didi

Swift 无法将表达式的类型 'Void' 转换为类型 'String!'

转载 作者:搜寻专家 更新时间:2023-10-31 08:21:38 25 4
gpt4 key购买 nike

我正在尝试使用来自 this NSHipster article 的一段示例代码,大约在页面的中间位置。

var inputStream: NSInputStream
var outputStream: NSOutputStream

NSStream.getStreamsToHostWithName(hostname: "nshipster.com",
port: 5432,
inputStream: &inputStream,
outputStream: &outputStream)

我已将它与 import Foundation 一起放在 playground 中,但出现此错误。

Playground execution failed: error: <REPL>:6:10: error: cannot convert the expression's type 'Void' to type 'String!'
NSStream.getStreamsToHostWithName(hostname: "nshipster.com",
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

此错误指向第一个参数,它显然是 String! 类型而不是 Void

我稍微更改了代码,以从方法调用中提取定义。这是完整的 Playground :

import Foundation

var inputStream: NSInputStream
var outputStream: NSOutputStream

let host = "nshipster.com"
let port = 5432
NSStream.getStreamsToHostWithName(hostname: host,
port: port,
inputStream: &inputStream,
outputStream: &outputStream)

现在错误指示第三个参数,大概对前两个很满意。

Playground execution failed: error: <REPL>:10:18: error: cannot convert the expression's type 'Void' to type 'inout NSInputStream'
inputStream: &inputStream,
^~~~~~~~~~~~

我不知道如何以相同的方式为 inputStream 和 outputStream 提取 AutoreleasingUnsafePointer 变量,但我认为原始示例代码应该可以工作。这是我(和 Mattt 的)代码中的错误,还是 Swift 中的错误?

编辑:我已经提交了 pull request使用更正后的 NSHipster 代码。

最佳答案

好吧,简短的回答是你需要传入可选项而不是非可选项(任何正在寻找 inout 对象的东西)

var inputStream:NSInputStream?
var outputStream:NSOutputStream?

NSStream.getStreamsToHostWithName("nshipster.com", port: 5432, inputStream: &inputStream, outputStream: &outputStream)

也就是说,它现在可以编译,但不会运行,因为 NSStream 显然没有 getStreamsToHostWithName 方法(至少在我导入的 Foundation 中)没关系,这是一个仅限 iOS 的调用,所以它没有'不适用于 Playground 设置为 OSX。设置为 iOS 似乎没问题。

关于Swift 无法将表达式的类型 'Void' 转换为类型 'String!',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24461520/

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