iOS5 / xCode Настройка массива с файлом json для последующего использования - PullRequest
0 голосов
/ 30 января 2012

У меня есть следующий код, который я запускаю на viewDidLoad:

  NSString *json_list = [[NSBundle mainBundle] pathForResource:@"mylist" ofType:@"json"];
NSData *theList   =   [NSData dataWithContentsOfFile: json_list];
NSInputStream *listStream = [[NSInputStream alloc] initWithData:theList];
[listStream open];

if (showStream) {
    NSError *parseError = nil;
    id jsonObject = [NSJSONSerialization JSONObjectWithStream:listStream options:NSJSONReadingAllowFragments error:&parseError];        
    if ([jsonObject respondsToSelector:@selector(objectForKey:)]) {
        for (NSDictionary *firstItem in [jsonObject objectForKey:@"list"]) {
            NSLog(@"Title: %@", [firstItem objectForKey:@"title"]);
        }
    }
} else {
    NSLog(@"Failed to open stream.");
}

Все в порядке, но я хотел бы сохранить эту информацию, скажем, в массиве, чтобы позже я мог использовать его в этом представлении, но я пробовал использовать различные методы массива, изменяемые и т. Д., Но, похоже, застрял в этой части. об этом:

В идеале вместо бита NSLog:

   NSLog(@"Title: %@", [firstItem objectForKey:@"title"]);

это то место, где я бы, вероятно, добавил его в массив, но как я могу сделать это, чтобы использовать его позже?

Спасибо

1 Ответ

1 голос
/ 31 января 2012

Как насчет чего-то вроде:

if ([jsonObject respondsToSelector:@selector(objectForKey:)]) {

    self.titleArray = [NSMutableArray array];

    for (NSDictionary *firstItem in [jsonObject objectForKey:@"list"]) {
        NSString *title = [firstItem objectForKey:@"title"];
        [self.titleArray addObject:title];
    }
}

Где titleArray - это свойство, объявленное в вашем файле .h.

...