在 Swift 3.0 中,没有在数组中的索引处获取对象的键值语法

Posted

技术标签:

【中文标题】在 Swift 3.0 中,没有在数组中的索引处获取对象的键值语法【英文标题】:Not getting syntax for value for key with object at index in array in Swift 3.0 【发布时间】:2016-10-17 06:04:49 【问题描述】:

我正在开发 Swift 3.0,我在其中获取了一个数组,现在我想从特定索引中获取值,并从字典中获取键值。我尝试了多种方法,但仍然无法找到解决方案。

为了在Objective C中参考,我们必须使用这个

[arrGroupList objectAtIndex:0]valueForKey:@""]]

我想要 Swift 3.0 中的等价物。

任何帮助都将不胜感激!!!

【问题讨论】:

Like objective-C , how to write "valueForKey" in swift?的可能重复 valueForKey 是 NSDictionary 的一个方法。所以投到它并使用它 【参考方案1】:
let val = arrGroupList[0]
print(val["YYZ"]) 

【讨论】:

这不是问题所在,你不会从数组中得到airports 如果数组也像我问的那样包含字典,那么我怎么能得到它???? 请:把你的数组,看看你到底想要什么 “messageList”:[ “chat_id”:“2327”,“conversation_id”:“2357”,“sender_id”:“269”,“receiver_id”:“270”,…, “chat_id”:“2326”,“conversation_id”:“2356”,“sender_id”:“269”,“receiver_id”:“270”,…,“chat_id”:“2302”,“conversation_id”:“2332” ”,“sender_id”:“270”,“receiver_id”:“269”,…,“chat_id”:“2301”,“conversation_id”:“2331”,“sender_id”:“270”,“receiver_id”: "269",… ] arrGroupList[0]["keyYouWant"]【参考方案2】:

你可以这样做:

// array of [[String:String]] Dict
let myArray = [[String:String]]()


let first = myArray.first
let second = myArray[1]
let last = myArray.last

在您的情况下(假设 arrGroupList 包含 [String: String]),它应该如下所示:

let firstValueInFirstDict = arrGroupList[0]["myKey"]

注意firstValueInFirstDict 是一个可选字符串。

编辑: 如果你得到的是Any 实例而不是[String: String],你应该检查一下:

    guard let firstDict = arrGroupList[0] as? [[String: String]] else 
        return
    

    let firstValueInFirstDict = firstDict["myKey"]

希望有所帮助。

【讨论】:

嗨,我试过“让 firstValueInFirstDict = arrGroupList[0]["myKey"]”这个但得到错误 运行时或编译错误?它说什么?您确定您使用了正确的密钥(而不是保留“myKey”)吗? 它的编译时错误“type any has no subscript members” 哦,那么你的数组是什么类型的呢? (选项+点击查看)是不是[String:AnyObject]?【参考方案3】:
let item=newdata[indexPath.row] as! NSDictionary

        //let newitem=String(item["name"])
        cell.textLabel?.text=String(describing: item["name"]!)
        cell.detailTextLabel?.text=String(describing: item["city"]!)

【讨论】:

以上是关于在 Swift 3.0 中,没有在数组中的索引处获取对象的键值语法的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3.0:在 TableView 的 UserDefaults 中存储数组

在swift 3.0中将坐标数组转换为geojson字符串

如何在 Swift 3.0 中使用 keysSortedByValue?

类型 Any 没有下标成员 Swift 3.0 中的错误?

编码复杂对象swift 3.0

如何在最后一个索引Swift中添加元素