好的,所以我有一个应用程序,我试图用plist文件的内容填充UITableView。我一直无法找到其他人在这方面遇到问题以及他们如何修复它所以我可能只是一个白痴但我需要知道它们是如何一样的!
我确定错误出现在我的viewDidLoad部分或我的tableview部分...但也许其他人可以给我一个更好的主意。
-(void)viewDidLoad {
NSString *path = [[NSBundle mainBundle] pathForResource:@"datam" ofType:@"plist"];
NSArray *array = [[NSArray alloc] initWithContentsOfFile:path];
self.listData = array;
[array release];
[super viewDidLoad];
}
#pragma mark -
#pragma mark Table View Data Source Methods
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
return [self.listData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *SimpleTableIdentifier = @"Identifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:Identifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier] autorelease];
}
NSUInteger row = [indexPath row];
cell.textLabel.text = [listData objectAtIndex:row];
return cell;
}
答案 0 :(得分:1)
我认为[super viewDidLoad]应该是viewDidLoad方法中最重要的。
答案 1 :(得分:0)
NSString *path = [[NSBundle mainBundle] pathForResource:@"datam" ofType:@"plist"];
NSArray *array = [[NSArray alloc] initWithContentsOfFile:path];
这似乎有点奇怪;你的文件名为“datam.plist”?
尝试在整个代码中使用一些NSLog()来查看数组在任何给定时间的状态:
NSLog(@"%@ has %i elements",ARRAY_OBJECT,[ARRAY_OBJECT count]);
在应用程序运行时检查XCode中的GDB输出,以查看结果是否符合您的预期。
答案 2 :(得分:-1)
self.listData = array; [array release];
请改为尝试:
self.listData = [array copy]; [array release];
NSArray对象是指针;当你设置self.listData = array时,你真的告诉任何寻找listData的东西来查看最初由array占用的内存地址。当你释放数组时,它会腾出那个内存地址,从而使指针指向任何东西。