2015-06-01 2 views
0

Я пытаюсь разобрать файл JSON, чтобы я мог использовать его содержимое как NSStrings и отображать в UILabels всюду по моему приложению.Разбор локального json для UILabels

Мой JSON:

{ 
    "CustomText": [ 
     { 
      "bodyText": "This is the body text", 
      "loginText": "This is the loginText", 
      "extraText": "This is the extra text" 
     } 
    ] 
} 

Мой код:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"File" ofType:@"json"]; 

NSData *content = [[NSData alloc] initWithContentsOfFile:filePath]; 
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:content options:kNilOptions error:nil]; 

NSArray *customStrings = json[@"CustomText"]; 
NSString *body = [customStrings valueForKey:@"bodyText"]; 
NSString *login = [customStrings valueForKey:@"loginText"]; 
self.labelText.text = body; 

Я не знаю, почему он ломается, у меня есть внешний вид и удивительно не нашел много о том, как лучше всего использовать локальный файл JSON. Любая помощь будет большой.

Сообщение об ошибке:

Согласующего приложение из-за неперехваченное исключением 'NSInvalidArgumentException', причина: '- [__ длина NSArrayI]: непризнанной селектор послана к экземпляру 0x7f8080781740'

+0

Что случилось с вашим текущим кодом? «Разрывы»? – Larme

+0

Я получаю эту ошибку. Исключительное приложение из-за неотображенного исключения «NSInvalidArgumentException», причина: '- [__ NSArrayI length]: нераспознанный селектор, отправленный экземпляру 0x7f8080781740' –

+2

'[[customStrings objectAtIndex: 0] valueForKey: @" bodyText "]' и то же самое для 'loginText'? – Larme

ответ

0
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"File" ofType:@"json"]; 


NSData *content = [[NSData alloc] initWithContentsOfFile:filePath]; 
    NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:content options:kNilOptions error:nil]; 

NSArray *customStrings = json[@"CustomText"]; 
NSString *body = [[customStrings objectAtIndex:0] valueForKey:@"bodyText"]; 
NSString *login = [[customStrings objectAtIndex:0] valueForKey:@"loginText"]; 
self.labelText.text = body; 
0

Использование пути для ключей

NSString * body = [json valueForKeyPath:@"CustomText.bodyText"]; 
    self.labelText.text = body; 
Смежные вопросы