繁体   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