2011-11-13 16 views
0

私のプログラムには奇妙な問題があります!私はネストされた可変配列を作成しました。これは4つの可変配列から構成され、それぞれは文字列と4つの配列を含み、それぞれに2つの文字列も含まれています。ここで私はのNSLogを通じて私の配列を渡されたときに私が受け取ったログです:私のUITableViewの最初の項目が動作しません

最初のテーブルビュー コントローラと、私はこれに応じて、第二1をロードするように私は、その後、何らかの形でこれらの配列によって ナビゲーションを作成するために、3つのテーブルビューコントローラを使用していました 元の配列の項目が選択された、等々。

すべてが選択するための第一のテーブルビューコントローラの選択index.rowを保持する第1トップ レベル1(

を含む第一の配列は私がobjectAtIndexを使用しtempProjectNumberを有する以外は、すべてのアレイのために完璧に動作このプロジェクトは、しかし、私の第二tableviewcontrollerはcell.textlabel.textをロードするとき、私はsigbartエラー受信:。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI isEqualToString:]: unrecognized selector sent to instance 0x8987c80'

を私は、セルのテキストを読み込むときにアクセスしようとする項目のクラスを見つけることができました。 textlabel、それは> __ NSCFConstantStringだと言います。

これは完全なログである:

>2011-11-13 01:36:42.031 iCodeMobile[4763:15203] indexpath.row: 1 projectnumber:0 
>2011-11-13 01:36:42.032 iCodeMobile[4763:15203] array: __NSCFConstantString 
>2011-11-13 01:36:42.033 iCodeMobile[4763:15203] indexpath.row: 2 projectnumber:0 
>2011-11-13 01:36:42.033 iCodeMobile[4763:15203] array: __NSCFConstantString 
>2011-11-13 01:36:42.034 iCodeMobile[4763:15203] indexpath.row: 3 projectnumber:0 
>2011-11-13 01:36:42.035 iCodeMobile[4763:15203] array: __NSCFConstantString 
>2011-11-13 01:36:42.036 iCodeMobile[4763:15203] indexpath.row: 4 projectnumber:0 
>2011-11-13 01:36:42.036 iCodeMobile[4763:15203] array: __NSArrayI> 

インデックスpath.row記録が第2のビューコントローラのテーブルの行であり、プロジェクト番号がtestproject1の最初の項目と二番目に高いレベルの配列であります。配列ロギングは私がアクセスしようとしているアイテムのクラスです。最後のものはNSArrayIですが、以前の配列のマッピングからわかるように、私はそのようなものを使用していません。

すべてのセル行が正しいテキストがロードされた後、私は、各ラインにデバッグモードとステップを使用している場合興味深いことに、私はこのエラーを取得:

[CALayer objectAtIndex:]: unrecognized selector sent to instance 0x7f51f40 I'm not using any layers, and I don't even know what to do!!!

私は「として助けてくださいこの問題をほぼ1ヶ月間扱っています。私はuipickerviewを使用していて、同じことが起こった、同じ最初の項目の問題と同じSIGBARTエラー!

ありがとうございました。

UPDATE @Mundi:ここで

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 
    if (indexPath.row==0) 
    { 
     cell.textLabel.text = @"Please Select A folder"; 
    }else 
    { 
     NSLog(@"indexpath.row: %u projectnumber:%u",indexPath.row,shared.tempProjectNumber); 
     id object = [[shared.fileNameContainer objectAtIndex:shared.tempProjectNumber] objectAtIndex:indexPath.row]; 
     if ([object isKindOfClass:[NSString class]]){ 
      NSLog(@"String: %@",[[[shared.fileNameContainer objectAtIndex:shared.tempProjectNumber] objectAtIndex:indexPath.row]objectAtIndex:0]); 
     } 
     else 
     { 

      NSLog(@"array: %@",[[[[shared.fileNameContainer objectAtIndex:shared.tempProjectNumber] objectAtIndex:indexPath.row]objectAtIndex:0]class]); 
     } 

    cell.textLabel.text = [[[shared.fileNameContainer objectAtIndex:shared.tempProjectNumber] objectAtIndex:indexPath.row]objectAtIndex:0]; 

    }; 

    return cell; 
} 

、shared.tempProjectNumberプロジェクト・アレイ(shared.fileNameContainerある私の主アレイ内のアレイの最高レベル)の記録されたインデックスです。これは私が以前にそのポストに持っていたレコーディングで、テーブルのすべてのアイテムがロードされた後、問題の原因となる最後のアイテムになると、私はsigbartエラーを受け取ります!おかげでたくさんムンディが

アップデート:私は、さらに行くのはあまりない必要性を私の問題に取り組むための簡単な方法を発見したが、誰もが問題にいくつかの光を当てる感謝

よろしく

答えて

0

あなたは知っていcと(他のほとんどのプログラミング言語の)配列は0からcount-1にインデックスされていますか?したがって、配列のインデックスは、から3へと移動し、1から4には移動しません。

+0

ええと私は2番目のレベルの配列(testproject1と4つの他のフォルダを含むもの)の最初の項目がnsstringであるため、これを表示するためのテーブルのindex.row配列が0の場合、タイトルはフォルダを選択してください。理論的には、最初にindex.rowのインデックスpath.rowにテキストを割り当ててジャンプしました。ここに私が書いたコードがあります: – Septronic

+0

こんにちはムンディ、私は元の投稿へのコメントとしてコードを追加しました。ありがとう:) – Septronic