2013-11-23 5 views
1

У меня есть БД SQLite и экспортировать некоторый результат с запросомСохранить все содержимое NSMutableArray в файле IOS

sqlite3 *MyDB; 
const char *dbpath = [StringPathDB UTF8String]; // Convert NSString to UTF-8 
NSString *querySQL = @"select * from chat order by id desc limit 20"; 



if (sqlite3_open(dbpath, &MyDB) == SQLITE_OK) 
{ 

    const char *sql = [querySQL UTF8String]; 

    sqlite3_stmt *searchStatement; 

    if (sqlite3_prepare_v2(MyDB, sql, -1, &searchStatement, NULL) == SQLITE_OK) 
    { 
     while (sqlite3_step(searchStatement) == SQLITE_ROW) 
     { 
      NSString *nickname = [NSString stringWithUTF8String:(char *)sqlite3_column_text(searchStatement, 0)]; 
      NSString *time = [NSString stringWithUTF8String:(char *)sqlite3_column_text(searchStatement, 1)]; 
      NSString *text = [NSString stringWithUTF8String:(char *)sqlite3_column_text(searchStatement, 2)]; 

Тогда я положил все в NSMutableArray

NSMutableArray *list = [[NSMutableArray alloc] init]; 

[list addObject:nickname]; 
[list addObject:time]; 
[list addObject:text]; 

Когда я пытаюсь сохранить аль в файле с кодом

for(int i = 0; i < [list count]; i++) { 

        NSLog(@"%@",list); 
        [list writeToFile:filePATH atomically:YES]; 
        break; 
       } 

Он правильно маркирует NSSC, но в файле сохраняется только последняя запись не все arra у. Пожалуйста, помогите мне!

+1

Что такое 'filePATH'? Как вы его создаете? – Undo

+0

Все ли в 'list', как проверено' NSLog() '? – zaph

+1

Вам нужно будет аккумулировать все записи, чтобы написать их все. В ваш список будет включена только одна запись. (И если вы пишете несколько записей, их не будет отделять. Вам нужно подумать над тем, что вы пытаетесь сделать.) –

ответ

0

Необходимо создать сообщение NSMutableArray и внести дополнительные изменения.

NSMutableArray *list = [[NSMutableArray alloc] init]; 
while (sqlite3_step(searchStatement) == SQLITE_ROW) 
{ 
    NSString *nickname = [NSString stringWithUTF8String:(char *)sqlite3_column_text(searchStatement, 0)]; 
    NSString *time = [NSString stringWithUTF8String:(char *)sqlite3_column_text(searchStatement, 1)]; 
    NSString *text = [NSString stringWithUTF8String:(char *)sqlite3_column_text(searchStatement, 2)]; 
    [list addObject:nickname]; 
    [list addObject:time]; 
    [list addObject:text]; 
    ... 
} 
[list writeToFile:filePATH atomically:YES]; 
+0

Спасибо ... Ваше решение отлично работает! Могу ли я написать файл, в котором есть 3 элемента в одной строке? Теперь результат один элемент строки ник 1 времени 1 текст 1 ник 2 время 2 текст 2 ... Я хочу: ник 1 раз 1 Текст 1 ник 2 раз 2 Текст 2 .... Можно? – user3025315

+0

Вы можете написать код для создания нового 'NSMutableArray', получить доступ к текущему массиву в нужном порядке и добавить элементы в новый массив. Но массив, который есть, является вероятным лучшим подбором, просто доступ по мере необходимости. – zaph

+0

Любые образцы? Спасибо – user3025315

Смежные вопросы