如何访问数组对象内的对象

时间:2014-08-23 00:53:00

标签: ios objective-c

我正在为IOS创建一个应用程序,并且正在努力访问我在表视图单元格中显示的数组中的对象。

这是我每次循环循环时用于将对象添加到数组的代码。

for (int i = 0; i < [parsedArray count]; i++) {

    HPTBusStops *busStops = [[HPTBusStops alloc] init];
    NSArray *informationArray = [parsedArray objectAtIndex:i];

    busStops.busStopNumber = [informationArray objectAtIndex:0];
    busStops.busStopName = [informationArray objectAtIndex:1];
    busStops.latitude = [informationArray objectAtIndex:2];
    busStops.longitude = [informationArray objectAtIndex:3];

    [self.busStopsHolder addObject:busStops];

}

HPTBusStops类显然是自定义的,后来在主视图控制器中,我想在编程单元时通过busStopsHolder数组重新访问这些属性,在这部分中:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    HPTBusStopsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BusStopCell" forIndexPath:indexPath];

    return cell; 
}

老实说,我很不确定如何通过busStopHolder数组访问busStops对象的属性。

任何帮助将不胜感激

由于 麦

2 个答案:

答案 0 :(得分:0)

执行此操作的过于简单的方法如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    HPTBusStopsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BusStopCell" forIndexPath:indexPath];

    HPTBusStops *busStops = yourSourceArray[indexPath.row];
    cell.textLabel.text = busStops.name;

    return cell;
}

如果tableView有一个部分,您可以使用tableView的indexPath.row属性来确定您正在处理的索引,将其用作访问源数组中相关对象的索引,然后根据该索引处的特定对象自定义单元格。在示例代码中,我假设在busStops对象上有一个名称属性,用于示例目的。

确保在numberOfRowsInSection方法中将行数设置为源数组中的对象数,无论是什么。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return yourSourceArray.count;
}

答案 1 :(得分:0)

在我看来,你可能会遇到范围问题......

你需要制作&#34; busStopsHolder&#34;包含for循环的类的@property,并将该类实例化为主视图控制器中的实例变量。

你班上的

,比如MyInfoClass.h:

@property (strong, nonatomic)  NSMutableArray *busStopsHolder;
MyInfoClass.m中的

synthesize busStopsHolder;

确保已在MyInfoClass中初始化了busStopsHolder数组...

(id) init {

    busStopsHolder = [[NSMutableArray alloc] init];

}

然后在主视图控制器.h:

#import "MyInfoClass.h"

@interface myMastserViewController : UIViewController  {

    MyInfoClass *infoClass;

}

则...

- (void) viewDidLoad {

    infoClass = [[MyInfoClass alloc] init];

    [infoClass methodToLoadBusStops];

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    HPTBusStopsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BusStopCell" forIndexPath:indexPath];

    HPTBusStop *busStop = [[infoClass busStopsHolder] objectAtIndex:indexPath.row];

    [[cell textLabel] setText:[busStop busStopName]]

    return cell; 
}