2017-07-08 2 views
-3

Ich erstelle eine Notiz-Management-App. Um die verschiedenen Notizen zu speichern, verwende ich SQLite. Das Problem ist, dass, wenn ich eine Notiz ändere, zum Beispiel die Schriftart ändere oder sie fett oder kursiv mache und sie dann beim erneuten Extrahieren der Notiz speicherte, habe sie natürlich alle Attribute verloren und wird in a geschrieben normale Art und Weise. Wie kann ich dieses Problem lösen?Ziel c - Wie Speichern von Textstil mit SQLite?

+0

Bitte zeigen Sie die Struktur Ihrer Datenbank, d. H. Einige Zeilen von 'Create table ...' und einige Beispielinhalte, d. H. Einige Zeilen von 'insert in ...'. Verwenden Sie '.dump' für Bequemlichkeit. – Yunnosch

+0

Meine ist eine einfache SQLite-Tabelle mit 4 Feldern Typ String .. – Luchetto

+0

Großartig, so dass Sie nicht lange brauchen, um diese Struktur und Inhaltszeilen einzugeben. Oder verwenden Sie ".dump" von SQlite Kommandozeilen-Tool. – Yunnosch

Antwort

0

Sie müssen die attributierte Zeichenfolge speichern, nicht nur die Zeichenfolge. Verwenden Sie dann NSKeyedArchiver, um es in Rohdaten zu konvertieren. Es gibt ein paar Möglichkeiten, um danach zu gehen, aber Sie können versuchen, zu base64 zu konvertieren und es dann in einem Blob zu speichern. Versuchen Sie dies, um die Daten zu konvertieren. In meinem Fall ist "report" eine NSTextView;

NSMutableData *data = [[NSMutableData alloc] init]; 
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; 
    [archiver encodeObject:report.textStorage forKey:@"attrs"]; 
    [archiver finishEncoding]; 

    NSString *encodedString = [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; 

Die resultierende Zeichenfolge codedString kann in SQLite eingefügt werden.

Um es wieder heraus zu bekommen, kehren Sie den Prozess um;