2011-07-14 7 views
0

私は10秒ごとにNSURLを呼び出すKMLファイルを用意しています。このメソッドでは、データの緯度、経度、および色を格納するために次の処理を行っています。NSDictionaryを含むNSMutableArrayを別のNSMutableArrayにコピーする方法

cachedDataはNSMutableArrayインスタンス変数です。

masterDataはNSMutableArrayインスタンス変数です。

masterDataCounterはintインスタンス変数です。

[cachedData addObject:[[[NSDictionary alloc] 
        initWithObjectsAndKeys:latitude,@"latitude",longitude,@"longitude",color,@"color",nil] autorelease]]; 

データが解析され、Iは、(上述のようmasterData)連想配列にcachedDataアレイの全内容を保存したいので、私は、インデックスによってそれを参照してメモリに保存するcachedDataをクリアすることができたら。

index of array |保存データ

0 |最初のプルでキャッシュされたデータの内容全体

1 |

[masterData insertObject:cachedData atIndex:masterDataCounter]; 
[cachedData removeAllObjects]; 
masterDataCounter++; 

これが正しい方法です。第二に、キャッシュされたデータの内容全体は、KMLを解析した後、私はこのコードを実行

など

を引きますか?たとえば、2回目の実行で保存されたデータポイントの総数をどのように参照できますか?

そうですか?何らかの理由で私は試しても正しい結果が得られません:

[[masterData objectAtIndex:1] count]; 

答えて

0

先に説明したセグメントを書く方が良い方法があります。 2番目のコードスニペットの場合

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:latitude,@"latitude",longitude,@"longitude",color,@"color",nil]; 
[cachedData addObject:dict]; 
[dict release]; 

、それはのように書き換えることができる。このことから

[masterData insertObject:[[cachedData copy] autorelease] atIndex:masterDataCounter]; 
masterDataCounter++; 

はい、あなたは確かに、次のようなメインmasterData NSMutable配列を参照することができます。

[[masterData objectAtIndex:desiredIndexNumber] count]; 
関連する問題