我想從數據庫中加載tableView值,調用test.sqlite。 它填充了以下內容:從NSMutableDictionary中檢索字符串值
1月
2月
...到...
12月
正如你會看到我使用FMDB。下面一行編譯但崩潰:話說
NSString *myString = [[rows objectAtIndex:myNumber] objectForKey:@"MonthName"];
我有問題,你在可可處理類型爲int和字符串不一致的方式這是我的問題的一部分。另外,雖然在那裏有NSLog調試線,但這種方法看起來很複雜。你可以給我什麼建議?
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString *path = [docsPath stringByAppendingPathComponent:@"database.sqlite"];
FMDatabase *database = [FMDatabase databaseWithPath:path];
[database open];
NSLog(@"Open Database");
FMResultSet *results = [database executeQuery:@"SELECT * FROM monthly"];
while([results next]) {
NSString *name = [results stringForColumn:@"name"];
NSInteger age = [results intForColumn:@"age"];
// Stuff Data into Array
NSMutableArray *rows = [[NSMutableArray alloc] init];
NSMutableDictionary *firstRow = [NSMutableDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:age], @"MonthID", [NSString stringWithFormat:@"%@", name], @"MonthName", nil];
[rows addObject:firstRow];
NSLog(@"Month: %@ - %d",name, age);
int myNumber = [[firstRow objectForKey:@"MonthID"] intValue];
// *** THE LINE BELOW IS GIVING ME PROBLEMS ***
NSString *myString = [[rows objectAtIndex:myNumber] objectForKey:@"MonthName"];
// NSLog(@"Month No: %@ - %d",myString, myNumber);
NSLog(@"***** Month No: %d", myNumber);
// [self.monthMonths myString];
}
[database close];
NSLog(@"Close Database");
您的項目崩潰的唯一原因是因爲對於每個循環迭代創建行陣列,當你插入的對象時,它也適用於指數0。因此,每次數組中只有1個對象。正如@Aadhira所說,向上移動線路,希望你會沒事的。 – 2012-07-10 09:29:12