Ich versuche, eine Methode zu schreiben, die versucht, ein Objekt basierend auf einem Prädikat mithilfe einer Variablen (als Teil eines NSXMLParser) abzurufen. Der Code sieht so aus:
Ich habe diese Variablen in der Klasse definiert:
%Vor%In der Methode richte ich die Anfrage nun so ein:
%Vor%Jetzt ist die Herausforderung - was ich möchte tun können:
%Vor%Aber das bringt keine Ergebnisse zurück. Nach einigem Herumalbern merke ich, dass dies funktioniert :
%Vor% Das sagt mir, dass mein self.element
richtig eingestellt ist (denke ich?), aber dass das Prädikat nicht mag, dass die linke Seite des Ausdrucks eine Variable ist.
Ich habe es auch versucht:
%Vor%... nur um zu sehen, ob es vielleicht eine Schnur vorzieht. Ich konnte diese Arbeit auch nicht machen.
Ist das, was ich versuche, sogar möglich? Ich habe so viel wie möglich von der Core Data-Dokumentation gelesen und kann keinen Beispielcode finden, der es so macht, aber ich habe auch nichts gefunden, was ich sagen konnte, dass es nicht möglich war.
BEARBEITEN: und jetzt der Arbeitscode:
%Vor%Falls noch nicht geschehen, lesen Sie Prädikat-Programmierleitfaden und Sie können alles über Prädikate finden.
Nun, wenn ich es richtig verstanden habe, wollen Sie ein Prädikat zwischen zwei Strings erstellen, aber der erste ist kein definierter String, aber er kann sich ändern.
Ich habe sie vorher nicht verwendet, aber ich glaube, dass Sie Ihr Problem lösen können, indem Sie ein Prädikat mit dynamischen Eigenschaftsnamen verwenden.
Hier aus der Dokumentation:
Dynamische Eigenschaftennamen
%Vor%
Weil String-Variablen von umgeben sind Anführungszeichen, wenn sie in eine Formatzeichenfolge eingefügt werden%@
, Sie können%@
nicht verwenden, um eine dynamische Eigenschaft name-as anzugeben Im folgenden Beispiel dargestellt.Die Prädikatformatzeichenfolge wird in diesem Fall als "firstName" wie "Adam" ausgewertet.
Wenn Sie einen dynamischen Eigenschaftennamen angeben möchten, verwenden Sie
%Vor%%K
in der format string, wie im folgenden Fragment gezeigt.Die Prädikatformatzeichenfolge wird in diesem Fall als firstName wie "Adam" ausgewertet (beachten Sie, dass es keine Anführungszeichen um firstName).
Weitere Informationen finden Sie auch hier: Prädikat Format String Zusammenfassung .