因此,使用NSTokenField来允许数据输入,TokenField会在用户开始输入时提示。我希望它能够提出核心数据中的内容。
要做到这一点,我在单元格移动到superview时调用此函数(这一切都发生在自定义表格视图单元格内)
var subjectInformation = [NSManagedObject]()
let appDel = NSApplication.sharedApplication().delegate as! AppDelegate
let context = appDel.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "SubjectInformation")
do {
let results = try context.executeFetchRequest(fetchRequest)
subjectInformation = results as! [NSManagedObject]
} catch {
}
这会返回一个NSManagedObjects数组,现在我想要托管对象中的每个对象获取valueForKey(“subjectName”),因为它将其插入到一个字符串数组中,以便我可以在此标记字段内返回函数
func tokenField(tokenField: NSTokenField, completionsForSubstring substring: String, indexOfToken tokenIndex: Int, indexOfSelectedItem selectedIndex: UnsafeMutablePointer<Int>) -> [AnyObject]? {
return subjectInformation //this is where is should return an array eg; ["English","Maths","Science"]
我该怎么做?谢谢:))
答案 0 :(得分:1)
如果您正确地对NSManagedObject
进行了子类化,则可以使用富有表现力的Swift样式过滤器和地图。您可以将结果数组转换为[SubjectInformation]
和
let subjectList = subjectInformation.map { $0.subjectName }
答案 1 :(得分:0)
试试这个:
(subjectInformation as! NSArray).valueForKeyPath("@unionOfObjects.subjectName")
这应该返回所有subjectNames
项的subjectInformation
数组。