我在我的應用程序中有一個共享的nsmutablearray。我從一個sqlite數據庫拉一堆數據並添加到數組中。該數組具有正確數量的對象作爲數據庫,但是當我調用objectAtIndex時,我總是得到相同的值 - 最後一個記錄值。總是得到共享nsmutablearray中的最後一個對象
所以我不確定我的應用程序在添加共享數組或從中提取數據失敗。下面是一些代碼:最後兩個的NSLog的給我相同的輸出,如果你合成魂鬥羅類的屬性是不正確
SYSAppDelegate *appDelegate = (SYSAppDelegate *)[[UIApplication sharedApplication] delegate];
Contra *contra = [[Contra alloc]init];
sqlite3_stmt *statement;
int recordCount = 0;
if (sqlite3_open([appDelegate.dbPathString UTF8String], &_DB)==SQLITE_OK) {
[appDelegate.array removeAllObjects];
NSString *querySql = [NSString stringWithFormat:@"SELECT * FROM DATATABBLE"];
const char* query_sql = [querySql UTF8String];
if (sqlite3_prepare(_DB, query_sql, -1, &statement, NULL)==SQLITE_OK) {
while (sqlite3_step(statement)==SQLITE_ROW) {
NSString *start = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 1)];
NSString *stop = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 2)];
NSString *cTime = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 3)];
NSString *intensity = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 4)];
NSString *timeElapsed = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 5)];
NSString *hour = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 6)];
[contra setStartDate:start];
[contra setStopDate:stop];
[contra setIntensity:[intensity intValue]];
[contra setCTime:[cTime intValue]];
[contra setTimeElapsed:[timeElapsed intValue]];
[contra setHour:[hour intValue]];
[appDelegate.array addObject:contra];
recordCount++;
}
}
}
//Get data from array
//Get last object
contra = [appDelegate.array lastObject];
NSLog(@"cont length: %i.", contra.cTime);
//Get an earlier object
contra = [appDelegate.array objectAtIndex:recordCount -2];
NSLog(@"two cont length: %i", contra.cTime);