首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 開發:從 NSMutableArray 中精準提取字典鍵值

     編輯:程式設計綜合問答

問題場景

解析 XML 後獲得 NSMutableArray,NSLog 輸出如下:

Data : ( { SessionToken = 9e72dd029e0e8268380b919356881935; } )

目標:直接取出 SessionToken 對應的字串值 9e72dd029e0e8268380b919356881935。

解決方案

陣列中包含的是 NSDictionary 物件,需先取出字典,再透過鍵值獲取:

if ([_data count] > 0) {
    NSDictionary *dic = [_data objectAtIndex:0];
    NSString *token = [dic objectForKey:@"SessionToken"];
    NSLog(@"SessionToken: %@", token);
    // 輸出:SessionToken: 9e72dd029e0e8268380b919356881935
}

關鍵點解析

  • 型別轉換:NSMutableArray 元素實際為 NSDictionary,取出時建議宣告為 NSDictionary *(不可變)或 NSMutableDictionary *(可變)
  • 安全檢查:先判斷 count > 0 避免越界崩潰
  • 鍵值大小寫敏感:@"SessionToken" 必須與 XML 解析出的鍵完全一致

進階:鏈式調用與現代寫法

// 一行式寫法(需確保不為 nil)
NSString *token = _data.firstObject[@"SessionToken"];

// 配合可選綁定(Swift 風格)
if let token = (_data.firstObject as? [String: Any])?["SessionToken"] as? String {
    print("Token: \(token)")
}

常見坑點

  1. 直接對陣列呼叫 objectForKey: → 崩潰(陣列無此方法)
  2. 假設陣列只有一個元素,實際可能有多個 → 應遍歷或按業務邏輯篩選
  3. 值為 NSNull 而非 nil → 需額外判斷 [NSNull null]
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved