Frage

Ich habe eine Varchar-Spalte in einer SQLite datbase. Eine bestimmte Zeile des Textes hat einen umgekehrten Schrägstrich, die mit „\ n“ für einen Wagenrücklauf in einem UITextView verwendet wird. Wenn der Wert aus der Datenbank über eine SELECT gelesen wird:

myobject.text = [NSString stringWithUTF8String: (char *)sqlite3_column_text(selectstmt, 2)];

Der Backslash ist entkommen und wie folgt aussieht:

"\\n" rather than "\n"

, die als Wagenrücklauf nicht interpretieren. Wenn ich zwei blackslashes im Text hinzufügen, wird die zweite auch entwertet wird und führt schließlich zu einer Ausnahme, wenn der Textview als Subview hinzugefügt wird:

Beenden app aufgrund nicht abgefangene Ausnahme 'NSUnknownKeyException' Grund: '[setValue: forUndefinedKey:.]: Diese Klasse ist nicht Schlüssel-Wert-Codierung-konform für den Schlüssel Test'

Gibt es eine Möglichkeit, diese Fluchten zu verhindern oder muss ich es aufzuräumen manuell?

War es hilfreich?

Lösung

Der Backslash besteht kein Zweifel, es direkt in den Text der Spalte - Sie „sehen“ sie sind als verdoppelt, weil das ist, wie Schrägstriche gezeigt (zur Vermeidung von Verwechslungen mit Escape-Sequenzen). SQLite ist nicht Ändern der Text, den Sie dort setzen, wenn Sie es abfragen -. aber wohl der Text, der in der Datenbank ist, ist nicht das, was Sie erhalten möchten

Was Sie tun müssen, ist, die beiden Zeichen Backslash-n in die einzelnen Zeichen newline zu ändern, und Sie können zu, dass entweder in der Datenbank (ein für alle Mal, oder auf jede Abfrage) oder in Ihrem Ziel-C-Code (auf jeder Abfrage), je nach Ihren genauen Anforderungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top