我在将两个字典值转换为字符串时遇到了一些麻烦,感觉就像几小时一样,基本上我所拥有的是socket数据(通知!.userInfo),我需要与facebook数据进行交叉检查,因此我需要投一个键值一个字符串。
我在下面有两个值,我需要检查它们是否相等,我认为将它们转换为字符串将呈现相同的结果,但其中一个变为零。谁能指点我可能会翘起来的地方?
我已经标记了值1和2,以便更容易理解。
let data: Dictionary = notification!.userInfo!["data"]![0] as Dictionary<NSObject, AnyObject>
println(data["users"]?["fb_id"]!) //1.
println(FacebookManager.instance.user!["id"]) //2.
println(data["users"]!["fb_id"]! as? String) //1. This is the cast that fails
println(FacebookManager.instance.user!["id"] as? String) //2.
打印什么:
Optional(10202362731884832) //1.
Optional(10202362731884832) //2.
nil //1.
Optional("10202362731884832") //2.
如果我使用'_stdlib_getTypeName'打印对象,我会
_TtSq //1.
_TtSQ //2.
所以肯定存在一些差异,但我不确定它是什么。
修改 如果我将它们转换为NSNumber,那么先前失败的那个将起作用,而另一个将失败(变为零) 我不知道这是否更清楚。
编辑2: 如果我将失败的值转换为NSString,然后获取.stringValue,它将起作用。在Swift中使用Dictionary值时,它是否总是很复杂?