在我的Mac OS X Swift应用程序中,我使用的是NSTokenField。我正在使用委托方法tokenField(tokenField: NSTokenField, representedObjectForEditingString editingString: String) -> AnyObject
和tokenField(tokenField: NSTokenField, displayStringForRepresentedObject representedObject: AnyObject) -> String?
来处理表示的对象。我表示的对象是自定义类的实例。
从Apple Documentation开始,我知道可以使用objectValue
作为NSTokenView
访问NSArray
的代表对象:
要在令牌字段中检索令牌所代表的对象,请向令牌字段发送
objectValue
消息。虽然此方法由NSControl
声明,但NSTokenField
实现它以返回表示对象的数组。如果token字段只包含一系列字符串,objectValue
将返回一个字符串数组。要设置标记字段的表示对象,请使用setObjectValue
:方法,传入表示对象的数组。如果这些对象不是字符串,NSTokenField
则查询其委托以获取用于每个标记的显示字符串。
但是,这对我来说似乎不起作用。 let tokenArray = self.tokenField.objectValue! as! NSArray
确实返回一个NSArray,但它是空的,即使返回一个表示对象所需的委托方法之前被调用了适当的次数。
NSTokenView
似乎不是使用标记化的特别强大的工具,但是,缺少替代方案,我希望你们可以帮助我实现我的实现。
提前致谢!
答案 0 :(得分:0)
这对我有用:
let tokenStrings = tokenField.objectValue as! [String]
其中tokenField是您要从中提取字符串的NSTokenField。