1

すべての 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 によって満たされたリモート データベースから、bochakori_ という名前のデータを iPhone_ASRAViewContriller の NSArray プロパティ (listData という名前) にロードし、それをテーブルビューに表示します。

表に示されている語彙を連結するために、次のようなコードがあります。

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 シミュレーターの "table" で文字列を連結していないようです。誰でも私に提案を提供できますか?

次のコードは、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];
4

1 に答える 1