我在NSMutableDictionary
中存储了NSUSerDefaluts
,我已成功检索到它。
if var tempFeed: NSDictionary = NSUserDefaults.standardUserDefaults().dictionaryForKey("selectedFeeds") {
println("selected Feed: \(tempFeed)")
savedDictionary = tempFeed.mutableCopy() as NSMutableDictionary
问题是如何将MutableDictionary转换为数组/ MuatableArray并迭代它以便我可以得到它的值。这是字典。我想获得所有URL的值。
{
4 = {
URL = "myurl1";
};
5 = {
URL = "myurl3";
};
6 = {
URL = "myurl3";
};
}
我尝试过多次失败的选项。 谢谢。
答案 0 :(得分:1)
您可以在词典上使用.values.array
来获取无序值。
作为一个数组
然后,您只需将NSArray
添加到NSMutableArray
。
var mutableArray:NSMutableArray = NSMutableArray(array: savedDictionary .values.array)
答案 1 :(得分:1)
如果您只想迭代它,则不必将其转换为数组。你可以直接这样做:
for (key,value) in savedDictionary {
println("\(key) = \(value)")
}
(如果您对该密钥不感兴趣,可以将该变量名替换为_
以忽略它。)
或者,不要使tempFeed
类型为NSDictionary
,而是将其保留为类型dictionaryForKey
返回,这是一个Swift词典。它有一个.values
属性,它是字典中所有值的延迟序列。您可以将其转换为数组(所以tempFeed.values.array
)或直接对其执行操作(在for…in
中使用它,映射它,例如tempFeeds.values.map { NSURL(string: toString($0)) }
等。)
答案 2 :(得分:1)
如果要将所有url添加到数组中,请迭代它并添加将所有值附加到某个数组。
for (_,urlDict) in savedDictionary {
for(_,url) in urlDict {
urlArr.append(url) // create empty urlArr before
}
}
urlArr现在包含所有网址(未订购)