Objective C存储表行计数变量

时间:2010-12-12 13:19:24

标签: iphone objective-c uitableview core-data

我正在尝试将uitable中的行数存储到变量中(不成功),我试过这个:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
 id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
 NSNumber *rowsNumber = [NSNumber numberWithInt: ([[self.fetchedResultsController sections] objectAtIndex:section])];
 NSLog(@"%i", rowsNumber);
 return [sectionInfo numberOfObjects];
}

这不起作用,只记录一个6位数字?任何人都可以猜测我怎么能存储这个?

1 个答案:

答案 0 :(得分:2)

Objective-C不会自动转换非对象和对象。 (即它不是“自动装箱”。)

此外,格式说明符%i 是unbox规范。所以,如果你有一个NSNumber*num,你要么

NSLog(@"%@",num) // show as an object

NSLog(@"%d",[num intValue]) // show as an int.

此行也不正确:

NSNumber *rowsNumber = [NSNumber numberWithInt: [[self.fetchedResultsController sections] objectAtIndex:section] ];

首先,[[self.fetchedResultsController sections] objectAtIndex:section]是您刚进入的对象

id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];

您无法将其传递给numberWithInt:。您使用sectionInfo.numberOfObjects获取行数。所以,该行应该是

NSNumber *rowsNumber = [NSNumber numberWithUnsignedInteger:sectionInfo.numberOfObjects];