2015-06-20 34 views
-1

我是相當新的迅速和我想了解如何處理零瓦爾...如何在swift中安全地解開零值?

我有兩個字典:

var currencyname: NSDictionary = [ 
     "CNY": "Chinese Yuan", 
     "PLN": "Polish Zloty" 
     "EUR": "Euro" 
] 

var rawrates NSDictionary = [ 
     "CNY": "1.34", 
     "PLN": "1.456" 
] 

我使用的元組的字典將它們組合起來:

var combinedDictionary:[String:(name:String,rate:String)] = [:] 

for key in currencyname.keys.array { 
    combinedDictionary[key] = (currencyname[key]!,rawrates[key]!) 
} 

但是我得到了found nil while unwrapping an Optional value錯誤,因爲在currencyname字典不匹配的rawrate詞典中的任何密鑰的密鑰EUR

我明白,我會以某種方式檢查鑰匙字典都存在使用let if結合之前?但是我對語法感到困惑......我也嘗試過使用可選值而沒有成功。

所以我的問題是我怎麼能結合這兩個字典,並離開EUR combinedDictionary因爲在rawrate字典中沒有匹配的關鍵?

謝謝您的幫助!

+0

「我有兩個數組」不,你有兩個字典。直到你得到_that_直到你不會得到_anywhere_。 – matt

+0

哎呀,你是對的!我編輯了我的問題 – anto0522

+0

我認爲你應該停下來,清楚地向你自己和我們說明你想要什麼樣的最終結果。你似乎不知道你想要什麼,所以如果你明白我的意思,你就沒有辦法到達那裏。 – matt

回答

1

我認爲你是什麼這樣的事情後:

let currencyname = [ 
     "CNY": "Chinese Yuan", 
     "PLN": "Polish Zloty", 
     "EUR": "Euro" 
    ] 

    let rawrates = [ 
     "CNY": "1.34", 
     "PLN": "1.456" 
    ] 

    var combinedDictionary = [String:(name:String,rate:String)]() 
    for key in currencyname.keys { 
     if let val1 = currencyname[key], val2 = rawrates[key] { 
      combinedDictionary[key] = (val1,val2) 
     } 
    } 

但它是一個有點硬不更清晰的問題陳述是肯定的。這不是我會建議的。這在我看來是一個更好的結果:

let currencyname = [ 
    "CNY": "Chinese Yuan", 
    "PLN": "Polish Zloty", 
    "EUR": "Euro" 
] 

let rawrates = [ 
    "CNY": "1.34", 
    "PLN": "1.456" 
] 

struct Currency { 
    let name : String 
    let rate : String 
} 

var combinedDictionary = [String:Currency]() 
for key in currencyname.keys { 
    if let val1 = currencyname[key], val2 = rawrates[key] { 
     combinedDictionary[key] = Currency(name:val1, rate:val2) 
    } 
} 
+0

謝謝,這很有效。我很確定我的問題很可能是ie:「所以我的問題是,我怎麼能結合這兩個字典,並且由於在rawrate Dictionary中沒有匹配的關鍵字而沒有使用combinedDictionary的歐元?」 – anto0522

+0

@ anto0522爲什麼不嘗試使用我對上一個問題的回答,這與馬特在這裏的回答非常相似,但有一個細微的差別。 http://stackoverflow.com/a/30948414/2792531 – nhgrif

+0

@nhgrif嗨!我確實使用了你的答案。這個問題是關於如何使用「if let」表達式來解開零值我剛剛使用之前用於說明我的問題的示例......我不確定要問我以前的問題或創建新的問題一個所以我去創建一個新的... – anto0522

相關問題