2011-07-08 65 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

number = basic.count;其中basic是NSArray,table有3個部分。 – Ashutosh

+0

您的basic.count和allSectors.count值是否正確?嘗試記錄它們或放入一箇中斷點。另外,給我們整個錯誤信息來幫助我們。 – sosborn

回答

4

它通常意味着你正試圖訪問已經釋放的變量。通過你直接訪問ivars的方式(而不是通過getter)來判斷,這表明你正在做所有的內存管理,這對於總是正確的操作來說可能非常棘手。

在這一行,你設置數組你recieving一個自動釋放陣列

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]; 

無論哪種方式,它可能是很方便的在你的內存管理閱讀起來。

對於屬性使用合成的getter/setter並且不直接訪問ivars非常容易,除非您確實想要在initdealloc方法中使用這些方法。

我看到的另一個問題(與崩潰無關)是,您尚未將number初始化爲任何內容,並且您尚未在switch語句的default大小寫中設置它,這可能是造成一個棘手問題的原因稍後追蹤。

+0

謝謝!!!!!!!!!! – Ashutosh