創建一個NSDictionary的關鍵我有一個dictionary
,有時讀取一些JSON數據爲空值。當我這樣做:崩潰的訪問,應該是從JSON
NSDictionary *caption=[image objectForKey:@"caption"]; //crash here!
凡外地caption
是有,但空,(在JSON,caption:null
),我得到一個崩潰。 我該如何消除這種情況?
我可以檢查空以後:
NSDictionary *caption=[image objectForKey:@"caption"];
NSString *[email protected]"";
if(caption!=NULL )
{text=[caption objectForKey:@"text"]; }
但危機來臨之前就這樣。
這是怎麼了我的字典里正在建:
NSError *error = nil;
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
NSArray *myResults=[result objectForKey:@"data"];
long count=[myResults count];
for(NSDictionary *image in myResults)
{
NSDictionary *links=[image objectForKey:@"images"];
NSDictionary *standard=[links objectForKey:@"standard"];
NSString *url=[standard objectForKey:@"url"];
NSLog(@"image:%@",image);
NSDictionary *caption=[image objectForKey:@"caption"]; //CRASH
你不能有一個NSDictionary實際零/零,除非該詞典已經在某種程度上破壞。你確定這起事故是來自那個具體的陳述嗎?發生了什麼異常? –
發佈真正導致崩潰的代碼。還包括完整的錯誤消息。 – rmaddy
請注意,你*可以*在NSDictionary中有一個NSNull對象,並且NSLog會像「(NULL)」那樣(我忘記了確切的消息)。一個NSNull對象不會是== null/nil,如果在下一個語句中被盲目地使用,將導致一個「無效的選擇器」異常。然而,一個NSNull對象*會*比較'[NSNull null]',所以你可以用它來檢查它。 –