我有一个 Mac 应用程序,它应该为给定的用户名获取 Twitter 关注者和朋友,然后依次向 Twitter 询问每个返回的 UserID 的用户名称。正如您在下面看到的,我有一个方法可以调用 Twitter API 来获取朋友/关注者(效果很好)。导致我出现问题的是 userNameForUserID:delegate: 方法。我曾经同步执行这些请求,然后立即返回用户名的 NSString。那条(现在已被注释掉)行总是坏了,所以我尝试使用 NSURLConnection 异步进行。还是不行。我不明白为什么 [[NSString alloc] initWithContentsOfURL:...] 适用于 fetchFollowers... 方法,但当我以完全相同的方式在另一个...
我在用于分配初始化具有 URL 内容的 NSString 的行上放置了一个断点,当我进入它时,它不会中断、返回、抛出异常、崩溃……什么都没有。就好像那条线刚刚被跨过(但我的应用程序仍然被阻止。
有任何想法吗?非常感激!
NSString * const GET_FOLLOWERS = @"https://api.twitter.com/1/followers/ids.json?cursor=-1&screen_name=";
NSString * const GET_FRIENDS = @"https://api.twitter.com/1/friends/ids.json?cursor=-1&screen_name=";
NSString * const GET_USER_INFO = @"https://api.twitter.com/1/users/show.json?user_id=";
@implementation TwitterAPI
+ (void)userNameForUserID:(NSNumber *)userID delegate:(id<UserNameDelegate>)delegate
{
NSURL *url = [NSURL URLWithString:[GET_USER_INFO stringByAppendingString:[userID stringValue]]];
// NSString *JSON = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:req queue:queue completionHandler:^(NSURLResponse *urlResponse, NSData *data, NSError *error) {
[delegate addUserNameToArray:data];
}];
}
+ (NSArray *)fetchFollowersWithUserName:(NSString *)userName
{
NSURL *url = [NSURL URLWithString:[GET_FOLLOWERS stringByAppendingString:userName]];
NSArray *followerIDs;
NSString *JSON = [[NSString alloc] initWithContentsOfURL:url encoding:NSASCIIStringEncoding error:nil];
if ([JSON rangeOfString:@"error"].location == NSNotFound)
followerIDs = [[JSON JSONValue] valueForKey:@"ids"];
return followerIDs;
}