像objective-C一样,如何在swift中编写"valueForKey"?

7 objective-c ios swift

NSDictionary dic;
NSMutableArray array;
//Objective-C Code.
array = [dic valueForKey:@"Table"];  //"Table" is key in dictionary
Run Code Online (Sandbox Code Playgroud)

如何在Swift中编写相同的代码?

Jam*_*ang 7

valueForKey:Swift中没有更多内容,但是有一种方法可以map用来实现类似的(如果不是相同的话)结果.

如果集合中的对象是字典:

let array = dic.map { $0["table"] as? String }
Run Code Online (Sandbox Code Playgroud)

如果集合中的对象是对象:

let array = dic.map{ $0.table }
Run Code Online (Sandbox Code Playgroud)

如果你正在使用像NSDictionary你的例子中的Objective-C集合类型,那么就像其他人所说的那样,你仍然可以继续使用valueForKey:.

let array = dic.valueForKey("table")
Run Code Online (Sandbox Code Playgroud)

  • Swift 基本上拿走了 Objective C 中所有有用的东西并将其删除 (2认同)

Moh*_*din 6

你可以试试这个

let array: AnyObject? = dic["Table"]
Run Code Online (Sandbox Code Playgroud)


aro*_*rav 0

您将更好地了解如何在 Swift 中处理字典

let employees = json["employees"]! as [[String : AnyObject]]
Run Code Online (Sandbox Code Playgroud)

下一步是循环员工数组并打印名字和姓氏。

请记住,我们正在循环字典数组。这意味着为了从firstName和lastName获取字符串值,我们需要首先解开可选值:

for employee in employees {
  let firstName = employee["firstName"]! as String
  let lastName = employee["lastName"]! as String

  println("employee: \(firstName) \(lastName)")
}
Run Code Online (Sandbox Code Playgroud)

构建、运行,您应该看到:

employee: John Doe
employee: Anna Smith
employee: Peter Jones
Run Code Online (Sandbox Code Playgroud)