我已经实现了一个可以在所有 iOS 设备上运行的通用应用程序。最近,我遇到了一个奇怪的问题,我的应用程序在 iPhone 模拟器上会失败,但在 iPad 模拟器上会顺利。
我发现我的程序中的哪个部分有错误,但我不知道要修复它。在 AppDelegate 中,我有以下代码:
id someController=[self.tabBarController.viewControllers objectAtIndex:3];
if ([someController isKindOfClass:[UINavigationController class]]){
someController = [someController topViewController];
}
if ([someController isKindOfClass:[iPhone_ASRAViewController class]]) {
iPhone_ASRAViewController *myIPhone_ASRAViewController=(iPhone_ASRAViewController*)someController;
myIPhone_ASRAViewController.listData=[NSArray arrayWithArray:vocabulary_];
[myIPhone_ASRAViewController.table reloadData];
}
该应用程序将数据(称为词汇表)从由 JSON 完成的远程数据库加载到我的 iPhone_ASRAViewContriller 的 NSArray 属性(称为 listData)中,然后将其显示在 tableview 上。
为了连接表中显示的词汇,我的代码如下:
NSMutableArray *cells = [[NSMutableArray alloc] init];
for (NSInteger j = 0; j < [table numberOfSections]; ++j)
{
for (NSInteger i = 0; i < [table numberOfRowsInSection:j]; ++i)
{
[cells addObject:[table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:j]]];
}
}
NSString *postmsg=@"SA_VC=0&select_language=english&txtFilePath=";
for (UITableViewCell *cell in cells)
{
NSString *temp=[postmsg stringByAppendingString:cell.textLabel.text];
postmsg=[temp stringByAppendingString:@"\r\n"];
}
NSString *final_postmsg=[postmsg stringByAppendingString:@"&waveBase64=%@"];
NSLog(@"%@",final_postmsg);
当我在 iphone 模拟器上模拟应用程序时,有一些错误消息:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
该应用程序似乎没有连接 iPhone 模拟器下“表”中的字符串。谁能给我一个建议?
以下代码是我对 tableView:cellForRowAtIndexPath 的实现:
static NSString *TableIdentifier = @"tableidentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:TableIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:TableIdentifier] autorelease];
NSDictionary *voc_list=[listData objectAtIndex:indexPath.row];
NSLog(@"%@",voc_list);
cell.textLabel.text = [[(NSDictionary*)voc_list objectForKey:@"vocabulary_list"]objectForKey:@"Vocabulary"];
cell.detailTextLabel.text=[[(NSDictionary*)voc_list objectForKey:@"vocabulary_list"]objectForKey:@"Translation"];
cell.textLabel.font = [UIFont boldSystemFontOfSize:15];