首页 > 解决方案 > 如何将 isLeaf 和子级添加到 NSManagedObjects 以与 NSTreeController 一起使用?

问题描述

我正在尝试在我的应用程序中将NSManagedObjects 与NSTreeControllerand一起使用。NSOutlineViewmacOS

我在大纲视图中有一个两级数据:ProjectItem,两者都NSManagedObject在我的模型中设置。

在我的故事板中,我添加了这个:

在此处输入图像描述

在此处输入图像描述

我在我的代码中添加了这个:

extension Project {
    @objc var isLeaf: Bool {
        return false
    }
    
    @objc var childCount: Int {
        return items?.count ?? 0
    }
    
    @objc var children: [Item] {
        return items?.allObjects as! [Item]
    }
}

extension Item {
    @objc var isLeaf: Bool {
        return true
    }
    
    @objc var childCount: Int {
        return 0
    }
    
    @objc var children: [NSManagedObject] {
        return []
    }
}

当我运行该应用程序时,我收到以下错误:

Thread 1: "[<MyApp.ProjectBrowserViewController 0x600001580820> valueForUndefinedKey:]: this class is not key value coding-compliant for the key isLeaf."

它没有说明哪个类,但该错误出现了两次,所以我猜一次是Project,一次是Item

我在这里缺少什么,我该如何解决?如果需要,将很乐意添加更多信息。

标签: swiftmacoscore-datanstreecontroller

解决方案


推荐阅读