Swift,将对象转换为String,结果为nil

时间:2015-01-07 17:42:14

标签: ios swift casting

我在将两个字典值转换为字符串时遇到了一些麻烦,感觉就像几小时一样,基本上我所拥有的是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值时,它是否总是很复杂?

0 个答案:

没有答案