返回[arr count]时不调用numberOfSectionsInTable

时间:2010-04-13 12:51:41

标签: iphone uitableview

当我尝试返回我的newsItems数组的计数时,它会破坏我的应用程序。我使用NSLog来查看当我返回1时newsItems的值是多少。

这是来自NSLog 2010-04-13 07:48:40.656 RSS Feed [453:207] num项的值31 2010-04-13 07:48:40.656 RSS Feed [453:207]项目数31

有谁知道为什么返回[newsItems count]会导致我的应用程序崩溃?

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
NSLog(@"Values of num items %d",[newsItems count]);
NSInteger *length = (NSInteger *)[newsItems count];
NSLog(@"Number of items %d",length);

return 1;
//return [newsItems count]; //This keeps breaking it for some reason

}

3 个答案:

答案 0 :(得分:1)

我在你的代码中发现了非常愚蠢的问题。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
NSLog(@"Values of num items %d",[newsItems count]);
NSInteger *length = (NSInteger *)[newsItems count];
NSLog(@"Number of items %d",length);

return 1;
//return [newsItems count]; //This keeps breaking it for some reason

请参阅NSInteger *length = (NSInteger *)[newsItems count];此处遇到问题。

你需要写这个

NSInteger length = [newsItems count];

return length;

NSInteger是整数变量的typedef(其他名称),它不是一个类 - (这就是你在变量之前不需要'*'的原因)

答案 1 :(得分:0)

  1. 为什么你的NSInteger是一个指针类型?声明和初始化长度的行应为

    NSInteger length = [newsItems count];

  2. 您是否检查过问题是否在另一种方法中,可能是numberOfRows还是cellForRow?

答案 2 :(得分:0)

您确定需要numberOfSectionsInTableView而不是numberOfRowsInSection吗? numberOfSectionsInTableView,如果未实施,则返回1.

如果是这样,请记住,如果您实施numberOfSectionsInTableView,则还需要实施numberOfRowsInSection。请记住,在收到您的部分计数之后,tableview将要做的就是询问每个部分中的行数,然后询问每个部分中每行的项目。

另外,lostInTransit提到了什么:不要尝试返回指向NSInteger的指针。实际上,返回int的东西也是有效的,并且int将被隐式转换。否则return 1;将无效,对吧?