2012-06-21 64 views
1

我无法同时获取Facebook名称和图片。每次请求我只能接受其中一项。获取Facebook配置文件名称和图片IOS 5.1

-(void)fbDidLogin{ 
    // Save the access token key info. 
    [self saveAccessTokenKeyInfo]; 

    // Get the user's info. 
    [facebook requestWithGraphPath:@"me/?fields=first_name,picture" andDelegate:self]; 

} 

-(void)request:(FBRequest *)request didLoad:(id)result{ 

    if ([result isKindOfClass:[NSArray class]]) { 

     result = [result objectAtIndex:0]; 

     if ([result objectForKey:@"first_name"]) { 
      [lblUser setText:[NSString stringWithFormat:@"Welcome %@!", [result objectForKey:@"first_name"]]]; 
      // Show the publish button. 
      [btnPublish setHidden:NO]; 
     } 
    } 
    else { 
     imageView.image = [UIImage imageWithData:result]; 
    }  
} 

的错误,我得到

__NSCFDictionary length]: unrecognized selector sent to instance 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary length]: unrecognized selector sent to instance 

如果我有两个请求

-(void)fbDidLogin{ 
    // Save the access token key info. 
    [self saveAccessTokenKeyInfo]; 

    // Get the user's info. 
    [facebook requestWithGraphPath:@"me/picture" andDelegate:self]; 
    [facebook requestWithGraphPath:@"me" andDelegate:self]; 
} 

,并用同样的方法 - (空)要求:(FBRequest *)要求didLoad:(ID )结果 我得到的错误是

[__NSCFDictionary length]: unrecognized selector sent to instance 

那么我如何请求获取Facebook名称和图片以及如何处理传入数据?

回答

1

我固定它,下面的代码工作正常获取Facebook的名字和个人资料照片

-(void)request:(FBRequest *)request didLoad:(id)result{ 
    // With this method we’ll get any Facebook response in the form of an array. 
    // In this example the method will be used twice. Once to get the user’s name to 
    // when showing the welcome message and next to get the ID of the published post. 
    // Inside the result array there the data is stored as a NSDictionary.  


    if ([result isKindOfClass:[NSData class]]) 
    { 
     NSLog(@"Profile Picture"); 
     imageView.image = [UIImage imageWithData:result]; 
     //[profilePicture release]; 
     //profilePicture = [[UIImage alloc] initWithData: result]; 
    } 


    if ([result isKindOfClass:[NSArray class]]) { 
     // The first object in the result is the data dictionary. 

     result = [result objectAtIndex:0]; 


    } 

    if ([result isKindOfClass:[NSDictionary class]]) { 
     // If the current result contains the "first_name" key then it's the user's data that have been returned. 
     // Change the lblUser label's text. 
     [lblUser setText:[NSString stringWithFormat:@"Welcome %@!", [result objectForKey:@"first_name"]]]; 
     // Show the publish button. 
     [btnPublish setHidden:NO]; 
    } 

} 
0

Facebook服务器给你的回应是一个字典,而不是一个数组。删除有关NSArray两条线和简单的使用:

if ([result objectForKey:@"first_name"]) { 
     [lblUser setText:[NSString stringWithFormat:@"Welcome %@!", [result objectForKey:@"first_name"]]]; 
     NSLog(@"%@", lblUser); 
     // Show the publish button. 
     [btnPublish setHidden:NO]; 
} 
+0

我不认为Facebook的回应是字典我刚换到这和它的作品如果([result isKindOfClass:[NSArray class]] –