在 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 中存储数组