从 swift 中的 NSMutableDictionary 获取值?

get Values from NSMutableDictionary in swift?

我在 NSUSerDefaluts 中存储了一个 NSMutableDictionary,我已成功检索到它。

if var tempFeed: NSDictionary = NSUserDefaults.standardUserDefaults().dictionaryForKey("selectedFeeds") {
       println("selected Feed: \(tempFeed)")
        savedDictionary = tempFeed.mutableCopy() as NSMutableDictionary

问题是如何将 MutableDictionary 转换为 array/MuatableArray 并对其进行迭代,以便我可以获得 it.Here 的值是字典。我想获取其中所有 URL 的值。

{
4 =     {
    URL = "myurl1";
};
5 =     {
    URL = "myurl3";
};
6 =     {
    URL = "myurl3";
};
}

我尝试了很多选项都失败了。 谢谢。

您可以在字典中使用 .values.array 来获取无序的值。 作为数组 然后,您只需将 NSArray 添加到 NSMutableArray

var mutableArray:NSMutableArray = NSMutableArray(array: savedDictionary .values.array)

如果您只想对其进行迭代,则不必将其转换为数组。您可以直接这样做:

for (key,value) in savedDictionary {
    println("\(key) = \(value)")
}

(如果您对密钥根本不感兴趣,可以将变量名替换为 _ 以忽略它)。

或者,不要将 tempFeed 设为 NSDictionary 类型,只需将其保留为 dictionaryForKey returns 类型,即 Swift 字典。这有一个 .values 属性,它是字典中所有值的惰性序列。您可以将其转换为数组(因此 tempFeed.values.array)或直接对其执行操作(在 for…in 中使用它,将其映射为 tempFeeds.values.map { NSURL(string: toString([=18=])) } 等)

如果您想将所有 url 添加到一个数组中,请对其进行迭代并将所有值添加到某个数组。

for (_,urlDict) in savedDictionary {
  for(_,url) in urlDict {
    urlArr.append(url) // create empty urlArr before
  }
}

urlArr 现在包含所有 url(未排序)