2015-03-19 50 views
1

我有一個存儲NSMutableDictionaryNSUSerDefaluts,我已經檢索成功。從swift中獲取NSMutableDictionary的值?

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

的問題是我怎麼可以轉換MutableDictionary到一個數組/ MuatableArray和重複它,這樣我可以得到it.Here的值是字典。我想要獲取所有網址的值。

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

我嘗試了一些失敗的選項。 謝謝。

回答

1

如果你想所有的網址添加到一個數組,遍歷它並添加所有值到一些數組。

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

urlArr現在包含所有的URL(不排序)

+0

這是我done.Thanks。我也嘗試了@Airspped Velocity和@Christian的答案,但它給出錯誤,比如'NSDictionary沒有名爲Value的mebmer'。感謝您的答案。 – PatientC 2015-03-19 11:34:47

+0

很高興幫助,但Airspeed的答案列舉了您擁有的所有可能性,並且您可以選擇任何可能性。 – sasquatch 2015-03-19 13:25:06

1

您可以在字典上使用.values.array來獲取無序的值。 作爲數組 然後,您可以將您的NSArray添加到您的NSMutableArray

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

如果您只想對其進行迭代,則不必將其轉換爲數組。您可以直接做:

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

(如果你不感興趣的關鍵可言,你可以用_替換變量名稱忽略它)。

或者,類型的NSDictionary而不是tempFeed,只是將它作爲類型dictionaryForKey返回,這是一個Swift字典。這有一個.values屬性,它是字典中所有值的惰性序列。你可以將其轉換成一個數組(所以tempFeed.values.array),或在其上執行操作的直接(在for…in使用它,它映射如tempFeeds.values.map { NSURL(string: toString($0)) }等)