![](/img/trans.png)
[英]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.