我写了以下代码登录Facebook帐户,然后在用户的Facebook墙上发表评论。它运行良好,并在Facebook墙上发布了下面提到的所有内容,但它异常地抛出了以下异常和终止应用程序。我抓了很多头,但没有发现任何问题。有人能告诉我我的代码出了什么问题吗?仅供参考,我已经将链接1和链接2的代码组合在一起了。谢谢!
例外:
-[NSConcreteMutableData objectForKey:]: unrecognized selector sent to instance 0x34a560
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteMutableData objectForKey:]: unrecognized selector sent to instance 0x34a560'
登录Facebook代码:
- (void)login {
NSLog(@"Logging into Facebook...");
UniversalAppAppDelegate *delegate = (UniversalAppAppDelegate *) [[UIApplication sharedApplication] delegate];
NSArray* requiredPermissions = [NSArray arrayWithObjects:@"read_stream", @"publish_stream", @"offline_access",nil];
if (![[delegate facebook] isSessionValid]) {
[delegate facebook].sessionDelegate = self;
[[delegate facebook] authorize:requiredPermissions];
}
}
张贴在墙上:
- (void)postCommentToFacebookWall:(NSString*)comment
{
UniversalAppAppDelegate *delegate = (UniversalAppAppDelegate *) [[UIApplication sharedApplication] delegate];
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
kAppId, @"api_key",
@"This is test message from my iPhone App",@"message",
nil];
[[delegate facebook] requestWithMethodName:@"stream.publish"
andParams:params
andHttpMethod:@"POST"
andDelegate:self];
}
我遇到了这个问题,直到我意识到我正在中搜索结果
- (void)请求:(FBRequest*)请求didLoad:(id)结果
在发布和登录/授权时调用此方法。作为授权的一部分,我正在搜索对象/密钥,但当张贴到墙上时,结果返回为NSMutableData,而不是NSMUtableDict。只要确保你没有在这里搜索钥匙。。。
我没有发现这个代码有任何问题。但看起来似乎有一些NSMutableData对象试图使用NSDictionary。即NSData没有"objectForKey:"方法。这可能发生在其他应用程序中。
您是否实现了回调方法?您在"requestWithMethodName:"中将自己设置为委托。