2012-07-02 4 views
5

내 데이터베이스에 75 개의 항목이 있지만이 오류 : [NSMutableArray objectAtIndex:]: index 0 beyond bounds for empty array가 표시됩니다. 왜 내가이 오류를 보여 줍니까? 내 데이터베이스에서 항목을 얻으려고하지만, 그것은 나에게 인덱스 0[NSMutableArray objectAtIndex :] : 빈 배열의 경계를 넘어선 인덱스 0

+(NSMutableArray *)GetAttitudeItems 
{ 
    NSArray *arrDocPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *strDestPath = [NSString stringWithFormat:@"%@/ItemsAndCategory.sqlite",[arrDocPath objectAtIndex:0]]; 


//sqlite3 *sqlite; 

NSMutableArray *arrItemsList; 
if(sqlite3_open([strDestPath UTF8String],&database)==SQLITE_OK) 
{ 

    const char *strQuery = "SELECT * FROM Items WHERE CategoryName='ATTITUDE' ORDER BY RANDOM()"; 
    NSLog(@"The value is %s",strQuery); 
    sqlite3_stmt *stmt; 
    //char *err; 

    arrItemsList = [[NSMutableArray alloc]init]; 

    if(sqlite3_prepare_v2(database, strQuery , -1,&stmt, NULL)==SQLITE_OK) 
    { 
     while (sqlite3_step(stmt)==SQLITE_ROW) 
     { 

      NSString *StrCatename = [NSString stringWithUTF8String:(char*)sqlite3_column_text(stmt, 1)]; 
      NSString *StrItemName = [NSString stringWithUTF8String:(char*)sqlite3_column_text(stmt, 0)]; 

      Itemslist *itemlist = [[Itemslist alloc]init]; 
      itemlist.CategoryValue = StrCatename; 
      itemlist.ItemValue =StrItemName; 
      [arrItemsList addObject:itemlist]; 

     } 

    } 

    if (stmt!=nil) 
    { 
     sqlite3_finalize(stmt); 
    } 
} 



sqlite3_close(database); 

return arrItemsList; 

} 당신이 당신의 DB 호출 데이터를 반환해야한다고 확신하는 경우

+0

arrAlert가 비어 있는지 확인하십시오. –

+0

check [arrItemsList Count]; – Deepesh

답변

2

것은 확실 할 것을 알려줍니다 그 중 적어도 하나 if() else() 문이 실제로 실행 중입니다. (자신이 ifelse 사슬의 바닥에서 else 문을 추가하고, 뭔가를 주장하는 것입니다 확인하기 위해

NSMutableArray *arrAlert = [[NSMutableArray alloc]init];

하는 간단한 방법 : 그렇지 않으면, 당신의 배열은 당신이 위를 초기화 주어진 비어 즉 처음에는 뭔가를 인쇄하십시오.)

+0

좋습니다. 사실이 응용 프로그램이 처음에 갑자기이 오류가 점점 잘 실행됩니다 ... – user1482192

+0

예, 다른 부분은 잘 작동합니다 ... – user1482192

관련 문제