Ich arbeite an einem Projekt, das Realm für die Datenbank verwendet (die später in das Bild kommen wird). Ich habe gerade eine Schlüsselwertcodierung entdeckt und möchte sie verwenden, um eine TSV-Tabelle in Objekteigenschaften zu konvertieren (indem die Spaltenüberschriften aus der Tabelle als Schlüssel verwendet werden). Im Moment sieht es so aus:Iterate über Eigenschaften eines Objekts (in Realm, oder vielleicht nicht)
Gibt es eine Möglichkeit, über Eigenschaften ohne Spiegel zu iterieren? Ich hätte wirklich schwören können, dass ich in der Realm-Dokumentation (oder vielleicht sogar in der KVC-Dokumentation von Apple) gelesen habe, dass man etwas wie for property in Song.properties
oder for property in Song.self.properties
machen kann, um dasselbe zu erreichen.
Abgesehen davon, dass es ein wenig effizienter ist, der Hauptgrund, warum ich das tun möchte, ist, weil ich denke, dass ich das gelesen habe, denke ich, dass das Iterieren (oder die KVC?) Nur mit Strings funktioniert, Ints, Bools und Dates, also würde es automatisch die Eigenschaften überspringen, die Objekte sind (da Sie sie nicht auf dieselbe Weise einstellen können). Der obige Code ist tatsächlich eine Vereinfachung meines Codes, in der aktuellen Version, die ich zur Zeit die Objekte wie dieses Überspringen bin:
let propertiesToSkip = ["title", "artist", "genre"]
for property in mirror.children where !propertiesToSkip.contains(property.label!) {
...
Habe ich vorstellen, diese .properties
Sache? Oder gibt es eine Möglichkeit, auf diese Weise zu iterieren und Objekte/Klassen automatisch zu überspringen, ohne sie wie oben zu benennen?
Danke :)
Danke, das scheint es zu sein! Wenn ich jedoch nach 'property.type! = Object' suche, bekomme ich" Binary operator! = Kann nicht auf Operanden vom Typ 'PropertyType' und 'Object.Type' angewendet werden. Weißt du, wie man diese so interpretiert, dass sie jeweils gleich sind oder "Eigenschaften" enthalten möglicherweise noch keine Objekte/Listen? –
Gern geschehen! Hmm, 'property.type' ist eine Objective-C enum (https://github.com/realm/realm-cocoa/blob /255b2018c19398efaa52e816ccf59ef11be24cbd/Realm/RLMConstants.h#L51) Angabe des tatsächlichen Typs dieser Eigenschaft Sie müssen sicherstellen, dass Sie die enum-Werte anstelle der tatsächlichen Klassennamen vergleichen :) – TiM