CoreData和NSTreeController

时间:2012-07-23 14:47:11

标签: objective-c cocoa core-data nstreecontroller

目前我正在坚持使用核心数据后端的nstreecontroller。我的问题是,如果我编辑字段或添加新行,则不会触发重新排列。

结构:

  • 配置了准备内容ON并使用延迟抓取ON的NSTreeController。控制器绑定到appDelegate.managedObjectContext和appDelegate.mySortDescriptor(这是一个返回内部带有nssortdescriptor的数组的函数)。
  • 将其列绑定到treecontroller.arrangedObjects.name的Outlineview。 Outlineview也处于SourceList模式。
  • 一个名为“Item”的实体,它与Item具有一对多关系(子项),与Item具有一对一关系(父项)。当然还有一个名为“name”的字段,它包含displayvalue。
  • 两个存储空间。一个只保留在内存中,默认一个。临时存储用于设置根实体(我不希望它们被存储,因为它们只是“可视化”)。

直到这里一切都很好,除了:

  • 在启动时,sortdescriptor会被读入但不被执行(我自称为重新排列功能)
  • 对核心数据没有任何修改会触发重新排列方法

我已经尝试通过以下结果自行解决问题:

  • 删除“使用懒惰提取”将解决问题o_O但是谁想要这个?!
  • 在outlineView中调用重新排列:setObjectValue:forTableColumn:byItem :( outlineview datasource)将解决问题。但是我真的不明白为什么这个被调用(我使用的是coredata,所以它不应该被调用?)。另一方面,调用重新排列通常会再次混淆排序(例如,如果你保存一个没有改变其值的单元格)

这就是为什么我告诉自己你要面对一个错误的事实:)

我真正想要的是以下内容:

  • CoreData后端
  • Outlineview始终排序(用户无法更改)
  • 跳过根对象的保存
  • 总是欢迎减少工作

非常感谢和最诚挚的问候,matthieu riolo

PS:提示也很受欢迎

0 个答案:

没有答案