2015-11-10 2 views
0

В моем коде Разбор облака, у меня есть собственные ошибки, подобные этойАнализировать закодировать пользовательские ошибочный ответ

response.error({ 
    "Error" : "DEAL EXPIRED", 
    "Title" : "Sorry!", 
    "Message" : "This deal is expired :(", 
    "Action" : "Ok" 
}); 

Потому что я хочу, чтобы показать UIAlertView, но у меня есть проблема, чтобы прочитать словарь. Мой код в приложение является:

NSDictionary *errorDictionary = [error userInfo]; 

if ([[errorDictionary objectForKey:@"Error"] isEqualToString:@"DEAL EXPIRED"]) { 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle: 
     [NSString stringWithFormat:@"%@",[errorDictionary objectForKey:@"Title"]] 
     message:[NSString stringWithFormat:@"%@",[errorDictionary objectForKey:@"Message"]] 
     delegate:nil 
     cancelButtonTitle:[NSString stringWithFormat:@"%@",[errorDictionary objectForKey:@"Action"]] 
     otherButtonTitles:nil]; 
    [alert show]; 

} 

Логарифм errorDictionary является:

{"Error":"DEAL EXPIRED","Title":"Sorry!","Message":"This deal is expired :(","Action":"Ok"} 

Спасибо

+0

Какая у вас проблема? –

+0

Код не входит в оператор if. Может быть, словарь должен быть разобран – Vins

+0

Что произойдет, если вы выполните NSLog (@ "ошибка:% @", [errorDictionary objectForKey: @ "Error"]); 'перед оператором' if'? – dstudeba

ответ

0

Поскольку печатаемые строки равна нулю, то это означает, что ваш if оператор всегда будет ложный. Поэтому [error userInfo] не является объектом NSDictionary. Вам нужно преобразовать строку JSON в dictionary, прежде чем вы сможете использовать ее как dictionary.

Вот пример, если это объект NSData.

NSDictionary * errorDictionary = [NSJSONSerialization JSONObjectWithData:[error userInfo] options:kNilOptions error:&error]; 

Here is the Apple documentation если это NSInputStream объект.

Более подробная информация о JSON для преобразования NSDictionary here.

Смежные вопросы