2011-07-08 17 views
0

私は、彼らがしているどのセクションに応じて行数を描画しようとしています コード:numberofRowsinSectionに問題がありますか?

-(void)configureView:(NSDictionary *)serverResult{ 

    NSManagedObject * detailData = [serverResult valueForKey:@"details"]; 
     NSSet * projID = [detailData valueForKey:@"PROJECTID"]; 
     NSSet * projStat = [detailData valueForKey:@"PROJECTSTATUS"]; 
     NSSet * appDate = [detailData valueForKey:@"BOARDAPPROVALDATE"]; 
     NSSet * closeDate = [detailData valueForKey:@"LOANCLOSINGDATE"]; 
     NSSet * countryName = [detailData valueForKey:@"COUNTRYNAME"]; 
     NSSet * regionName = [detailData valueForKey:@"REGIONNAME"]; 
     NSSet * envCatCode = [detailData valueForKey:@"ENVASSESMENTCATEGORYCODE"]; 
     NSSet * teamLeader = [detailData valueForKey:@"TEAMMEMFULLNAME"]; 
     NSSet * borrower = [detailData valueForKey:@"BORROWER"]; 
     NSSet * impAgency = [detailData valueForKey:@"IMPAGENCY"]; 
     NSSet * totalCost = [detailData valueForKey:@"LENDINGPROJECTCOST"]; 
     NSSet * comtAmt = [detailData valueForKey:@"IBRDPLUSIDAAMT"]; 
     basic = [NSArray arrayWithObjects:projID, projStat, appDate, closeDate,countryName,regionName,envCatCode,teamLeader,borrower,impAgency,totalCost,comtAmt, nil]; 
} 
    - (NSInteger)tableView:(UITableView *)tv numberOfRowsInSection:(NSInteger)section 
    { 
     int number; 
     switch (section) { 
      case 0: 
       number = basic.count; 
       break; 
      case 1: 
       number = allSectors.count; 
       break; 
      case 2: 
       number = 1; 
       break; 

      default: 
       break; 

     } 
     return number; 
    } 

しかし、コードがクラッシュEXC_BAD_ACCESS で助けてください!

+0

どのラインがクラッシュしますか? –

+0

番号= basic.count;ここで基本はNSArrayであり、表には3つのセクションがあります。 – Ashutosh

+0

basic.countとallSectors.countの値は正しいですか?ロギングやブレークポイントを入れてみてください。また、私たちを助けるために、私たちに全体のエラーメッセージを与えてください。 – sosborn

答えて

4

通常、既にリリースされている変数にアクセスしようとしています。あなたが直接ivarsにアクセスしている方法で判断すると(ゲッターではなく)、あなたは自分自身ですべてのメモリ管理を行っていることを示唆しています。あなたは配列を設定し、このラインで

あなたは自動解放配列

basic = [NSArray arrayWithObjects:projID, projStat, appDate, closeDate,countryName,regionName,envCatCode,teamLeader,borrower,impAgency,totalCost,comtAmt, nil]; 

これが最も可能性が高いあなたがそれにアクセスしようとする時間で消えてしまいますが供給されています。あなたは、自動解放方法

1.

// The preferred way in this instance 
basic = [[NSArray alloc] initWithObjects:projID, projStat, appDate, closeDate,countryName,regionName,envCatCode,teamLeader,borrower,impAgency,totalCost,comtAmt, nil]; 

2.

// Not the best way 
basic = [[NSArray arrayWithObjects:projID, projStat, appDate, closeDate,countryName,regionName,envCatCode,teamLeader,borrower,impAgency,totalCost,comtAmt, nil] retain]; 

を使用し、それを維持するかどうか、あなたのメモリ管理上のアップ読み便利かもしれいずれかの方法を追加する必要があります。

initdeallocメソッドのような意味がない限り、合成ゲッター/セッターをプロパティに使用して直接ivarsにアクセスしない方がずっと簡単です。

私は(クラッシュとは無関係の)もう1つの問題は、numberを初期化しておらず、switchステートメントのdefaultケースに設定していないということです。これはバグの原因になります後で追跡する。

+0

ありがとう!!!!!!!!!! – Ashutosh