从swift中的NSMutableDictionary获取值?

时间:2015-03-19 09:35:47

标签: swift nsuserdefaults nsmutabledictionary

我在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";
};
}

我尝试过多次失败的选项。 谢谢。

3 个答案:

答案 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现在包含所有网址(未订购)