无法使用addObject方法添加到NSMutableArray

时间:2012-03-10 13:00:28

标签: objective-c ios uitableview

我遇到了NSMutableArrayObject的addObject方法的问题。这是我现在正在使用的代码:

- (void)addBirdSightingWithName:(NSString *)name location:(NSString *)location {
    BirdSighting *bird;
    NSDate *today = [NSDate date];
    bird = [[BirdSighting alloc] initWithName:name location:location date:today];
    [self.masterBirdSightingList addObject:bird];
    NSLog(@"Elements: %d", [self.masterBirdSightingList count]);
}

当此代码运行时,NSLog调用将值0输出到控制台。我不知道是什么导致了这一点。

修改

我已经深入研究了代码,我发现问题是我的BirdSightingDataController从未初始化。现在我的问题是:我在哪里可以为我的BirdSightingDataController放置init?在viewDidLoad

感谢大家的帮助。

3 个答案:

答案 0 :(得分:1)

alloc是否已将记忆留给masterBirdSightingList

self.masterBirdSightingList = [[NSMutableArray alloc] init];

答案 1 :(得分:0)

几乎在每个不调用cellForRowAtIndexPath:的情况下,因为numberOfRowsInSection:返回0。

在那里放一个日志并确保你返回多个项目,你应该能够看到你的单元格。如果您需要进一步的帮助,请在您的代码中发布代码:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

答案 2 :(得分:0)

检查您的属性访问者。你确定它正在返回正确的物体吗?确保属性的名称与实例变量匹配,或者您已正确指定它(例如:@synthesize masterBirdSightingList = _masterBirdSightingList;。如果属性访问器与iVar不匹配,它将返回nil。当然,如果你'重新手动实现访问者检查你的代码。如果你不是,你也可以尝试手动实现它以确保。

要快速检查,请移除self.masterBirdSightingList并将其替换为masterBirdSightingList(假设是iVar名称)直接访问iVar,看看会发生什么。