我正在使用SBJson解析器开始一个新项目,人们似乎建议将其作为新的iOS项目的互联网上最好的。我有一个非常严重的问题,就是当前的方法Stig Brautaset声称你可以在current release (3.1)上使用,似乎已被弃用,或者至少是我的编译器所说的。我似乎无法工作:
NSDictionary *dict = [responseString JSONValue];
这似乎是最新的方式或:
NSDictionary *dict = [parser objectWithString:responseString error:&error];
解析器是sbjson解析器。 XCode突出显示了这两个函数,并告诉我它们已被弃用。
我在这里做错了什么?
答案 0 :(得分:9)
- (id)objectWithString:(NSString*)jsonText error:(NSError**)error
和
- (id)JSONValue;
从版本3.2开始,已弃用,它将在4.0版中删除。 你确定你使用的是3.1吗?
另一方面
- (id)objectWithString:(NSString *)repr;
和
- (id)objectWithData:(NSData*)data;
看起来可用而不是弃用。
我建议你改用它们。
另一种方法是使用Apple提供的NSJSONSerialization类。
答案 1 :(得分:0)
使用xcode轻松解决问题的一般方法。 无论何时弃用任何代码行,最好按住键盘上的“alt”键并移动提出问题的对象并单击。 Xcode然后建议更好的编写代码的方法。 希望这有帮助
答案 2 :(得分:0)
尝试替换:
NSDictionary *dict = [responseString JSONValue];
使用:
NSDictionary *dict = [[SBJsonParser new] objectWithString:responseString];
或更好:
SBJsonParser *parser = [SBJsonParser new];
id object = [parser objectWithString:responseString];
if (parser.error || ![object isKindOfClass:[NSDictionary self]])
@throw parser.error ?: @"not a json dictionary";// or any error handling alternative
NSDictionary *dict = object;