Я использую SBJSON из Facebook SDK. Я только что удалил SBJSON из библиотеки GTMOAuth2, чтобы избежать дублирования символа, как предложено 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
Здесь Я задавал тот же вопрос в дискуссионной группе GTM-OAuth2. Это произошло после того, как я ответил на вопрос, но я забыл обновить свой ответ здесь. Итак, вот что я сделал:
- Используйте Facebook SDK и GTMOAuth2 в качестве статических библиотек (вероятно, это не обязательно)
- Получить последнюю версию SBJSON с здесь
- Замените SBJSON в Facebook SDK на этот
- Удалить источники SBJSON из GTM-OAuth2 (или удалить их из фазы сборки)
Это дает вам самую последнюю версию библиотеки SBJSON, включенной в SDK Facebook. И Facebook SDK, и GTM-OAuth2 будут использовать его. Это должно работать.