Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何通过Swift 3上字典数组中的键访问字典值?_Ios_Iphone_Swift_Dictionary_Swift3 - Fatal编程技术网

Ios 如何通过Swift 3上字典数组中的键访问字典值?

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

我离开快速发展已经有一段时间了。今天我从我的客户那里得到了关于我旧项目的错误报告。问题是,我习惯于轻松地从字典中访问值,就像dictionary[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中,使用本机类型
数组/[]
而不是
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
的类型,这就是您出现此错误的原因。