2011-01-25 2 views
0

Я пишу приложение, использующее SQLITE3. Я заполняю массив значением, находящимся в двумерном массиве (матрице). Когда я делаю это, я получаю сообщение об ошибке самоутверждением и я не могу понять, почему:Cocoa Touch: проблема с заполнением 2D-массива

ViewController.h

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

ViewController.m

Наполнение array1 в индексной матрицы [я] [J] , со значением в Matrix1 [я] [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/КЕРЪАСЕ.

+0

Измените свой вопрос, чтобы добавить дополнительную информацию. Включите код инструкции INSERT/REPLACE, добавьте фактическую ошибку, которую вы получаете, и т. Д. –

+0

Чувак вам нужно отменить i и j в цикле for. В противном случае вы получите EXC_BAD_ACCESS. – Robin

+0

Что именно вы пытаетесь сделать с этим утверждением любым способом array1 [matrix1 [matrix1 [i] [j]]; – Robin

ответ

1

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

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