如何快速修复“无法将“[Any]"类型的值转换为“强制转换"中的“字符串"错误 [英] How to fix 'Cannot convert value of type '[Any]' to type 'String' in coercion' error in swift

查看:37
本文介绍了如何快速修复“无法将“[Any]"类型的值转换为“强制转换"中的“字符串"错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 socket.io websocket 从后端获取数据,并使用 environmentObject 将其推送到 View(SwiftUI),但问题是我无法获取数据,因为它的类型为 Any

I use a socket.io websocket to get data from my backend and I push it with an environmentObject to the View(SwiftUI) but the problem is that I can't get the data because it is of type Any

我已经尝试使用guard var data = socketData else { return }",但是出现了这个错误:条件绑定的初始值设定项必须具有 Optional 类型,而不是 '[Any]'

I already tried to use "guard var data = socketData else { return }" but there is this error: Initializer for conditional binding must have Optional type, not '[Any]'

import SwiftUI
import SocketIO
import Combine

let manager = SocketManager(socketURL: URL(string: "http://localhost:30000/ios")!, config: [.log(true), .compress])
let socket = manager.defaultSocket

class Socket: BindableObject {
    let didChange = PassthroughSubject<Socket,Never>()
    var days: String = "Loading..." {
        didSet {
            didChange.send(self)
        }
    }
    static let sharedInstance = Socket()
    init() {

        socket.on(clientEvent: .connect) {data, ack in
            print("socket connected")
        }
        socket.on("dailyWeather") {data, ack in
            print("just a test")
            var data = data as String //Here is the current error
            /*do {
                let decoder = JSONDecoder()
                decoder.keyDecodingStrategy = .convertFromSnakeCase
                let city = try decoder.decode(day.self, from: data)
                self.weatherData.city = city.name
            } catch {
                print(error)
            }*/
            self.days = "cur"
        }
    }


    func establishConnection() {
        socket.connect()
    }

    func closeConnection() {
        socket.disconnect()
    }
}

错误:无法在强制转换中将[Any]"类型的值转换为String"类型

Error: Cannot convert value of type '[Any]' to type 'String' in coercion

推荐答案

得到解决方案:

var arr = data[0]
yourString: String = (arr as AnyObject).description

这篇关于如何快速修复“无法将“[Any]"类型的值转换为“强制转换"中的“字符串"错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆