【发布时间】:2012-08-19 05:08:26
【问题描述】:
所以我试图在 Twitter API(以及其他)之上为一个项目构建一个层,我需要找到一种方法将 Twitter 操作的结果返回到抽象层。
现在我的设置是这样的,例如:
-(NSDictionary *)sendTweet:(Tweet *)tweet {
__block NSMutableDictionary *responseDictionary;
NSLog(@"Sending tweet");
NSMutableDictionary *twitterRequestDictionary = [[NSMutableDictionary alloc] init];
[twitterRequestDictionary setObject:tweet.tweetBody forKey:@"status"];
TWRequest *request = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"https://api.twitter.com/1/statuses/update.json"]
parameters:twitterRequestDictionary
requestMethod:TWRequestMethodPOST];
[request setAccount:self.userAccount];
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
responseDictionary = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:nil];
NSLog(@"Response dictionary: %@", responseDictionary);
return responseDictionary;
}];
}
但是因为 'performRequestWithHandler:' 方法返回 'void' 我最后一行导致错误。
在发现这篇文章后,我还尝试将'return'语句放在块之外并锁定代码块部分的执行:http://omegadelta.net/2011/05/10/how-to-wait-for-ios-methods-with-completion-blocks-to-finish
还是没有运气。
我希望有人可以对这种方式有所了解(或者建议一种更好的方法来返回数据)。
【问题讨论】:
标签: objective-c ios twitter objective-c-blocks