我正在尝试从我的项目中加载一个plist,这一直在工作,直到我不小心删除了我的plist。 plist有5个阵列,每个有2个元素。我知道我的程序试图访问超出数组的范围,但我不知道的是这个索引设置在哪里?这是它炸弹的代码:这段代码成功执行了两次,然后由于某种原因它试图第三次访问它并在第一行炸弹,为什么?
它引发了这个异常:
NSRangeException -[_NSCFARRAY objectAtIndex] index(2) beyond bounds (2)
请帮忙,这是星期一到期的最终项目,现在我觉得我必须重新开始。
NSString *nameOfAccount = [account objectAtIndex:indexPath.row];
cell.textLabel.text = nameOfAccount;
NSString *accountNumber = [number objectAtIndex:indexPath.row];
cell.detailTextLabel.text = accountNumber;
答案 0 :(得分:1)
由于您在同一单元格中显示数据,因此您可以在字典中包含帐户名称和帐号,也可以包含两个信息的自定义模型对象。
在你的plist中,这可能是结构,字典对象数组
显示信息时。对于dataSource,创建一个数组accounts
。
#define kAccountName @"Name"
#define kAccountNumber @"Number"
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *filePath = [[NSBundle mainBundle]pathForResource:@"Accounts" ofType:@"plist"];
self.accounts = [NSArray arrayWithContentsOfFile:filePath];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [self.accounts count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
NSDictionary *account = self.accounts[indexPath.row];
cell.textLabel.text = account[kAccountName];
cell.detailTextLabel.text = account[kAccountNumber];
// Configure the cell...
return cell;
}