2012-03-10 2 views
1

私はとのAPIデータのためのTwitterの要求をやってる:reloadDataクラッシュのiOSのApp

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に "results"を表示します。私の代理人とデータソースは、JSONデータを処理しているビューコントローラと同じです。私のデータソース方法:私はこれが呼び出されるとき、私のJSONの解析が終了していないので、私の配列の数を実行しよう場合

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

はゼロを返しています。このメソッドで "return 1"を指定すると、Twitterリクエストの結果の1つが正しく表示されます。しかし、reloadDataを使用すると、アプリがクラッシュします。私はカウントを遅らせることはできません。何か案は?

+0

どのようにあなたのテーブルビューを作成している、そしてどのようにreloadDataを呼び出していますか? – Vikings

+0

また、クラッシュ時にエラーを通知すると便利です。 – Vikings

+1

あなたのデータを保持していないようです。あなたのpopulateTable:実装を見ることは役に立ちます。また、宣言時に結果変数を初期化するか、statusCodeが200でない場合はnilに設定する必要があります。 – davehayden

答えて

0
の.h

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

.M

@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]; 
} 
}]; 
関連する問題