解析 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)")
}
objectForKey: → 崩潰(陣列無此方法)NSNull 而非 nil → 需額外判斷 [NSNull null]