2013-01-03 18 views
5

SBJsonパーサーで新しいプロジェクトを開始しています.SBJsonパーサーは、新しいiOSプロジェクトのためにインターネット上で最高のものとして推奨されているようです。私はStig Brautasetがあなたがcurrent release (3.1)で使うことができると主張している現行の方法は、廃止されているように思えるか、少なくとも私のコンパイラが言っていることであるという、本当に問題のある問題を抱えています。私は仕事にいずれかを取得するように見えるカント:SBJson iOSパーサーメソッドは推奨されていませんか?

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

パーサはsbjsonパーサーです:そうです

NSDictionary *dict = [responseString JSONValue]; 

はこのまたはを行うには、最新の方法であること。 XCodeはこれらの関数の両方を強調表示し、それらが非難されていると私に伝えます。

私はここで間違っていますか?

+2

は、なぜあなたはリンゴのNSJSONSerializationクラスを使用していませんか? –

+0

[JSONKit](https://github.com/johnezang/JSONKit/)はパーサーにとって最適です。 iOS 5.0以上の外部コードとターゲットデバイスを使用したくない場合は、NSJSONSerializationは問題ありません。 – mspasov

+0

もしあなたが特にストリーミングサポートを必要としない限り、あなたはiOS4.x以下を気にしない(そして新しいプロジェクトについては誰ですか?)私はNSJSONSerializationを勧めます。しかし、SBJsonの現在のバージョンは実際には3.2であり、あなたが言及しているメソッドの非推奨は[よく文書化されています](http://sbjson.org/news/2013/sbjson-v3.2.html)です。 –

答えて

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クラスを使用することもできます。

+0

ありがとう、私はNSJSONSerializationを使用して終了しました。 SBJsonとの取引はどういうものか分かりませんが、私は間違いなく最新版を持っていました。ドキュメントはここではちょっとしたものです – Jameo

+0

あなたは新しいバージョンを持っていました。これは明らかに3.2です。ただし、ドキュメントがないため、廃止予定の警告が表示されませんでした。 –

+0

正確に何の資料が欠けていますか? (私はそれを改善できるように頼むだけです)http://sbjson.org/news/2013/sbjson-v3.2.htmlを参照してください。ここでの警告:http://sbjson.org/api/3.2/Classes/SBJsonParser.html#//api/name/objectWithString:error: –

0

xcodeを使って簡単に解決するための一般的な方法です。 コードの行を非推奨にする場合は、キーボードの「alt」キーを押したまま、オブジェクトを上に移動して問題を発生させ、クリックしてください。 Xcodeはあなたのコードを書く良い方法を提案します。 希望はこれが

+0

SBJson廃止予定には適用されません。提案はありません。 –

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; 
関連する問題