0

フレームワークを使用して JSON を逆シリアル化していますTouchJSON。解析から得られる辞書の配列は、UITableView.

解析した JSON の値の一部が空である可能性があります。これをNSLogコンソールに表示すると、値は次のようになります。

id = 1234;
title = "Hello, World";
description = "<null>"; 
detail = "The world says hello";

ここでは、サーバーから取得したときの説明値は空の文字列でした。

したがって、TouchJSON は説明値が文字列型であることを認識しますが、サーバーの本来の意図は、これが空の文字列であることを伝えることでした。description = @"";

後で説明の値をUILabelsテキスト プロパティに設定しようとすると、アプリがクラッシュします。

だから私の質問は、JSON に NSNumbers と NSStrings の両方があるのですが、TouchJSON の逆シリアル化メソッドからの結果をトラバースし、すべての値をテストする必要がありますか?どうすればよいですか?

NSNumber 値が空の場合に何が起こるかをシミュレートできません。これをどのようにテストしますか? その場合、NSNumber 値は「null」ではなく nil になりますか?

4

1 に答える 1

2

私は SBJSON ライブラリを使用していましたが、同じ問題に遭遇しました。私の解決策はあなたのケースにも当てはまります。欠損値を処理するようにライブラリを変更し、返されたコレクションにそれらを設定しまし+[NSNull null]。.のNSNull代わりにNSString. @""しかし、これは、空の文字列を意味するのか、設定されていない値を意味するのかを判断する必要がある、疣贅のより明白なバージョンです。

于 2010-11-09T09:51:56.800 に答える