这是我的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'
我该如何解决这个问题?
答案 0 :(得分:3)
尝试:
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
返回非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"]