在没有更多上下文的情况下,表达式的类型是模棱两可的。 <SocketEngine> 类

Posted

技术标签:

【中文标题】在没有更多上下文的情况下,表达式的类型是模棱两可的。 <SocketEngine> 类【英文标题】:Type of expression is ambiguous without more context. <SocketEngine> Class 【发布时间】:2017-10-05 14:12:42 【问题描述】:

我正在使用 Xcode 9 和 Swift 4。

我有一个用 Swift 3 和 Xcode 8 编写的项目。

我试图在 Xcode 9 中运行此代码。在 Xcode 将 Swift 3 转换为 Swift 4 后,我遇到了以下错误:

没有更多上下文的表达类型是模棱两可的

Here is the link from where I was using the Swift file.

错误出现在以下方法中:

private func handleBase64(message: String) 
    // binary in base64 string
    let noPrefix = message[message.index(message.startIndex, offsetBy: 2)..<message.endIndex]

    if let data = NSData(base64Encoded: noPrefix, options: .ignoreUnknownCharacters) 
        client?.parseEngineBinaryData(data as Data)
    

【问题讨论】:

【参考方案1】:

不应将库的函数更新手动到 Swift 4。

再次下载库,it has now been updated to Swift 4。

【讨论】:

太棒了。谢谢您的帮助。让我们试一试。【参考方案2】:

你应该改变:

if let data = Data(base64Encoded: noPrefix, options: .ignoreUnknownCharacters) 
            client?.parseEngineBinaryData(data)
        

到 ::::::

if let data = Data(base64Encoded: **String(noPrefix)**, options: .ignoreUnknownCharacters) 
            client?.parseEngineBinaryData(data)
        

【讨论】:

以上是关于在没有更多上下文的情况下,表达式的类型是模棱两可的。 <SocketEngine> 类的主要内容,如果未能解决你的问题,请参考以下文章

表达式类型 bool 在没有更多上下文的情况下是模棱两可的

Alamofire 类型的表达式在没有更多上下文的情况下是模棱两可的

如何修复“表达式类型'@lvalue CGRect/CGSize'在没有更多上下文的情况下模棱两可”?

在没有更多上下文的情况下使表达式类型模棱两可

在没有更多上下文的情况下使表达式类型模棱两可

Swift for 循环“表达式类型 '[[String : String]]' 在没有更多上下文的情况下模棱两可