[英]NSDictionary in Swift:Cannot subscript a value of type 'AnyObject?' with a index of type 'Int'
所以我試圖使用swift解析JSON中的一些數據。 下面是我的代碼
var jsonResult:NSDictionary! = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary
println(jsonResult)
上面的代碼將返回這樣的內容
{
count = 100
subjects = (
{
alt = "....."
name = "....."
},
{
alt = "....."
name = "....."
},
......
)
}
然后我嘗試用jsonResult["subjects"]
訪問所有主題,到目前為止很好但是當我嘗試訪問個別主題時,例如jsonResult["subjects"][0]
,Xcode給我錯誤: Cannot subscript a value of type 'AnyObject?' with an index of type 'Int'
Cannot subscript a value of type 'AnyObject?' with an index of type 'Int'
有人可以幫我這個嗎?
當您下載字典時,如jsonResult["subjects"]
,您將獲得一個可選項。 你需要解開Optional。 此外,因為這個字典是從JSON到達的,所以Swift不知道Optional包含什么類型的東西:它被輸入為AnyObject - 這就是Swift將Optional描述為AnyObject?
。 所以,你也告訴斯威夫特什么類型的對象這真的是-這是字典的一個數組,你需要告訴斯威夫特說,否則你將無法使用到它的下標[0]
你可以一次完成這兩件事,如下所示:
if let array = jsonResult["subjects"] as? [[NSObject:AnyObject]] {
let result = array[0]
// ...
}
如果你非常非常確定你的地面,你可以強制展開和鑄造,並將其減少到一行,如下所示:
let result = (jsonResult["subjects"] as! [[NSObject:AnyObject]])[0]
但我無法推薦。 有太多方法可以出錯。
至少使用Swift 2,你可以使用jsonResult [“subject”]作為! [AnyObject]
let data = try NSJSONSerialization.JSONObjectWithData(textData!, options: NSJSONReadingOptions.AllowFragments)
let results = data["results"] as! [AnyObject]
let first = results[0]
你應該嘗試,
var jsonResult:NSDictionary! = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary
let subjhectarry : NSArray = jsonResult["subjects"] as! NSArray
let yourFirstObj : NSDictionary = subjhectarry[0] as! NSDictionary
願這對你有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.