Macos 如何使用Swift查找大纲视图中的缩进级别

Macos 如何使用Swift查找大纲视图中的缩进级别,macos,core-data,swift,cocoa-bindings,nsoutlineview,Macos,Core Data,Swift,Cocoa Bindings,Nsoutlineview,我在OSX Xcode项目中使用Swift、Cocoa绑定和核心数据来显示绑定到实体系列的大纲视图,并显示属性名,该属性名与自身具有多对多关系 我希望我的用户只能输入三个级别:一个根、一个子级和该子级的另一个子级 下面是我的系列的子类: @objc(Series) class Series: NSManagedObject { @NSManaged var isLeaf: NSNumber @NSManaged var name: String @NSManaged var parent

我在OSX Xcode项目中使用Swift、Cocoa绑定和核心数据来显示绑定到实体系列的大纲视图,并显示属性名,该属性名与自身具有多对多关系

我希望我的用户只能输入三个级别:一个根、一个子级和该子级的另一个子级

下面是我的系列的子类:

@objc(Series)
class Series: NSManagedObject {

@NSManaged var isLeaf: NSNumber   
@NSManaged var name: String
@NSManaged var parent: Series
@NSManaged var subGroups: NSSet
}
当输入并保存数据时,对于第三个名称条目,isLeaf应更改为true。这样,用户就不可能创建第四个条目

我将此函数添加到Series子类中,以便验证每个新名称条目:

func validateName(ioValue: AutoreleasingUnsafeMutablePointer<AnyObject?>, 
error: NSErrorPointer) -> Bool {
    if let test = ioValue.memory as? String {
    if test != "" {
    println("Name is \(test)")
    // This is where we need to test for indentation level
    }
    } else {
    }
    return true
    }
我非常确定我需要做的是测试第三个条目的缩进级别,如果它返回2,那么我需要将isLeaf从false更改为true


不幸的是,我不知道如何在实践中做到这一点。有人有什么建议吗?

最好让数据模型处理它,如果有祖父母,则让isLeaf返回true。您建议让数据模型在视图中查询有关数据模型对象图的信息,然后将该信息返回到视图中的控件。非常感谢。测试祖父母也是根,这正是我最初想要进行的,但我就是不知道如何在Swift中进行。validateName函数是我添加的唯一代码,所以我想我必须在AppDelegate中进行测试,但我不知所措。。。你能给我指一下正确的方向吗?