[英]NSDictionary in Swift:Cannot subscript a value of type 'AnyObject?' with a index of type 'Int'
[英]Swift NSArray subscript a value of type AnyObject
這是我的NSArray
var RidesData:NSArray = []
它用於存儲我已轉換的JSON數組
RidesData = NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &error) as! NSArray
數組樣本
Optional((
{
ContentType = USSShow;
Name = "Lake Hollywood Spectacular\U00ae (Seasonal Show)";
NextShowTime = "8:00pm";
NextTimeSlot = "";
QueueTime = "";
TimeSlot = "";
},
我試圖使用此代碼獲取Name值
let RideName = RidesData[indexPath.section]["Data"][indexPath.row]["Name"]
cell.textLabel!.text = RideName
但是我收到了這個錯誤
Cannot subscript a value of type 'AnyObject?!' with an index type of 'int'
從我搜索到的,我相信我無法下標,因為它是一個可選的,但當我試圖解開它!
它給了我這個錯誤
Operand of postfix "!" should have optional type; type is 'NSArray'
我怎么解決這個問題?
嘗試:
let RideName = RidesData[indexPath.section]["Data"]??[indexPath.row]?["Name"] as? String
由於RidesData[indexPath.section]["Data"]
是AnyObject?!
你必須打開兩次 。
為何選擇AnyObject?!
? 因為RidesData[indexPath.section]
是AnyObject
, AnyObject
可能有也可能沒有subscript
。 那么,第一個?
裝置“如果它有subscript
”,和第二裝置“如果subscript
返回非nil
”。
替換此行
let RideName = RidesData[indexPath.section]["Data"][indexPath.row]["Name"]
有了這個
let RideName = RidesData[indexPath.section]["Data"][indexPath.row]["Name"] as! String
問題在於 RidesData
,數組RidesData
是一個可選數組: [AnyObject]?.
所以你必須這樣寫: -
let RideName = RidesData[indexPath.section]["Data"][indexPath.row]["Name"] as! String
RidesData[indexPath.section]["Data"]
的類型是AnyObject?!
然后您嘗試訪問indexPath.row
元素。 你需要先解開這個部分。
嘗試這個:
let RideName = RidesData[indexPath.section]["Data"]?[indexPath.row]["Name"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.