Количество объектов (3) не равно количеству ключей (8) - PullRequest
0 голосов
/ 27 октября 2011

Хорошо, проблема в том, что вы пытаетесь извлечь данные из 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;

Итак, очевидно из кода, который я тестировал, чтобы убедиться, что количество значений равно количеству ключей ... но я все еще получаю эту ошибку:

"Завершение приложения из-за необработанного исключения 'NSInvalidArgumentException', причина: '- [__ NSPlaceholderDictionary initWithObjects: forKeys:]: количество объектов (3) не равно количеству ключей (8)'"

Я не могу понять всю жизнь, почему счет будет другим, если при печати массива значений я вижу 8 значений ... которые должны соответствовать моим 8 ключам? а они верны?

Любая помощь / направление будет принята с благодарностью!

Спасибо

1 Ответ

4 голосов
/ 27 октября 2011

Четвертый элемент в вашем массиве значений:

[result stringForColumn:@"image_portrait"]

возвращается nil? Это значение, которое сообщает -initWithObjects, что список готов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...