簡體   English   中英

Swift NSArray下標AnyObject類型的值

[英]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]AnyObjectAnyObject可能有也可能沒有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM