0

我有一个 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;

}
4

0 回答 0