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);
}
}

结果是:

Dato1: 描述1\nDato2: 描述2\nDato3: 描述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 回答