对象数(3)不等于键数(8)

时间:2011-10-27 17:43:09

标签: iphone objective-c cocoa-touch cocoa

好的,所以问题来自于尝试从sqlite DB中提取数据并将其放在数组中以进行滚动视图显示。我使用FM数据库库连接到SQL数据库

代码如下:

NSMutableArray *data = [[NSMutableArray alloc] init];
FMResultSet *result = [[[StorageTank sharedStorageTank] DB] 
                                        executeQuery:@"SELECT * FROM table"];
while([result next])
{
    NSArray *values = [[NSArray alloc] initWithObjects: 
                     [[NSNumber alloc] initWithInt:[result intForColumn:@"id"]],
                     [[NSNumber alloc] initWithInt:[result intForColumn:@"count"]],
                     [[NSNumber alloc] initWithInt:[result intForColumn:@"required"]],
                     [result stringForColumn:@"image_portrait"],
                     [result stringForColumn:@"image_landscape"],
                     [[NSNumber alloc] initWithInt:[result intForColumn:@"end_date"]],
                     [[NSNumber alloc] initWithInt:[result intForColumn:@"active"]],
                     [result stringForColumn:@"merchant"], nil];
    NSLog(@"%@", values);

    NSArray *keys = [[NSArray alloc] initWithObjects: @"id",@"count",@"required",
                     @"image_portrait",@"image_landscape",
                     @"end_date",@"active",@"merchant",nil];
     NSLog(@"%@", keys);

    NSDictionary *row = [[NSDictionary alloc] initWithObjects: values  forKeys: keys];


    [data addObject: row];
}

NSArray *resultArray = [[NSArray alloc] init];
resultArray = data;

所以,显然从我测试的代码中确保值count等于键数...但我仍然得到这个错误:

“因未捕获的异常而终止应用程序'NSInvalidArgumentException',原因:' - [__ NSPlaceholderDictionary initWithObjects:forKeys:]:对象数(3)不等于键数(8)'”

我无法理解为什么计数会有所不同,如果我打印出数值数组,我会看到8个值...它应该匹配我的8个键?他们是对的?

非常感谢任何帮助/方向!

谢谢,

1 个答案:

答案 0 :(得分:4)

是数组数组中的第四项:

[result stringForColumn:@"image_portrait"]

返回nil?这是告诉-initWithObjects列表完成的值。