Frage

ich die plist Serialisierung Fähigkeit wie für kleine Sammlungen von Objekten: es einfach ist, die Lagerung ist XML, etc. Aber ich finde Werte in Wörterbücher Einstellung umständlich:

[myDict setObject:keepThis forKey:@"ivar"];

Ich würde viel lieber Objekt verwenden, von Klassen abgeleitet (oder auch nur structs):

myObj.ivar = keepThis

... und dann eine Nachricht an eine Sammlung senden plist zu bekommen. Die Klassen / Strukturen für diesen Zweck verwendet wird, könnte eingeschränkt werden, so dass sie direkt und einfach auf plist Primitiven Karte; zum Beispiel auf eine NSDictionary und eine Anforderung an ivars gelegt werden kann abgebildet werden myObj könnte, so dass sie eine der plist Primitive sind.

Hat jemand schon eine Anlage für diese gebaut, oder sollte ich meine eigene Rolle?

War es hilfreich?

Lösung 5

Ich sah dies an anderer Stelle geschrieben, aber es ist genau das, was ich suchte. Die Antworten oben Punkt auf die rohen Zutaten, aber hier ist es, alle eingewickelt-up: http: // retaincount.com/blog/?p=7

Andere Tipps

Ich bin nicht sicher, dass dies so ist, wie du redest, aber Key Value Coding wird, neben vielen anderen Dingen, können Sie a href <=" http://developer.apple.com/library/ios/documentation/Cocoa/Reference/ Stiftung / Protokolle / NSKeyValueCoding_Protocol / Reference / reference.html # // apple_ref / doc / uid / 20000471-BABIAGCF“rel = "nofollow noreferrer"> erhalten ein Wörterbuch mit Werten aus einer Daten Instanz, und auch gesetzt Instanzdaten aus einem Wörterbuch .

Es gibt auch eine Möglichkeit, Laufzeit Selbstbeobachtung dass zu implementieren, wenn man will) EDIT 2 Januar 2011:. -[NSObject attributeKeys] wird nicht mehr in der iOS-Dokumentation. Ich habe den Link bearbeiten auf die Mac-Dokumentation zu zeigen, aber bewusst sein, dass dies nur auf dieser Plattform eine Option sein kann.

(Der NSCoding Protokoll ist ein weiterer Weg, um Ihre Objekte speichern zu lassen / restore selbst, aber der Speicher ist binär, nicht XML, und Sie sind immer noch verantwortlich für das erhalten / Putting jeden Wertes der Sie wichtig ist, wenn sie vom System gefragt, dies zu tun. )

Sie möchten vielleicht a href überprüfen <= "https://stackoverflow.com/questions/1631358/is-there-a-way-to-dynamically-determine-ivars-of-a-class-at- Laufzeit-in-Kakao-co / 1631611 # 1631611" > diese SO in Frage, die eine Instanz ivars in einem Wörterbuch zur Laufzeit bespricht setzen.

Ein interessantes Projekt. Die Objective-C 2.0 Programming Guide hat einen Abschnitt über die Runtime-Funktionen dynamisch eine Liste von einer Klasse Eigenschaften zu erhalten:

objc_property_t *class_copyPropertyList(Class cls, unsigned int *outCount)

Damit sollte es recht einfach, eine Kategorie auf NSObject mit einer Methode zu schreiben, die die Liste der Eigenschaften erhalten und setzt sie in ein Wörterbuch.

Um die Eigenschaften für diesen Einsatz, müßten Sie einen vordefinierten Satz von möglichen Schlüsseln. Sie können nicht beliebige Namen mit der Punkt-Syntax verwenden - es ist eine bekannte Eigenschaft oder Accessor des ersten Operanden sein mußten. So kann es nicht eine generische Form dafür. Aber wenn Sie eine Ihrer eigenen auszukommen, in ein Wörterbuch dreht, ist so einfach wie [self dictionaryWithValuesForKeys:listOfProperties] tun.

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