2012-01-09 75 views
1

我正在處理一個_NSDictionary,我試圖解析。我使用這個代碼無法找到valueForKeyPath時防止應用程序崩潰?

NSDictionary *nextArray = [_classDictionary 
valueForKeyPath:@"response.page_records.page_record"]; 
for (NSDictionary *roster2 in nextArray) { 
    [pageName addObject:[roster2 objectForKey:@"title"]]; 
    [pageID addObject:[roster2 objectForKey:@"id"]]; 
} 

的問題是,這NSDictionary的從服務器轉換XML數據,有時這個數據與「標題」鍵的對象,有時沒有。每當服務器發送沒有標題密鑰(也沒有keypath)的數據時,我的應用程序崩潰,並且我得到一個valueForKeyPath無法找到的錯誤。有沒有辦法來防止這個錯誤被拋出?

回答

1

您可以使用字典中的allKeys方法來轉儲所有的鍵出現,然後檢查是否有特定的鍵:

for (NSDictionary *roster2 in nextArray) { 
    NSArray *keys = [roster2 allKeys]; 
    if ([keys containsObject:@"title"] 
     [pageName addObject:[roster2 objectForKey:@"title"]]; 
    [pageID addObject:[roster2 objectForKey:@"id"]]; 
} 
+0

感謝您的。你的if語句是否需要括號?它也缺少一個閉括號。 – davis 2012-01-09 03:01:32

相關問題