Wie kann ich meine eigene benutzerdefinierte Klasse serialisieren? Ich möchte es speziell in eine Datei auf dem iPhone schreiben, einfach plisten und die Klasse ist nur eine einfache Instanzklasse, nur NSStrings und vielleicht ein NSUrl.Eine benutzerdefinierte Klasse in Objective-c/iPhone serialisieren?
15
A
Antwort
33
Sie möchten die NSCoding protocol implementieren. Implementieren Sie initWithCoder: und encodeWithCoder: und Ihre benutzerdefinierte Klasse wird mit NSKeyedArchiver und NSKeyedUnarchiver funktionieren.
Ihre initWithCoder: sollte wie folgt aussehen:
- (id)initWithCoder:(NSCoder *)aDecoder
{
if(self = [super init]) // this needs to be [super initWithCoder:aDecoder] if the superclass implements NSCoding
{
aString = [[aDecoder decodeObjectForKey:@"aString"] retain];
anotherString = [[aDecoder decodeObjectForKey:@"anotherString"] retain];
}
return self;
}
und encodeWithCoder:
- (void)encodeWithCoder:(NSCoder *)encoder
{
// add [super encodeWithCoder:encoder] if the superclass implements NSCoding
[encoder encodeObject:aString forKey:@"aString"];
[encoder encodeObject:anotherString forKey:@"anotherString"];
}
Verwandte Themen
- 1. Serialisieren einer statischen Klasse?
- 2. Wie 'serialisieren' Sie eine abgeleitete Klasse von serialisierten Daten?
- 3. Serialisieren von benutzerdefinierten Eigenschaften für eine Klasse, die IEnumerable implementiert
- 4. Force WCF, um ungenutzte Klasse zu serialisieren
- 5. Verwendet Json.Encode() JavaScriptSerializer-Klasse zum Serialisieren
- 6. Serialisieren einer abgeleiteten Klasse als ihre Basisklasse
- 7. Ist es möglich, anonyme Klasse ohne äußere Klasse zu serialisieren?
- 8. SpringBoot: Fehler beim Serialisieren Integer-Klasse
- 9. Java8 Stream API: Gruppiere eine Liste in eine benutzerdefinierte Klasse
- 10. C++ unordered_set Vergleichsfunktion für eine benutzerdefinierte Klasse
- 11. Suche Klasse, die eine benutzerdefinierte Sortiermethode ermöglicht
- 12. Wie schreibe ich eine benutzerdefinierte UItextField Klasse
- 13. Benutzerdefinierte MediaPlayer-Klasse in Android
- 14. benutzerdefinierte Akkumulator Klasse in Spark
- 15. Standardwert in einer HashMap für eine benutzerdefinierte Klasse in C++
- 16. Serialisieren Sie die @property-Methoden in einer Python-Klasse
- 17. Serialisieren Sie eine beliebige Zeichenfolge in XML.
- 18. Serialisieren einer DrawableGameComponent als XML mit XNA ContentTypeWriter Klasse
- 19. Benutzerdefinierte UIButton-Klasse swift
- 20. Import benutzerdefinierte Java-Klasse
- 21. benutzerdefinierte Klasse Httpcontext
- 22. Wie (xml) serialisieren Sie eine uri
- 23. Benutzerdefinierte DataControlField Klasse
- 24. dat.gui benutzerdefinierte css-Klasse
- 25. Datenbindung für benutzerdefinierte Klasse
- 26. PyQt5 benutzerdefinierte QAction Klasse
- 27. Symfony2 benutzerdefinierte Repository-Klasse
- 28. Benutzerdefinierte String-Klasse (C++)
- 29. Optionale Parameter in C# - Eine benutzerdefinierte Klasse auf Null setzen
- 30. In Haskell, wie eine solche benutzerdefinierte Klasse automatisch abgeleitet wird?
+1 Möglicherweise müssen Sie 'nennen [super initWithCoder: aDecoder]' oder '[super encodeWithCoder: Encoder ] 'abhängig von der Klasse, die du unterklassierst. =) –
Doh! Netter Fund - behoben. –
Ich habe eine Frage zu Best Practices ... Soll ich die Klasse Serialisierbar machen oder kann ich es dem UI-Entwickler überlassen, es in einer beliebigen Ausgabe zu serialisieren? – Patricia