Xcode 7,Swift 2,macOS应用程序
您好
我有一个名为'任务'的核心数据实体。它有一些属性,包括:
此实体定义了两个关系:
我在NSOutlineView中显示任务,它们显示层次结构正常。我希望Task.type
设置为'任务'如果任务没有孩子(叶子)或被设置为' Group'如果任务确实有孩子。我以为我可以在“设置器”中调用一个简单的更新方法(updateType)。如下:
internal static let childrenKey = "children"
@NSManaged private var primitiveChildren: NSSet
internal var children: NSSet {
set{
//print("Task.children set called.")
if (newValue != children){
willChangeValueForKey(Task.childrenKey)
primitiveChildren = newValue
didChangeValueForKey(Task.childrenKey)
updateType()
}
}
get{
//print("Task.children get called.")
willAccessValueForKey(Task.childrenKey)
let value = primitiveChildren
didAccessValueForKey(Task.childrenKey)
return value
}
}
然而,当我将一个孩子插入任务时,这并没有被调用。
如果它很重要,如果在单击我的添加按钮时在NSOutlineView中选择了一个任务,则在NSViewController中调用以下函数:
internal func addTask(){
// Get the selected Task, if a Task is selected.
let selectedRow = self.outlineView.itemAtRow(self.outlineView.selectedRow)
// Establish if a Task is selected.
if ((selectedRow) != nil) {
// A Task is selected so we insert the new Task as a child of the selected Task.
print("Task is selected")
treeController.addChild(Task)
} else {
// No Task is selected so add a new Task at the root level.
print("No task is selected")
treeController.insertChild(Task)
}
}
由于