Swift NSArray下标AnyObject

时间:2015-05-30 06:54:17

标签: ios swift nsarray

这是我的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'

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

尝试:

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返回非Set”。

答案 1 :(得分:0)

替换此行

let RideName = RidesData[indexPath.section]["Data"][indexPath.row]["Name"]

用这个

let RideName = RidesData[indexPath.section]["Data"][indexPath.row]["Name"] as! String

答案 2 :(得分:0)

问题在于广告,数组RidesData是一个可选数组:[AnyObject]?.

所以你必须这样写: -

let RideName = RidesData[indexPath.section]["Data"][indexPath.row]["Name"] as! String

答案 3 :(得分:0)

RidesData[indexPath.section]["Data"]的类型为AnyObject?!,然后您尝试访问indexPath.row元素。你需要首先解开这个部分。

试试这个:

let RideName = RidesData[indexPath.section]["Data"]?[indexPath.row]["Name"]