加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 04:34:49 所属栏目:百科 来源:网络整理
导读:我正在尝试使用 this NSHipster article中的一段示例代码,大约是页面的一半. var inputStream: NSInputStreamvar outputStream: NSOutputStreamNSStream.getStreamsToHostWithName(hostname: "nshipster.com",port: 5432,inputStream: inputStream,outputStr
我正在尝试使用 this NSHipster article中的一段示例代码,大约是页面的一半.

var inputStream: NSInputStream
var outputStream: NSOutputStream

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

我把它放在一个操场上,还有import Foundation,我收到了这个错误.

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

这个错误指向第一个参数,它显然是String类型!而不是虚空.

我稍微更改了代码,从方法调用中提取定义.这是完整的游乐场:

import Foundation

var inputStream: NSInputStream
var outputStream: NSOutputStream

let host = "nshipster.com"
let port = 5432
NSStream.getStreamsToHostWithName(hostname: host,port: port,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中的错误?

编辑:我已经提交了一份带有更正NSHipster代码的pull request.

解决方法

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

var inputStream:NSInputStream?
var outputStream:NSOutputStream?

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读