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を使って簡単に解決するための一般的な方法です。コードのいずれかの行が非推奨になった場合は、キーボードの「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 に答える