私はSwiftには新しく、NSOutlineViewでNSTreeControllerを実装する方法を学習しようとしています。私はそのような例を示すいくつかのガイドに従ってきましたが、私はエラーを受け取り続けます。私はステップバイステップを踏んだり、利用可能であればソースコードを実行しようとしましたが、同じエラーが発生しました。私は、Swift 4にいくつかの変更があり、これらのSwift 3の例がエラーを引き起こすと思うようになりました。 Swift 4には多くの例はありませんので、ここで質問してみてください。NSTreeControllerのエラー - このクラスはキーのキーコードに準拠していません
私は取得していますエラーは次のとおりです。
このクラスは、キー値コーディング準拠のキーのisLeafのためではありません。
NSTreeController用に設定されたキーパスからエラーが発生していると思います。
しかし、私はエラーを修正するために何をすべきかわかりません。
私は年という単純なモデルクラスを持っています。
class Year: NSObject {
var name: String
init(name: String) {
self.name = name
}
func isLeaf() -> Bool {
return true
}
}
ビューコントローラは次のようになります。
class ViewController: NSViewController, NSOutlineViewDataSource, NSOutlineViewDelegate {
@IBOutlet weak var outlineView: NSOutlineView!
@IBOutlet var treeController: NSTreeController!
override func viewDidLoad() {
super.viewDidLoad()
addData()
outlineView.delegate = self
outlineView.dataSource = self
}
func addData() {
let root = ["name": "Year", "isLeaf": false] as [String : Any]
let dict: NSMutableDictionary = NSMutableDictionary(dictionary: root)
dict.setObject([Year(name: "1999"), Year(name: "2000")], forKey: "children" as NSCopying)
treeController.addObject(dict)
}
func isHeader(item: Any) -> Bool {
if let item = item as? NSTreeNode {
return !(item.representedObject is Year)
} else {
return !(item is Year)
}
}
func outlineView(_ outlineView: NSOutlineView, viewFor tableColumn: NSTableColumn?, item: Any) -> NSView? {
if isHeader(item: item) {
return outlineView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "HeaderCell"), owner: self)!
} else {
return outlineView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "DataCell"), owner: self)!
}
}
}
私はプログラムを実行すると、それは問題を引き起こさないが、私はルートの2人の子供を表示するには、ノードを展開するとき、それは私が上記のエラーを与えています。