2015-09-05 19 views
1

有人可以告訴我我在做什麼錯嗎? 「錯誤」是從CloudKit返回的NSError。NSError代碼檢查:二進制運算符'=='不能應用於兩個Int操作數

if error.code == Int(CKErrorCode.NetworkFailure) { 
    //do something 
} 

給了我這個錯誤:

Binary operator '==' cannot be applied to two Int operands

如果我這樣做,它工作正常:

if error.code == 4 { 
    //do something 
} 

其中4是實際的錯誤代碼。

+1

我認爲這是消息已經搞砸了。也許錯誤是可選的? –

+0

顯示更多代碼,'error','error.code'和'CKErrorCode'如何定義? – Kametrixom

+0

對不起,我認爲該主題涵蓋了這一點。 「錯誤」只是從CloudKit返回的NSError。 NSError的定義是相當標準的。我沒有檢查,也沒有選擇權。 –

回答

4

這裏的問題是,Int沒有一個構造函數,它需要CKErrorCode作爲輸入。

正如評論,這兩個值進行比較的方法是:

if error.code == CKErrorCode.NetworkFailure.rawValue { 
    //do something 
} 

值得慶幸的是,該錯誤消息已爲的XCode 7和斯威夫特2的提高,所以你會看到:

Cannot invoke initializer for type 'Int' with an argument list of type '(CKErrorCode)'

這是什麼地方出錯的好得多的指標。

相關問題