我在我的iOS應用中使用alamofire進行http請求。當我在Swift中訪問如下所示的響應值時,如果鍵不存在或獲取空值時會發生崩潰。當objectForKey(「Id」)Id不存在時崩潰?
var id = (response.result.value?[p-1].objectForKey("Id"))! as? Int
一般來說,我們如何檢查一個在Swift中不存在的值?
我在我的iOS應用中使用alamofire進行http請求。當我在Swift中訪問如下所示的響應值時,如果鍵不存在或獲取空值時會發生崩潰。當objectForKey(「Id」)Id不存在時崩潰?
var id = (response.result.value?[p-1].objectForKey("Id"))! as? Int
一般來說,我們如何檢查一個在Swift中不存在的值?
你應該試試這個
if let id = (response.result.value?[p-1].objectForKey("Id"))? as? Int {
// some stuff
}
您的應用程序崩潰,因爲你解開無對象:.objectForKey(「ID」)
你必須解開您的自選項目,而不強迫它。在你的情況,你也應該考慮檢查response.result.value
是否具有至少p-1
元素:
if let value = response.result.value
{
if p-1 < value.count
{
if let id = value[p-1].objectForKey("Id") as? Int
{
// Do whatever you want with id
}
}
}
您還可以使用guard
聲明,我個人覺得更清晰:
guard let value = response.result.value
else { return }
guard p-1 < value.count
else { return }
guard let id = value[p-1].objectForKey("Id") as? Int
else { return }
// Do whatever you want with id
讓它'如果讓ID = response.result.value?[p-1] .objectForKey(「Id」)as? Int',這是最好的答案。 – overactor
你是對的@overactor,我粘貼他的代碼,括號是沒用的 –