swift - 将 AnyObject 转换为特定类

标签 swift casting socket.io anyobject

我正在使用 socket.io Swift 库。使用以下代码行,

socket.on("info") { (dataArray, socketAck) -> Void in
            let user = dataArray[0] as? User
            print(user._id)
}

dataArray[0] 是一个有效对象,但 user转换 之后似乎是nil

因为 dataArray[0] 作为 AnyObject 返回, 我如何将 AnyObject 转换为 User 对象?或者以某种方式设法用不同的方法做我想做的事?

Socket Class

User Class

最佳答案

从这条线之后

let user = dataArray[0] as? User

你在 user 中有一个 nil 值,这意味着你在 的第一个位置没有 User 值数据数组.

由于 dataArray 来自服务器(我猜)它可能包含 User 的序列化版本。

现在我们真的需要知道 dataArray[0] 到底是什么。然而……

如果 dataArray[0] 包含 NSData

在这种情况下试试这个

let json = JSON(dataArray[0] as! NSData)
let user = User(json:json)

关于swift - 将 AnyObject 转换为特定类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38375567/

相关文章:

javascript - EventTarget 类型上不存在属性 innerWidth

java - 使用 Android 应用程序、服务、套接字 + 谷歌地图 API - 什么是正确的方法?

iphone - Swift 隐藏后无法显示后退按钮

c# - 在 C# 中使用相同的 COM 接口(interface)在 2 个不同的库之间进行转换

java - (String)value 和 value.toString() , new Long(value) 和 (Long)value 之间的区别

node.js - 用户可以访问我的网站并发送垃圾邮件 Socket.emit(something); 吗?或者对于这种安全问题有保护吗?

使用 tsung 测试 websocket 服务器

ios - 不断询问 iTunes Sandbox 帐户凭据

Swift 协议(protocol)一致性

ios - 为什么我的项目在删除操作后会出现一些水平线?