2016-10-04 51 views
1

如果我有字典在我的NSUserDefaults的数组:对象为Array

["name":"John", "birthplace":"New York"] 
["name":"Eric", "birthplace":"London"] 
["name":"Sven", "birthplace":"Stockholm"] 
["name":"Pierre", "birthplace":"Paris"] 

什么是让所有的名字变成这样

John, Eric, Sven , Pierre 

回答

3
数组的最简单方法

首先,你应该得到正确类型的用户默认是[[String: String]]数组:

let defaults = NSUserDefaults.standardUserDefaults() 
if let peopleArray = defaults.arrayForKey("people") as? [[String: String]] { 
    ... 
} 

然后你可以使用flatMap(或map如果确信每个字典有钥匙name提取名称:

peopleArray.flatMap { $0["name"] } 
+0

更新问题。我如何将这个数组从NSUserDefaults中取出? – cannyboy

+0

是的,他们被保存着像defaults.setObject([[“名称”:“约翰”,“出生地”:“纽约”],[“名称”:“埃里克”,“出生地”:“伦敦”] ],forKey:“people”) – cannyboy

+0

如果我做了'var peopleArray = defaults.arrayForKey(“people”)''那么flatMap代码就会产生'Can not subscript'类型为'[AnyObject]'的类型为'String' '(Swift 2.x) – cannyboy