Ios 如何通过Swift 3上字典数组中的键访问字典值?
我离开快速发展已经有一段时间了。今天我从我的客户那里得到了关于我旧项目的错误报告。问题是,我习惯于轻松地从字典中访问值,就像dictionary[key]那样,然后我已经得到了值,但今天我通过这样做得到了以下错误: 类型“NSFastEnumerationIterator.Element”(也称为“Any”)没有下标成员 这是我的代码:Ios 如何通过Swift 3上字典数组中的键访问字典值?,ios,iphone,swift,dictionary,swift3,Ios,Iphone,Swift,Dictionary,Swift3,我离开快速发展已经有一段时间了。今天我从我的客户那里得到了关于我旧项目的错误报告。问题是,我习惯于轻松地从字典中访问值,就像dictionary[key]那样,然后我已经得到了值,但今天我通过这样做得到了以下错误: 类型“NSFastEnumerationIterator.Element”(也称为“Any”)没有下标成员 这是我的代码: var rollStatusArray = NSMutableArray() for statusDict in rollStatusArray{ if
var rollStatusArray = NSMutableArray()
for statusDict in rollStatusArray{
if statusId == "\(statusDict["mark_status_id"]!!)"{
return "\(statusDict["mark_status_name"]!!)"
}
}
如何访问swift 3上的字典值?在swift中,使用本机类型
数组/[]
而不是NS(可变)数组
if let dicArray = rollStatusArray.objectEnumerator().allObjects as? [[String:Any]] {
for statusDict in dicArray {
//Here compiler know type of statusDict is [String:Any]
if let status_id = statusDict["mark_status_id"] as? String, status_id == statusId {
return "\(statusDict["mark_status_name"]!)"
}
}
}
注意,我正在强制包装
标记状态\u名称
值。您可以使用零合并运算符
返回空字符串以删除强制包装。您需要通过以下方式告诉编译器您的状态dict的类型:
for statusDict in rollStatusArray {
if let obj = statusDict as? [String: AnyObject] {
let statusIdFromDict = obj["mark_status_id"] as? String ?? ""
if statusId == statusIdFromDict {
return statusIdFromDict
}
}
}
使用Swift 3,您可以通过以下方式访问字典值:
var rollStatusArray = NSMutableArray()
for statusDict in rollStatusArray{
if statusId == "\((statusDict as! NSDictionary)["mark_status_id"]!)"{
return "\((statusDict as! NSDictionary)["mark_status_name"]!)"
}
}
rollStatusArray的类型是什么?@NiravD它是一个dictionaries@EgaSetyaPutra会,,你能出示它的声明吗?@NiravD我编辑了我的question@EgaSetyaPutra这就是您正在处理的问题NSMutableArray
show编译器不知道statusDict
的类型,这就是您出现此错误的原因。