我使用Facebook的sdk中的SBJSON。我刚刚从GTMOAuth2库中删除了SBJSON,以避免Ishu
建议的重复符号。 接下来的问题是GTMOAuth2首先尝试使用SBJSONParser,并且该类没有objectWithString:error:方法,只有SBJSON具有该方法。我修改了代码以使用SBJSON类,甚至不尝试使用SBJSONParser,因为它不起作用。在原始版本SBJsonParser
首先被检查,然后SBJSON。
- (NSDictionary *)dictionaryWithJSONData:(NSData *)data {
...
// try SBJsonParser or SBJSON
Class jsonParseClass = NSClassFromString(@"SBJSON");
/*
if (!jsonParseClass) {
jsonParseClass = NSClassFromString(@"SBJsonParser");
}
*/
if (jsonParseClass) {
GTMOAuth2ParserClass *parser = [[[jsonParseClass alloc] init] autorelease];
NSString *jsonStr = [[[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding] autorelease];
if (jsonStr) {
obj = [parser objectWithString:jsonStr error:&error];
#if DEBUG
if (error) {
NSLog(@"%@ error %@ parsing %@", NSStringFromClass(jsonParseClass),
error, jsonStr);
}
#endif
return obj;
}
}
...
}
UPDATE Here我问GTM-OAuth2用户讨论组中同样的问题。这是在我回答问题后发生的,但我忘记了在这里更新我的答案。总之这是我做过什么:
- 使用两种Facebook的SDK和GTMOAuth2为静态库(大概这是没有必要的)
- 从here
- 获取最新版本SBJSON与替换的Facebook SDK的SBJSON这一个
- 删除GTM-的OAuth2的SBJSON来源(或从构建阶段删除)
这使你与包括外交事务委员会的最最新SBJSON库电子书SDK。 Facebook SDK和GTM-OAuth2都将使用该SDK。它应该工作。
好吧,但我不完全确定哪一个是最新的。 –
好吧不是一个问题删除任何你想要的。你的工作也可以用旧的完成。 – Ishu
不幸的是,它似乎没有工作。它给了我一个异常'NSInvalidArgumentException,原因: - [SBJsonParser objectWithString:错误:]:无法识别的选择发送到实例0x45bb1c0'我不知道究竟是什么错误,但它是有关json解析器,如果没有别的作品,我可能修改oauth库,使其与从Facebook的js解析器工作# –