NSTokenView的问题(再次) - 使用objectvalue

时间:2016-07-18 17:20:27

标签: swift macos cocoa

在我的Mac OS X Swift应用程序中,我使用的是NSTokenField。我正在使用委托方法tokenField(tokenField: NSTokenField, representedObjectForEditingString editingString: String) -> AnyObjecttokenField(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似乎不是使用标记化的特别强大的工具,但是,缺少替代方案,我希望你们可以帮助我实现我的实现。

提前致谢!

1 个答案:

答案 0 :(得分:0)

这对我有用:

let tokenStrings = tokenField.objectValue as! [String]

其中tokenField是您要从中提取字符串的NSTokenField。