[英]How to access dictionary value by key inside array of dictionary on Swift 3?
我已经有一段时间没有快速开发了。 今天我从我的客户那里收到了关于我的旧项目的错误报告。 问题是我曾经像字典 [key]一样轻松地从我的字典中访问值,然后我已经得到了该值,但是今天我通过这样做得到了以下错误:
类型“NSFastEnumerationIterator.Element”(又名“Any”)没有下标成员
这是我的代码:
var rollStatusArray = NSMutableArray()
for statusDict in rollStatusArray{
if statusId == "\(statusDict["mark_status_id"]!!)"{
return "\(statusDict["mark_status_name"]!!)"
}
}
如何在 swift 3 上访问字典值?
在 Swift 中使用原生类型Array/[]
而不是NS(Mutable)Array
。
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"]!)"
}
}
}
注意我强制包装mark_status_name
值,您可以使用Nil coalescing operator
返回空字符串以删除强制包装。
您需要通过这种方式告诉编译器您的statusDict
的类型:
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"]!)"
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.