IPAD与iPhone的TableView行

我已经创build了一个Universal Master Details应用程序。 我用iPad和iPhone的Storyboard。 我实际上是做一个HTTP请求来检索将在主表视图中呈现所需的数据。 我从requestFinished方法重新加载tableview数据。

- (void)requestFinished:(ASIHTTPRequest *)request { NSString *responseString = [request responseString]; ConversationDataController *dataControllerSingleton = [ConversationDataController sharedInstance]; conversationList = [responseString JSONValue]; [dataControllerSingleton setConversationList:conversationList]; [self.tableView reloadData]; } 

我将返回的数据存储在具有名为conversationList的NSMutableArray属性的dataControllerSingleton中。

在numberOfRowsInSection中,我打印出基于fetchedResultsController的部分中的对象数。 我也打印出我的NSMutableArray conversationList中的值的数量。 在numberOfSectionsInTableView我打印出的部分数量。

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { id <NSFetchedResultsSectionInfo> sectionInfo = [self.fetchedResultsController sections][section]; NSLog(@"Number OF Objects in section %lu",(unsigned long)[sectionInfo numberOfObjects]); ConversationDataController *dataControllerSingleton = [ConversationDataController sharedInstance]; NSLog(@"ConversationList count %lu",(unsigned long)[dataControllerSingleton.conversationList count]); return [sectionInfo numberOfObjects]; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { NSLog(@"Number of sections: %d",[[self.fetchedResultsController sections] count]); return [[self.fetchedResultsController sections] count]; } 

所以,当我使用NSLog来查看有多less节和行时,我得到了第2节ConversationList数46中的对象数量
第一部分

在我的cellForRowAtIndexPath我从我的NSMutableArray添加单元格文本

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ConversationCell"]; [self configureCell:cell atIndexPath:indexPath]; ConversationDataController *dataControllerSingleton = [ConversationDataController sharedInstance]; cell.textLabel.text = [dataControllerSingleton.conversationList objectAtIndex:indexPath.row]; return cell; } 

所以,通过这个设置,我在iPhone和iPad的主视图中看到了两个值。 当我在主视图中select这些值中的任何一个时,我被带到详细视图(现在只是空的)。 这对于呈现的两行没有任何错误。

如果我改变numberOfRowsInSection返回我的NSMutableArray中的值的数量return [self.conversationList count]; 我遇到错误。

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { id <NSFetchedResultsSectionInfo> sectionInfo = [self.fetchedResultsController sections][section]; NSLog(@"Number OF Objects in section %lu",(unsigned long)[sectionInfo numberOfObjects]); ConversationDataController *dataControllerSingleton = [ConversationDataController sharedInstance]; NSLog(@"ConversationList count %lu",(unsigned long)[dataControllerSingleton.conversationList count]); //return [sectionInfo numberOfObjects]; return [self.conversationList count]; } 

在iPhone模拟器上,我在主视图中显示了46个值。 我可以select其中的任何一个,并提供(空)详细视图。 在iPad模拟器上,如果我select前两个单元格中的任何一个,则会按预期方式显示(空)详细视图。 但是,当我select超出前两个值时,我得到以下错误;

 Terminating app due to uncaught exception 'NSRangeException', reason: '*** - [_PFBatchFaultingArray objectAtIndex:]: index (2) beyond bounds (2)' *** First throw call stack: (0x19a5012 0x17cae7e 0x19a4deb 0x156941a 0x15e9511 0x42fe9 0x4ae285 0x4ae4ed 0xeb85b3 0x1964376 0x1963e06 0x194ba82 0x194af44 0x194ae1b 0x249b7e3 0x249b668 0x3feffc 0x40e0d 0x2ac5) libc++abi.dylib: terminate called throwing an exception 

任何援助将不胜感激。 提前致谢。 蒂姆

如果您正在使用多个部分(它看起来像你),然后委托方法

 tableView:(UITableView *)tableView cellForRowAtIndexPath: 

应该真的在处理这个问题。

你似乎也混合使用NSFetchedResultsController来计算部分和行的数量,但是然后使用属性self.conversionList来返回行数。 但是哪一部分。 如果你想使用核心数据,而不是使用一个单一的数组,将数据从你的Web服务器caching到核心数据表中,并在你的

 - (NSFetchedResultsController *)fetchedResultsController 

方法。

你也混合使用self.conversionList&

 ConversationDataController *dataControllerSingleton = [ConversationDataController sharedInstance]; dataControllerSingleton.conversationList 

他们都一样吗?

请将libz.dylib添加到您的项目中。 可以在“构build阶段”选项卡中添加它。 你有链接Binarry库部分。 点击“+”符号并将libz.dylib添加到您的项目中