[NSDictionary]!?不能转换为 [NSDictionary]?
[NSDictionary]!? is not convertible to [NSDictionary]?
我得到
'[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]!
但无法包装。 optinally cast 和 unwrap 没有意义,首先使用 unwrapping cast。
apple docs 在这种情况下关于可选的情况真的很有帮助!
关于我的第一点的更多解释:您将 NSJSONSerialization.JSONObjectWithData
的返回值放在一个数组中,这将导致 [AnyObject?] 不能真正转换为 [AnythingElse],因为您必须在投射之前解开选项。我不知道有任何内置的方法可以做到这一点。并且在您的场景中没有任何意义。你仍然可以在所有转换之后将值包装在一个数组中,你可以通过
var jsonResult = [NSJSONSerialization.JSONObjectWithData(urlData, options:NSJSONReadingOptions.MutableContainers, error: &error1) as! NSDictionary]
我得到
'[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]!
但无法包装。 optinally cast 和 unwrap 没有意义,首先使用 unwrapping cast。
apple docs 在这种情况下关于可选的情况真的很有帮助!
关于我的第一点的更多解释:您将 NSJSONSerialization.JSONObjectWithData
的返回值放在一个数组中,这将导致 [AnyObject?] 不能真正转换为 [AnythingElse],因为您必须在投射之前解开选项。我不知道有任何内置的方法可以做到这一点。并且在您的场景中没有任何意义。你仍然可以在所有转换之后将值包装在一个数组中,你可以通过
var jsonResult = [NSJSONSerialization.JSONObjectWithData(urlData, options:NSJSONReadingOptions.MutableContainers, error: &error1) as! NSDictionary]