Проблемы с объявлением уже существующего NSMutableArray в новом классе - PullRequest
0 голосов
/ 13 июня 2010

У меня есть класс (DataImporter), в котором есть код для загрузки RSS-канала.У меня также есть представление и отдельный класс (TableView), который отображает данные в UITableView и запускает процесс анализа, сохраняя проанализированную информацию в NSMutableArray (items), который находится в подклассе (TableView).

ТеперьЯ хочу добавить UIMapView, который отображает элементы в (items) NSMutableArray.В этом и заключается проблема - мне нужно каким-то образом получить данные из NSMutableArray (items) в новый подкласс (mapView), с которым я борюсь - и я предпочтительно не хочу создавать новый класс для загрузки данныхснова для класса mapView, когда он уже находится в памяти приложений.Есть ли способ передать информацию из класса NSMutableArray (items) в класс (mapView) (т.е. как я могу объявить NSMutableArray в классе (mapView))?

Вот обзоро том, как работает система: Приложение открыто> Данные загружены (с использованием класса DataImporter) при запуске (TableView) viewDidLoad> Данные, хранящиеся в NSMutableArray, доступны для класса (TableView)> И отсюда мне нужно получить доступ и объявить массив изновый класс (mapView).

Любая помощь очень ценится, спасибо.

Код для viewDidLoad MapKit:

Data *data = nil;
NSString *ilocation = [data locations];
NSString *ilocation2 = @"New Zealand";

NSString *inewlString;
inewlString = [ilocation stringByAppendingString:ilocation2];
NSLog(@"inewlString=%@",inewlString);

if(forwardGeocoder == nil)
{
    forwardGeocoder = [[BSForwardGeocoder alloc] initWithDelegate:self];
}   

// Forward geocode!
[forwardGeocoder findLocation: inewlString];

Код для анализа данных в исходном массиве NSMutable:

- (void)beginParsing {
    NSLog(@"Parsing has begun");
    //self.navigationItem.rightBarButtonItem.enabled = NO;
    // Allocate the array for song storage, or empty the results of previous parses
    if (incidents == nil) {
        NSLog(@"Grabbing array");
        self.datas = [NSMutableArray array];
    } else {
        [datas removeAllObjects];
        [self.tableView reloadData];
    }
    // Create the parser, set its delegate, and start it.
    self.parser = [[DataImporter alloc] init];      
    parser.delegate = self;
    [parser start];
}

1 Ответ

0 голосов
/ 13 июня 2010

Поскольку у вас есть свойство self.datas, вы можете получить ссылку на данные, просто вызвав ее из вашего UIMapView или присвоив некоторому целевому свойству в представлении карты из любого объекта, контролирующего оба представления:

mapView.someArrayProperty = tableView.datas

Однако вы можете переосмыслить общую структуру программы. Хранение того, что в действительности модель данные внутри просмотров , не является хорошей практикой и, как правило, делает вещи похожими на спагетти, когда вы добавляете больше объектов и функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...