5

我正在使用 SBJson 解析器开始一个新项目,人们似乎将其推荐为互联网上新 iOS 项目的最佳选择。我遇到了一个非常严重的问题,即 Stig Brautaset 声称您可以在当前版本 (3.1)上使用的当前方法似乎已被弃用,或者至少这就是我的编译器所说的。我似乎无法工作:

NSDictionary *dict = [responseString JSONValue];

这似乎是执行此操作的最新方法,或者:

NSDictionary *dict = [parser objectWithString:responseString error:&error];

其中 parser 是一个 sbjson 解析器。XCode 突出显示了这两个函数并告诉我它们已被弃用。

我在这里做错了什么?

4

3 回答 3

9

查看源代码herehere看起来两者

- (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类。

于 2013-01-03T16:52:54.223 回答
0

只是使用 xcode it self 轻松解决问题的一般方法。每当不推荐使用任何代码行时,最好按住键盘上的“alt”键并移过引发问题的对象并单击。Xcode 然后建议编写代码的更好方法。希望这可以帮助

于 2013-01-11T16:46:00.213 回答
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;
于 2015-11-15T16:52:44.397 回答