我想从数据库中加载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