我遇到了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
?
感谢大家的帮助。
答案 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,看看会发生什么。