iOS5 の Twitter API TWRequest performRequestWithHandler の処理方法が本当にわかりませんでした。.h ファイルで NSMutableArray *parsedTimeLine のインスタンス変数と -(void) fetchWebData: (NSString *) screenName; のメソッド シグネチャを宣言しました。
上記のメソッドの実装は次のとおりです。
-(void) fetchWebData: (NSString *) screenName {
NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setObject:screenName forKey:@"screen_name"];
[params setObject:@"f" forKey:@"include_entities"];
[params setObject:@"f" forKey:@"include_rts"];
[params setObject:@"10" forKey:@"count"];
[params setObject:@"t" forKey:@"trim_user"];
[params setObject:@"f" forKey:@"contributor_details"];
[params setObject:@"t" forKey:@"exclude_replies"];
NSURL *url = [NSURL URLWithString:@"http://api.twitter.com/1/statuses/user_timeline.json"];
TWRequest *request = [[TWRequest alloc] initWithURL:url
parameters:params
requestMethod:TWRequestMethodGET];
[request performRequestWithHandler:
^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
if (responseData) {
NSError *jsonError;
parsedUserTimeLine =[NSJSONSerialization JSONObjectWithData:responseData
options:NSJSONReadingMutableLeaves
error:&jsonError];
NSLog(@"jsonArray result count inside request: %d",parsedUserTimeLine.count);
NSLog(@"jsonArray values inside request: %@", parsedUserTimeLine);
}
}];
NSLog(@"jsonArray result count outside request: %d",parsedUserTimeLine.count);
NSLog(@"jsonArray values outside request: %@", parsedUserTimeLine);
}
これはうまくいきますが、私が本当に理解できなかった奇妙なことがあります。リクエストメソッドの内側にある私の2つのNSLogは、parsedUSerTimelineの正確なカウント値と配列の内容を示しています。しかし、私の2つのNSLogs OUTSIDE THE REQUESTメソッドは示しています
リクエスト外の -jsonArray 結果カウント: 0 -リクエスト外の jsonArray 値: (null)
また、fetchWebData メソッドを呼び出した後、viewDidLoad で parsedUserTimeLine の値を確認したところ、count = 0 と value = null が表示されました。
この人たちと一緒に私を助けてください。parsedUserTimeLine の値にグローバルにアクセスする必要があります。前もって感謝します。