如何修复'无法将'[Any]'类型的值转换为强制类型'String'的错误

时间:2019-07-19 14:02:35

标签: swift websocket socket.io swiftui

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

我已经尝试使用“ guard var data = socketData else {return}”,但是出现此错误: 条件绑定的初始化程序必须具有Optional类型,而不是'[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'类型

1 个答案:

答案 0 :(得分:0)

得到解决方案:

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