2015-03-10 1 views
0

Я использую NSTreeController + NSOutlineView для отображения большого дерева (с более чем 1K узлов). Дерево построено с помощью списка смежности. В NSTreeController включен LazyFetching. Когда я пытаюсь удалить узел, NSTreeController начинает выполнять все узлы потомков сбоев. Он производит задержку, если дерево велико.NSTreeController производит задержку при удалении узла

выполнить журнал состоит в следующем:

2015-03-10 17:10:22.945 TreeTest[1909:303] CoreData: sql: SELECT 0, t0.Z_PK FROM ZENTITY t0 WHERE t0.ZPARENT = ? 
2015-03-10 17:10:22.946 TreeTest[1909:303] CoreData: annotation: sql connection fetch time: 0.0007s 
2015-03-10 17:10:22.947 TreeTest[1909:303] CoreData: annotation: total fetch execution time: 0.0012s for 0 rows. 
2015-03-10 17:10:22.947 TreeTest[1909:303] CoreData: annotation: to-many relationship fault "children" for objectID 0x100568450 <x-coredata://5DB6B2D8-646B-4D2B-ACEA-86E91B6523FB/Entity/p3390> fulfilled from database. Got 0 rows 

Это нормальное поведение? Как я могу это предотвратить?

ответ

0

На самом деле это не проблема NSTreeController. Так как Core Data работает, когда удаляется NSManagedObject. Если у вас есть отношения с сущностью с правилом удаления eq 'cascade', он загружает все связанные объекты (или выполняет объекты сбоя) для такого объекта, а затем удаляет их один за другим.

Так что, если вы используете правило «каскада» и sqlite-бэкэнд, Core Data применяет правило «каскада» самостоятельно и не ретранслирует по серверу.

 Смежные вопросы

  • Нет связанных вопросов^_^