2012-07-02 11 views
5

Tôi nhận được lỗi này: [NSMutableArray objectAtIndex:]: index 0 beyond bounds for empty array mặc dù tôi có 75 mục trong cơ sở dữ liệu của mình. Tại sao nó cho tôi thấy lỗi này? Tôi đang cố gắng để có được các mục từ cơ sở dữ liệu của tôi, nhưng nó nói với tôi chỉ số 0.[NSMutableArray objectAtIndex:]: index 0 vượt quá giới hạn cho mảng trống '

+(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; 

}

+0

Kiểm tra arrAlert có trống không? –

+0

kiểm tra [countItemsList Count]; – Deepesh

Trả lời

2

Nếu bạn tự tin rằng các cuộc gọi DB của bạn nên trả lại dữ liệu, tôi sẽ đảm bảo rằng ít nhất một trong if if() else() của bạn thực sự bị tấn công. Nếu không, mảng của bạn là trống rỗng cho rằng bạn khởi tạo nó trên:

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

Một cách đơn giản để kiểm tra cho chính mình sẽ có thêm một tuyên bố else ở dưới cùng của ifelse chuỗi của bạn, và khẳng định một cái gì đó (tức là ít nhất in một cái gì đó, cho người mới bắt đầu.)

+0

ok. thực sự ứng dụng này chạy tốt lúc đầu, đột nhiên nhận được lỗi này ... – user1482192

+0

Ya phần khác đang làm việc tốt ... – user1482192