Могу ли я минимизировать количество объектов, используемых в этом коде SBjson? - PullRequest
0 голосов
/ 11 октября 2011

Ответ, который я получаю от сервера, отформатирован так:

{
    "Data":{
        "Key": "Value"
        ...
    },
    "Key": "Value"
    ...
}

Однако меня интересуют только элементы в разделе «Данные».Вот код, который я сейчас использую:

SBJsonParser *parser = [SBJsonParser new]; 
NSString *responseString = [request responseString];
NSDictionary *responseData = [parser objectWithString:responseString];
NSString *infoString = [responseData objectForKey:@"Data"];
NSDictionary *infoData = [parser objectWithString:infoString];

Есть ли способ выполнить то же самое без явного объявления 5 объектов?Просто ищу какое-то чувство короткой руки, которое я должен использовать.

1 Ответ

1 голос
/ 11 октября 2011

Ваши последние две строки неверны - "Data" на самом деле NSDictionary, поэтому вам не нужно выполнять его двойной анализ.

Кроме того, большинство программистов Objective C вкладывают вызовы там, где они знаютчто возвраты безопасны - под этим я подразумеваю, что не нуждается в дополнительной проверке.Например, это показалось бы мне более естественной реализацией:

NSDictionary *responseDictionary = [[request responseString] JSONValue];
NSDictionary *infoData = [responseDictionary objectForKey:@"Data"];

Обратите внимание, что я использую вспомогательный метод JSONValue из категории NSObject, которая поставляется с SBJSON.

...