NSMutableArray和objectAtIndex不起作用 - 仅显示数组中的最后一项

时间:2012-01-20 01:04:52

标签: xcode sqlite nsarray

好的,这是使用Xcode的第三天,所以请保持愉快。

我正在尝试设置一个简单的表来显示现有sqlite数据库中的记录。我已经将数据库加载到NSMutableArray并验证了大小是否正确,但我无法循环并正确地获取数据。显示的只是表格的最后一条记录。

以下是示例代码:

    while([results next]) {

        self.subject_id = [results stringForColumn:@"SUBJECT_ID"];
        self.subject = [results stringForColumn:@"SUBJECT"];
        self.category = [results stringForColumn:@"CATEGORY"];

        [subjects addObject:self];
        NSLog(@"AFTER record: %@ - %@ - %@", self.subject_id, self.subject, self.category);        

    }

当循环打印到日志时,我验证是否正在循环正确的数据。

然后我在填充数组后立即运行它,每次都得到相同的最后一个条目:

    //PULL UP THE THINGY AND SEE IF IT WORKS

    Subject *sub; 

    int x = 0;    
    for (sub in subjects){

        Subject *xsub = [subjects objectAtIndex:x];

        NSLog(@"    %i sub data ------- %@, -----  %@", x, xsub.subject, xsub.category);
        x = x+1;
    };

    sub = [subjects objectAtIndex:50];

    NSLog(@"    sub data ------- %@, -----  %@", sub.subject, sub.category);

我甚至尝试专门从这个数组中提取一条记录,但是我得到了相同的最后一条记录而不是我要求的记录:

sub = [subjects objectAtIndex:50];

“主题”是一个给出我的表的字段名称的类。我还没有使用实体功能。

我的头文件声明了这样的字段名称:

@property (nonatomic, retain) NSString * subject_id;
@property (nonatomic, retain) NSString * subject;
@property (nonatomic, retain) NSString * category;

我使用FMDB包装器从我的数据库中获取数据,并将来自几个不同tableView示例的类拼凑在一起,例如Animals one。

有人能就如何调试这个给我一些指导吗?

1 个答案:

答案 0 :(得分:0)

我的猜测是要么每个数组对象都加载了相同的文本,要么多次将相同的对象添加到数组中。

无论哪种方式,我都会仔细研究数组加载代码。