在MacOSX的Swift应用程序中,我使用的是一个NSTokenField。我正在使用委托方法tokenField(tokenField: NSTokenField, representedObjectForEditingString editingString: String) -> AnyObject
和tokenField(tokenField: NSTokenField, displayStringForRepresentedObject representedObject: AnyObject) -> String?
来处理表示的对象。我表示的对象是自定义类的实例。
从Apple Documentation中,我知道可以使用objectValue
作为NSTokenView
访问aNSArray
的表示对象:
要检索由令牌字段中的令牌表示的对象,请向令牌字段发送一条objectValue
消息。尽管此方法是由NSControl
声明的,但NSTokenField
实现它以返回表示对象的数组。如果token字段只包含一系列字符串,objectValue
返回字符串数组。要设置令牌字段的表示对象,请使用setObjectValue
:方法,传入表示对象的数组。如果这些对象不是字符串,NSTokenField
则查询其委托,以获取用于每个令牌的显示字符串。
然而,这似乎对我不起作用。let tokenArray = self.tokenField.objectValue! as! NSArray
确实返回一个nsarray,但它是空的,即使返回一个表示的对象所需的委托方法在前面已经被调用了适当的次数。NSTokenView
似乎不是一个特别强大的工具来处理标记化技术,但是,如果没有其他选择,我希望你们能帮助我使我的实现工作正常。
事先谢谢!
最佳答案
这对我很有用:
let tokenStrings = tokenField.objectValue as! [String]
其中,tokenfield是要从中提取字符串的nstokenfield。
关于swift - NSTokenView的问题(再次) - 使用objectvalue,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38442568/