I'm getting this error: [NSMutableArray objectAtIndex:]: index 0 beyond bounds for empty array
although I have 75 items in my database. Why is it showing me this error? I'm trying to get items from my database but it tells me index 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;
}
If you are confident that your DB calls should return data, I would make sure that at least one of your if () else () statements is actually getting hit. Otherwise, your array is empty given that you initialized it above:
NSMutableArray *arrAlert = [[NSMutableArray alloc]init];
A simple way to check for yourself would be to add an else
statement at the bottom of your if
else
chain, and assert something there (i.e. at least print something, for starters.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With