在新类中声明已存在的NSMutableArray的问题

时间:2010-06-13 09:48:55

标签: objective-c iphone nsmutablearray mapkit

我有一个类(DataImporter),它有下载RSS源的代码。我还有一个视图和单独的类(TableView),它在UITableView中显示数据并启动解析过程,将解析的信息存储在位于(TableView)子类中的NSMutableArray(items)中。

现在我想添加一个UIMapView,它显示(items)NSMutableArray中的项目。这就是问题所在 - 我需要以某种方式从(items)NSMutableArray中获取数据到我正在努力的新(mapView)子类中 - 我最好不要创建一个新类来下载数据再次为mapView类,它已经在应用程序内存中。有没有办法可以将信息从NSMutableArray(items)类传递给(mapView)类(即如何在(mapView)类中声明NSMutableArray?)

以下是系统运作方式的概述: 应用程序打开>当(TableView)viewDidLoad运行>时下载的数据(使用DataImporter类)存储在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 :(得分:0)

由于您有一个属性self.datas,您可以通过从UIMapView调用该数据来获取对数据的引用,或者通过从地图视图中的某个目标属性分配任何对象来控制两个视图:

mapView.someArrayProperty = tableView.datas

但是,您可能想重新考虑整体计划结构。在视图中保留有效模型数据并不是一种好的做法,并且在添加更多对象和功能时,往往会使事情变得像意大利面一样。