2013-04-29 27 views
0

我在從sqlite將檢索到的數據顯示到UITextView時遇到問題。 我的問題是\ n字符只能readed,而不是應用來自sqlite select的文本未在UI中格式化

- (IBAction)cerca:(id)sender { 
NSString *nome; 
NSString *perche; 
NSString *precauzioni; 

const char *dbpath = [percorso UTF8String]; 
sqlite3_stmt *statement; 

if (sqlite3_open(dbpath, &farmaciDB) == SQLITE_OK) 
{ 
    NSString *querySQL = [NSString stringWithFormat: @"SELECT * FROM farmaci WHERE nome=\"%@\"", stringa.text];   
    NSLog(@"Query: %@", querySQL); 

    const char *query_stmt = [querySQL UTF8String]; 

    if (sqlite3_prepare_v2(farmaciDB, query_stmt, -1, &statement, NULL) == SQLITE_OK) 
    { 
     if (sqlite3_step(statement) == SQLITE_ROW) 
     { 
      [email protected]"Nome"; 
      nome = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)]; 
      nomeText.text = nome; 

      CGRect frameNome = nomeText.frame; 
      frameNome.size.height = nomeText.contentSize.height; 
      nomeText.frame = frameNome; 

      [email protected]"Dettagio 1"; 
      perche = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 1)]; 
      //NSString* esc1 = [perche stringByReplacingOccurrencesOfString:@"\\r" withString:@"\\n"]; 

      percheText.text = perche; 

      [email protected]"Dettaglio 2"; 
      precauzioni = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 2)]; 
      precauzioniText.text = precauzioni; 

     } else { 
        NSLog(@"Error"); 
       } 
     sqlite3_finalize(statement); 
    } else 
    { 
     NSLog(@"could not prepare statemnt: %s\n", sqlite3_errmsg(farmaciDB)); 
    } 
    sqlite3_close(farmaciDB); 
} 
} 

,其結果是:

Dato1:Descrizione1 \ nDato2:Descrizione2 \ nDato3:Descrizione3 \ n ...

而我會想:

Dato1: Descrizione1 
Dato2: Descrizione2 
Dato3: Descrizione3 

.... 

有什麼辦法來實現這一目標?

+0

這是不是一個真正的SQLite的問題,而是一個UI問題。所以我添加了一個標籤。如果不是正確的iOS庫,請更改它。 – Tim 2013-04-29 20:10:46

回答

0

當你將它插入SQLite數據庫時,可能會出現換行符。
所以你的'\ n'最終會變成'\\ n'。
如果您可以控制數據的插入方式,那麼您可以在那裏修復它。

否則,你可以用「\ n」更換逃脫換行符:

[yourString stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"]; 
+0

我將檢索到的數據看作word1 \ nword2 \ n。你認爲它可以作爲\\ n嗎?我會試試這個。到目前爲止,我通過創建一個html字符串並在uiwebview中顯示來解決這個問題。但這是非常奇怪的,這是唯一的方法 – Enzoses 2013-05-01 13:01:43

+0

你可以看看一個SQLite工具。通過終端中的sqlite3或http://menial.co.uk/base/,http://sourceforge.net/projects/sqlitebrowser/,... – 2013-05-01 13:28:48