0

取得したデータを sqlite から UITextView に表示するときに問題が発生しました。私の問題は、 \n 文字が読み取られるだけで、適用されないことです

- (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)
        {
            nomeEtichetta.text=@"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;

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

            percheText.text = perche;

            precauzioniEtichetta.text=@"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);
}
}

結果は次のとおりです。

データ 1: 説明 1\nデータ 2: 説明 2\nデータ 3: 説明 3\n...

私が望む間:

Dato1: Descrizione1
Dato2: Descrizione2
Dato3: Descrizione3

....

これを達成する方法はありますか?

4

1 に答える 1

0

おそらく、SQLite データベースに挿入するときに改行がエスケープされます。
したがって、'\n' は最終的に '\\n' になります。
データの挿入方法を制御できる場合は、そこで修正できます。

それ以外の場合は、エスケープされた改行を '\n' に置き換えることができます。

[yourString stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];
于 2013-05-01T06:58:31.810 に答える