Как скопировать NSMutableArray с NSDictionary в другой NSMutableArray - PullRequest
0 голосов
/ 14 июля 2011

У меня есть KML-файл, который я вызываю с NSURL каждые 10 секунд. В этом методе я делаю следующее, чтобы сохранить широту, долготу и цвет данных.

cachedData является переменной экземпляра NSMutableArray.

masterData является переменной экземпляра NSMutableArray.

masterDataCounter является переменной экземпляра int.

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

После анализа данных я хочу сохранить все содержимое массива cachedData в ассоциативный массив (masterData, как указано выше), чтобы я мог ссылаться на него по индексам и затем очистить cachedData для сохранения в памяти.

Пример

индекс массива | данные хранятся

0 | все содержимое кэшированных данных при первом извлечении

1 | все содержимое кэшированных данных при втором извлечении

и т.д.

После анализа KML я запускаю этот код:

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

Это правильный путь? Как я могу сослаться, например, на общее количество точек данных, сохраненных во втором прогоне?

Это правильно? По какой-то причине я не получаю правильных результатов, когда пытаюсь это сделать:

[[masterData objectAtIndex:1] count];

1 Ответ

0 голосов
/ 16 июля 2011

Для начала, есть лучший способ написать сегмент, который я описал выше.

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];
...