2015-01-29 10 views
0

Я новичок в приложении iOS. В моем приложении iPhone у меня есть тип sqlite базы данных (data.sqlite) и некоторые таблицы там (только таблица вызовов: A, B, C, ...) У меня возникла проблема, когда я пытаюсь обновить данные в таблицах: таблица A может успешно обновляться на симуляторе и устройстве iPhone. Но таблица B просто может обновляться на симуляторе, не может обновляться на устройстве iPhone (после обновления она показывает НОВЫЕ данные, но если действительно закрыто приложение - дважды нажмите кнопку «домой» и закройте приложение, а затем снова откройте приложение, данные - OLD-данные)FMDB sqlite не может обновить таблицу на устройстве, но может обновить на симуляторе

Этот код для инициализации базы данных

- (id)init { 
    self = [super init]; 

    NSString *bundelFilePath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"sqlite"]; 
    NSString *dbPath = [LIBRARY_DIR stringByAppendingPathComponent:@"data.sqlite"]; 

    //New version 
    if (![[NSFileManager defaultManager] fileExistsAtPath:dbPath]) { 
     [[NSFileManager defaultManager] copyItemAtPath:bundelFilePath toPath:dbPath error:nil]; 

     _database = [FMDatabase databaseWithPath:dbPath]; 
     [_database open]; 
    } 

    return self; 
} 

Этот код предназначен для обновления

- (void)updateDetails:(NSMutableArray *)details { 

    @synchronized(self) { 
     [_database beginTransaction]; 

     for (int i = 0; i< details.count; i++) { 
      B *b = [details objectAtIndex:i]; 

      NSString *sql = [NSString stringWithFormat:@"UPDATE B SET display_order=%d WHERE columnIdx=%d", i, b.colIdx]; 

      [_database executeUpdate:sql]; 
     } 

     [_database commit]; 
    } 
} 

Я использую тот же код для таблицы обновления, и таблица а обновление успешно на устройстве и симулятором. Но таблица B становится проблемой. Пожалуйста помоги. Спасибо.

ответ

0

Ty замена:

NSString *sql = [NSString stringWithFormat:@"UPDATE B SET display_order=%d WHERE columnIdx=%d", i, b.colIdx];

с:

NSString *sql = [NSString stringWithFormat:@"UPDATE B SET display_order=? WHERE columnIdx=?", [NSNumber numberWithInt:i], [NSNumber numberWithInt:b.colIdx]]; 

у вас есть Somes числа объектов, как:

[NSNumber numberWithFloat:floatNumber]; 

[NSNumber numberWithDouble:doubleNumber]; 
Смежные вопросы