Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 来自sqlite select的文本未在UI中格式化_Cocoa_Sqlite_Text Formatting - Fatal编程技术网

Cocoa 来自sqlite select的文本未在UI中格式化

Cocoa 来自sqlite select的文本未在UI中格式化,cocoa,sqlite,text-formatting,Cocoa,Sqlite,Text Formatting,我在将从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, &fa

我在将从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:descripione1\n数据2:descripione2\n数据3:descripione3\n

虽然我想:

Dato1: Descrizione1
Dato2: Descrizione2
Dato3: Descrizione3

....

有什么方法可以做到这一点吗?

当您将换行符插入SQLite数据库时,它可能会被转义。
所以您的“\n”最终变成“\\n”。
如果您可以控制数据的插入方式,则可以在那里进行修复

否则,您可以将转义的换行符替换为“\n”:

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

这不是一个SQLite问题,而是一个UI问题。所以我加了一个标签。如果不是正确的iOS库,请将其更改。我将检索到的数据视为word1\nword2\n。您认为它可以读作\\n吗?我试试这个。到目前为止,我通过创建一个html字符串并显示在uiwebview中解决了这个问题。但很奇怪,这是使用SQLite工具查看的唯一方法。通过终端中的sqlite3或,。。。