Приложение reloadData Crashing для iOS - PullRequest
1 голос
/ 10 марта 2012

Я делаю запрос Twitter для данных API с:

TWRequest *postRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"http://search.twitter.com/search.json?q=a2zwedding&include_entities=true"] parameters:nil requestMethod:TWRequestMethodGET];

, затем я получаю всю обработку запроса с:

[postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
    // NSString *output;
    NSArray *results;

    if ([urlResponse statusCode] == 200) {
        NSError *jsonParsingError = nil;
        NSDictionary *publicTimeline = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&jsonParsingError];
        results = [publicTimeline objectForKey:@"results"]; 
    }
    [self performSelectorOnMainThread:@selector(populateTable:) withObject:results waitUntilDone:YES];        
}];

Затем я пытаюсьотобразить «результаты» в UITableView.Мой делегат и источник данных - это тот же контроллер представления, который обрабатывает данные JSON.Мой метод источника данных:

- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section

возвращает ноль, если я пытаюсь выполнить подсчет моего массива, потому что мой синтаксический анализ JSON не завершается при вызове этого.Если я "верну 1" с помощью этого метода, он правильно отображает один из результатов из моего запроса Twitter.Однако, если я использую reloadData, мое приложение вылетает.Я не могу заставить его задержать счет.Есть идеи?

1 Ответ

0 голосов
/ 10 марта 2012

в .ч

//use this as your datasource
@property(nonatomic, strong)NSArray *myResultData;

@synthesize myResultData;

[postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
// NSString *output;
NSArray *results;

if ([urlResponse statusCode] == 200) {
    NSError *jsonParsingError = nil;
    NSDictionary *publicTimeline = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&jsonParsingError];
    results = [publicTimeline objectForKey:@"results"]; 
    if(![results isKindOfClass:[NSNull class]])
       {
          myResultData = [NSArray alloc]initWithArray:results];
       }
       [self.tableView reloadData];
}
}];
...