Cocoa Touch: проблема с заполнением 2D-массива - PullRequest
0 голосов
/ 25 января 2011

Я пишу приложение, которое использует SQLITE3. Я заполняю массив значением, расположенным в двумерном массиве (матрице). Когда я делаю это, я получаю ошибку ASSERTION и не могу понять, почему:

ViewController.h

    matrix1 [25][1000];
    array1 [2000];

ViewController.m

Заполнение массива1 в матрице индекса [i] [j] значением в матрице1 [i] [j]

for(int i = 0; i<1000; i++){
for(int j = 0;j<25; j++)
 {
   array1[matrix1[matrix1[i][j]];
 }
}

  ...


if(sqlite3_exec(pb_database,[pb_update_string UTF8String]
              ,NULL,NULL,&errormsg)!= SQLITE_OK) {
   NSAssert1(0, @"Error updating tables: ==> %s <==", errormsg);
   sqlite3_free(errormsg);
   NSLog(@"line not update");
}

Ошибка всегда присутствует в операторе INSERT / REPLACE.

1 Ответ

1 голос
/ 25 января 2011

У вас есть несколько проблем:

  1. Вы используете SQLite C API напрямую.Не делайте этого, если у вас нет очень веских причин. Используйте вместо FMDB .Это сделает вашу жизнь намного легче.
  2. Ваши массивы не одного размера.Один содержит 25 000 элементов (25 * 1000), а другой содержит 2000 элементов.
  3. Ваш цикл for ничего не делает.array1[matrix1[matrix1[i][j]]; не только синтаксически некорректен (вам не хватает закрывающей квадратной скобки), но и ничего не делает * 1015.
  4. Ваш код SQLite абсолютно не связан с1018 * петля.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...