我在这里错过了什么:
+ (id) JSONObjectWithData:(NSData *)data {
#if __IPHONE_OS_VERSION_MAX_ALLOWED < 50000
//iOS < 5 didn't have the JSON serialization class
return [data objectFromJSONData]; //JSONKit
#else
NSError *jsonParsingError = nil;
id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonParsingError];
return jsonObject;
#endif
}
我在基础 SDK 5.0 上编译,部署版本是 4.0。当我在装有 4.2.1 的 iPhone 3G 上运行它时,我得到......
dyld:找不到符号:_OBJC_CLASS_$_NSJSONSerialization
启动时崩溃....
最佳答案
#if __IPHONE_OS_VERSION_MAX_ALLOWED < 50000
在编译时评估。如果您使用 iOS 5 SDK 编译您的代码,则条件将为假。无论如何都会使用 NSJSONSerialization 代码。
您应该检查 NSJSONSerialization
类存在。像这样:
+ (id) JSONObjectWithData:(NSData *)data {
Class jsonSerializationClass = NSClassFromString(@"NSJSONSerialization");
if (!jsonSerializationClass) {
//iOS < 5 didn't have the JSON serialization class
return [data objectFromJSONData]; //JSONKit
}
else {
NSError *jsonParsingError = nil;
id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonParsingError];
return jsonObject;
}
return nil;
}
关于objective-c - iOS 4 上运行的 NSJSONSerialization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8429972/