我得到了
'[NSDictionary]!? is not convertible to [NSDictionary]?' error on following code.
var jsonResult:[NSDictionary]! = [NSJSONSerialization.JSONObjectWithData(urlData, options:NSJSONReadingOptions.MutableContainers, error: &error1)] as? [NSDictionary]!
为什么会发生这种情况?
最佳答案
首先:删除NSJSONSerialization.JSONObjectWithData
周围的[
和]
,如果把它放在数组中会变得非常困难转换它。
使用以下内容
var jsonResult = NSJSONSerialization.JSONObjectWithData(urlData, options:NSJSONReadingOptions.MutableContainers, error: &error1) as! NSDictionary
as?
可选择强制转换为给定类型。因此,您最终会得到 [NSDictionary]!
-> [NSDictionary]!?
类型的可选类型,它实际上无法转换为 [NSDictionary]!
但无法包装。这对于选择性强制转换和展开是没有意义的,只需首先使用展开强制转换即可。
apple docs在这种有关可选的情况下真的很有帮助!
对我的第一点进行更多解释:您将 NSJSONSerialization.JSONObjectWithData 的返回值放入数组中,这将导致 [AnyObject?] 无法真正转换为 [AnythingElse ] 因为你必须在转换之前解开选项。我不知道有任何内置的方法可以做到这一点。并且在您的场景中没有任何意义。在所有转换之后,您仍然可以将值包装在一个数组中,您可以通过
var jsonResult = [NSJSONSerialization.JSONObjectWithData(urlData, options:NSJSONReadingOptions.MutableContainers, error: &error1) as! NSDictionary]
关于ios - [NSDictionary]!?不能转换为 [NSDictionary]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32529724/