从“()”转换为不相关类型“String”总是失败

win*_*ton 1 arrays ios pubnub swift swift2

我试图从完成块中单步执行 [AnyObject] 数组,并将这些项目转换为字符串,以便我可以将它们放入 tableView 中。但是,当我尝试附加数组的各个值时,我收到此错误:Cast from '()' to unrelated type 'String' always fails。这是代码:

client.historyForChannel(ids, start: nil, end: nil, withCompletion: { (result, status) -> Void in

    if status == nil {
        if result!.data.messages.count > 0 {
            let historyMessages = result!.data.messages as? [String]
            for value in historyMessages!{
                self.messagesArray.append(value) as? String //error
            }
        }
    }
})
Run Code Online (Sandbox Code Playgroud)

如果有帮助,我正在使用 PubNub 在我的 Swift 应用程序中创建/存储消息。

谢谢!

Bal*_*Ben 5

当你写下

self.messagesArray.append(value) as? String
Run Code Online (Sandbox Code Playgroud)

你可能的意思是

self.messagesArray.append(value as? String)
Run Code Online (Sandbox Code Playgroud)

虽然

self.messagesArray.append(value)
Run Code Online (Sandbox Code Playgroud)

应该足够了,因为historyMessages已经是 type [String]!

该错误表明您正在将 的结果self.messagesArray.append(value)(这是Void因为append没有返回任何内容)转换为String,这总是失败。

顺便说一句,您的代码使用的感叹号比应有的多。您应该使用guard-let 来确保您的变量不为零。