5

私は Objective-C (オタク牧場の本) を読んでいますが、次の質問について考えずにはいられません: NSArray または NSDictionary (変更可能なサブクラスの有無にかかわらず) のどちらのコレクション タイプを使用するかを決定するにはどうすればよいですか? URLからコンテンツを読み取るときは?

PHPスクリプトからJSONデータを読んでいるとしましょう(シナリオが扱っています)、どれを使用しますか?データの構造 (JSON など) に依存することが多くの参考文献で述べられていることは知っていますが、2 つの構造の概要を明確に説明できますか?

助けてくれてありがとう:)

4

3 に答える 3

10

NSArray基本的には、インデックスによってアクセスできる、順序付けられたオブジェクトのコレクションにすぎません。
NSDictionaryキーによるオブジェクトへのアクセスを提供します (通常は NSStrings ですが、ハッシュ テーブルのような任意のオブジェクト タイプである可能性があります)。

URL 経由で読み込まれた JSON 文字列からオブジェクト グラフを生成するNSJSONSerializationには、Objective-C オブジェクト構造を生成する を使用します。結果のオブジェクトは、JSON 文字列によって異なります。JSON の最上位要素が配列 (で始まる"[") の場合、NSArray を取得します。最上位要素が JSON オブジェクト (で始まる"{") の場合、NSDictionary を取得します。

于 2013-02-01T09:41:46.473 に答える
2

NSArray同じタイプのオブジェクトのコレクションがある場合、およびオブジェクトに属性がある場合に使用NSDictionaryする必要があります。

持っている場合は、、、、およびをperson含むオブジェクトを辞書に入れます。namephone numberemail

そうすることで、値の順序をランダムにすることができ、より信頼性の高いコードが得られます。

複数の人物が必要な場合は、人物オブジェクトを配列に配置できます。

そうすることで、ユーザーオブジェクトを反復処理できます。

于 2013-02-01T09:34:13.023 に答える
0

「withContentOfURL」または「withContentOfFile」では、URL またはファイル内のデータが Cocoa で必要とされる特定の形式である必要があります。JSON はその形式ではありません。これらのメソッドを使用できるのは、同じデータを使用して、最初に自分でファイルまたは URL にデータを書き込んだ場合のみです。NSArray を作成すると、NSArray を読み取ることができます。NSDictionary を作成すると、NSDictionary を読み取ることができます。それ以外はすべて失敗します。

于 2015-11-15T13:08:11.577 に答える