0

私は現在、NSXMLParserを使用してXMLパーサーを作成しようとしています。NSMutableDictionariesの配列を生成することになっています。

ネストされたタグをネストされた辞書にすることは、私の脳に本当に苦労しています。また、私はこの言語に非常に慣れていないことにも気付くかもしれません。これは私にとっては多少の練習です。

私の実際の質問は:

と呼ばれるNSMutableArrayがあるとしxmlArrayます。これは、ネストされた配列と辞書の配列として、最終的にxmlファイルのサブ要素を含むすべての要素を含む必要がある配列です。

currentArrayこれで、の特定のサブ配列を参照するという別の変数があるかもしれませんxmlArray

これは次のようになります。

currentArray = [xmlArray objectAtIndex: 3];

xmlArrayここで、の使用の別の部分を参照したいと思うかもしれませんcurrentArray

それで、私がこれを行うとどうなりますか?

currentArray = [xmlArray objectAtIndex: 5];

これは言うことと同じではありません:

[xmlArray objectAtIndex: 3] = [xmlArray objectAtIndex: 5];

参照を別のオブジェクト([xmlArray objectAtIndex: 5])に切り替えていますか、それとも最初に参照されているオブジェクト([xmlArray objectAtIndex: 3])を変更していますか?

最初に参照されたオブジェクトを変更せずに、別のオブジェクトへの参照を変更するにはどうすればよいですか?

私はこれがおそらく本当におかしな質問であることを知っています、私はまだ誰かが助けたいと思うかもしれないことを望みます。:) ありがとうございました!!!:)

4

1 に答える 1

2

これは変数がどのように機能するかではありません。

どうしたの?

NSMutableArray* currentArrayは変数であり、処理しているオブジェクトへのポインタを保持しますこれがどのように使用されるかのプロセスを以下で参照してください。

これにより、インデックス3にあるオブジェクトのポインタアドレスが取得され、現在の配列に格納されます。

currentArray = [xmlArray objectAtIndex: 3];

currentArrayこれにより、保持されている値(これは単なるポインター)が別のポインターに置き換えられます。今回は、インデックス5のオブジェクトに置き換えられます。

currentArray = [xmlArray objectAtIndex: 5];

内のポインタを変更しcurrentArrayても、配列自体の内容には影響しません。

配列内の何かをリセットしてインデックスのポインタを変更することはないため、これも何もしません。配列に書き込むのではなく、配列から読み取るだけです。

[xmlArray objectAtIndex: 3] = [xmlArray objectAtIndex: 5];

あなたの質問について...

参照を別のオブジェクト([xmlArray objectAtIndex:5])に切り替えていますか、それとも最初に参照されているオブジェクト([xmlArray objectAtIndex:3])を変更していますか?

オブジェクトへの参照を切り替えていますが、最初のオブジェクトは変更していません。変数管理はかなり基本的なものなので、Objective-Cの概要とCスタイルのプログラミングの概要を読むことを強くお勧めします。

于 2012-11-07T17:58:18.943 に答える