In meiner Swift-Anwendung für Mac OS X verwende ich eine NSTokenField. Ich verwende unter anderem die Delegate-Methoden tokenField(tokenField: NSTokenField, representedObjectForEditingString editingString: String) -> AnyObject
und tokenField(tokenField: NSTokenField, displayStringForRepresentedObject representedObject: AnyObject) -> String?
, um mit dargestellten Objekten zu arbeiten. Meine dargestellten Objekte sind Instanzen einer benutzerdefinierten Klasse.Probleme mit NSTokenView (wieder) - mit Objektwert
Vom Apple Documentation, ich weiß, dass objectValue
verwendet werden können, um die dargestellten Objekte eines NSTokenView
als NSArray
zuzugreifen:
die Objekte durch die Tokens in einem Token-Feld, senden Sie das Token-Feld dargestellt abzurufen eine
objectValue
Nachricht. Obwohl diese Methode vonNSControl
deklariert wird, implementiertNSTokenField
es, um ein Array von dargestellten Objekten zurückzugeben. Wenn das Token-Feld einfach eine Folge von Strings enthält, gibtobjectValue
ein Array von Strings zurück. Verwenden Sie zum Festlegen der dargestellten Objekte eines Tokenfelds die MethodesetObjectValue
:, und übergeben Sie ein Array von dargestellten Objekten. Wenn diese Objekte keine Zeichenfolgen sind, fragtNSTokenField
ihren Delegaten nach den Anzeigestrings ab, die für jedes Token verwendet werden sollen.
Allerdings scheint dies für mich nicht zu funktionieren. let tokenArray = self.tokenField.objectValue! as! NSArray
gibt ein NSArray zurück, aber es ist leer, obwohl die Delegate-Methode, die erforderlich ist, um ein dargestelltes Objekt zurückzugeben, zuvor entsprechend oft aufgerufen wurde.
NSTokenView
scheint nicht ein besonders starkes Werkzeug zu sein, mit Tokenization zu arbeiten, aber, ohne eine Alternative, ich hoffe, dass Sie mir helfen können, meine Implementierung zu arbeiten.
Vielen Dank im Voraus!
In einer schnellen Demo-App - nur '' tokenField: displayStringForReprenededObject: '' implementieren - die '' objectValue'' Eigenschaft des Tokenfeldes verhielt sich wie in der Dokumentation beschrieben. Dies lässt mich glauben, dass das Verhalten, das Sie erhalten, auf ein Problem in Ihrem Code zurückzuführen ist. Können Sie die Implementierung der Delegate-Methoden zusammen mit ein paar Informationen über Ihre benutzerdefinierte Klasse veröffentlichen? –
Was ist 'NSTokenView'? – Willeke