FBFriendPickerViewController 在 FB-IOS SDK3.0 中崩溃

Posted

技术标签:

【中文标题】FBFriendPickerViewController 在 FB-IOS SDK3.0 中崩溃【英文标题】:FBFriendPickerViewController crashing in FB-IOS SDK3.0 【发布时间】:2012-08-07 06:11:54 【问题描述】:

我正在 ios 上开发 Facebook SDK3.0,我使用 developers.facebook.com 生成 Facebook 密钥

my App ID/API Key 
165158463618789

登录工作正常,但使用FBFriendPickerViewController 时会崩溃,

我使用了以下代码:

   FBFriendPickerViewController *friendPicker = [[FBFriendPickerViewController alloc]     init];
   self.friendPickerController = friendPicker;

   [friendPicker loadData];
   friendPicker.navigationItem.title = @"Pick Friends";
   friendPicker.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] 
                                                  initWithTitle:@"Done" 
                                                  style:UIBarButtonItemStyleBordered 
                                                  target:self 
                                                                 action:@selector(doneButtonWasPressed:)];
    friendPicker.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] 
                                                 initWithTitle:@"Cancel" 
                                                 style:UIBarButtonItemStyleBordered 
                                                 target:self 
                                                 action:@selector(cancelButtonWasPressed:)];
 [self.navigationController pushViewController:friendPicker animated:YES];

我得到崩溃的原因

-[__NSCFDictionary 长度]:无法识别的选择器发送到实例 0x3024d0 2012-08-07 11:13:12.430 IndusPatient[784:707] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序, 原因:'-[__NSCFDictionary 长度]:无法识别的选择器发送到 instance 0x3024d0' * 首先抛出调用栈: (0x321a888f 0x341fe259 0x321aba9b 0x321aa915 0x32105650 0x320f1f19 0x3210e2cd 0x3210d1ad 0x3210e279 0x37a73fb1 0x37a73e8b 0x1a9735 0x1a9bbf 0x31c2fefb 0x31c2efd9 0x31c2e763 0x31bd2f37 0x321071fb 0x33e6baa5 0x33e6b6bd 0x33e6f843 0x33e6f57f 0x33e674b9 0x3217cb1b 0x3217ad57 0x3217b0b1 0x320fe4a5 0x320fe36d 0x31255439 0x31bfdcd5 0xcdd2b 0xcdccc) 终止称为抛出异常

【问题讨论】:

【参考方案1】:

我也遇到了这个问题,但现在我已经解决了。

使用以下方法/代码,我解决了问题

在 AppDelegate 中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

添加这一行

[FBFriendPickerViewController class];

在你的 viewController 头文件中添加

@property (retain, nonatomic) FBFriendPickerViewController *friendPickerController;

在你的 viewController 实现文件中添加一个函数

if (self.friendPickerController == nil) 
    // Create friend picker, and get data loaded into it.
    self.friendPickerController = [[FBFriendPickerViewController alloc] init];
    self.friendPickerController.title = @"Pick Friends";
    self.friendPickerController.delegate = self;


[self.friendPickerController loadData];
[self.friendPickerController clearSelection];

[self presentModalViewController:self.friendPickerController animated:YES];

所以我没有使用导航控制器风格的编程。

【讨论】:

以上是关于FBFriendPickerViewController 在 FB-IOS SDK3.0 中崩溃的主要内容,如果未能解决你的问题,请参考以下文章