Frage

Ich kann ein NSPredicate einfach erstellen eine NSPredicateEditor (eine Unterklasse von NSRuleEditor) verwendet wird. Was ich möchte wissen, ist dies:

Wie kann ich eine vorhandene NSPredicate nehmen (ein durch den Editor erstellt) und in den Editor laden, damit ich es ändern kann?

EDIT: Ich habe versucht, @ John Vorschlag setObjectValue der Verwendung :, aber das hat nicht ganz funktioniert. Lassen Sie mich erklären meine gründen ein bisschen mehr:

Ich habe ein Dokument-basierten Kakao app bekam, und das Dokumentfenster hat gerade einen NSPredicateEditor darauf. Im dataOfType:error: Methode, die ich habe:

NSPredicate * pred = [predicateEditor objectValue];
NSData * predicateData = [NSKeyedArchiver archivedDataWithRootObject:pred];
return predicateData;

In der readFromData:ofType:error: Methode, die ich habe:

NSPredicate * pred = [NSKeyedUnarchiver unarchiveObjectWithData:data];
[predicateEditor setObjectValue:pred];
return (pred != nil);

Ich habe festgestellt, dass das Prädikat immer korrekt archivierte und aus dem Archiv entfernt, aber nach einem gespeichertes Prädikat öffnet, wird das Prädikat nicht in die predicateEditor geladen. (Ja, predicateEditor als IBOutlet angeschlossen)

War es hilfreich?

Lösung

Stellen Sie die objectValue Eigenschaft des NSPredicateEditor zum Prädikat in Frage.

Die Dokumentation hat diese Beschreibung des Ladevorgangs; hat irgendetwas davon scheinen, wie es ein Problem mit dem Setup verursachen könnte?

  

Als erstes wird eine Instanz   NSPredicateEditor erstellt, und einige   Zeilen Vorlagen werden auf gesetzt it-entweder   durch eine Nib-Datei oder   programmatisch. Die erste Sache   Prädikat Editor tut, ist jeder fragen   die Vorlagen für ihre Ansichten, mit   templateViews.

     

Nach dem Prädikat Editor einrichten,   Sie senden es in der Regel ein   setObjectValue: Nachricht eine Wiederherstellung   gespeichert Prädikat. NSPredicateEditor   muss, um zu bestimmen, welche ihrer   Vorlagen sollte jede Anzeige   Prädikat im Prädikat Baum. Es   tut dies, indem jeder seiner Reihe Senden   Vorlagen ein matchForPredicate: Nachricht   und die Wahl der Gefahr, dass die zurück   höchster Wert.

     

Nach der besten Übereinstimmung für eine Suche   Prädikat, NSPredicateEditor Kopien   diese Vorlage frische Ansichten zu erhalten,   fügt sie in die richtige Zeile und   setzt dann das Prädikat auf dem   Vorlage setPredicate :. Innerhalb   das Verfahren, das   NSPredicateEditorRowTemplate Objekt   muss seine Ansichten Werte auf   repräsentiert dieses Prädikat.

     

NSPredicateEditorRowTemplate nächstes fragt   die Vorlage für die „darstellbaren   Unter Prädikaten“des Prädikats von   Senden einer   displayableSubpredicatesOfPredicate:   Botschaft. Wenn eine Vorlage stellt ein   Prädikat in seiner Gesamtheit, oder wenn die   Prädikat hat kein subpredicates, kann es   Rückkehr null für diese. Ansonsten ist es   sollte eine Liste von Prädikaten zurückzukehren   hergestellt in Unterreihen sein, daß   Vorlage der Reihe. Der ganze Prozess   wiederholt sich für jeden Unter Prädikat.

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