像Objective-C一样,如何在swift中编写“valueForKey”?
NSDictionary dic; NSMutableArray array; //Objective-C Code. array = [dic valueForKey:@"Table"]; //"Table" is key in dictionary
如何在Swift中编写相同的代码?
你可以试试这个
let array: AnyObject? = dic["Table"]
没有更多的valueForKey:
在Swift中,但有一种方法可以使用map
来实现类似的,如果不是相同的结果。
如果集合中的对象是字典:
let array = dic.map { $0["table"] as? String }
如果集合中的对象是对象:
let array = dic.map{ $0.table }
如果您在示例中使用Objective-C集合types(如NSDictionary
,则与其他人一样,您仍然可以继续使用valueForKey:
let array = dic.valueForKey("table")
简单的例如。
(dicDetail.valueForKey("name") as! String)
你可以试试这个
var dict=NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: NSErrorPointer.null()) as NSDictionary var temp=dict["contactname"] as String var tem=dict.valueForKey("contactname") as String
你会更好地了解如何处理Swift中的字典
let employees = json["employees"]! as [[String : AnyObject]]
下一步是循环employees数组并打印firstName和lastName。
请记住,我们正在循环一系列字典。 这意味着为了从firstName和lastName获取string值,我们需要首先解开optionals:
for employee in employees { let firstName = employee["firstName"]! as String let lastName = employee["lastName"]! as String println("employee: \(firstName) \(lastName)") }
build立,运行,你应该看到:
employee: John Doe employee: Anna Smith employee: Peter Jones
请检查这个代码。 这可能有助于你所需要的。
var dictData = Dictionary <String,Any>() var arrDictData = Array<Any>() // Will store value for key in dictionary. func storeData ( strName: String , strAge: String ) { dictData["name"]=strName dictData["age"]=strAge println("dictData: \(dictData)") storeInArray(dictData) } // Will store value of dictionary in array. func storeInArray ( dict : Any ) { arrDictData.append(dict) println("arrDictData: \(arrDictData)") } // Will return count of array. func resultArray() -> Int { println(arrDictData.count) return arrDictData.count } // This function will return value in label. func arrDictResult( dictKey: String, rowIndex: Int) -> String { var dataTemp = arrDictData[rowIndex] as Dictionary <String,Any> var val = dataTemp[dictKey] as String return val }