2015-12-31 6 views
1

Я пытаюсь использовать NSOutlineView в своем проекте, используя Swift. Я сделал это несколько раз, используя Objective-C без проблем, но почему-то сейчас мое приложение продолжает сбой с EXC_BAD_ACCESS, в основном при попытке развернуть ячейку.Ошибка NSOutlineView EXC_BAD_ACCESS при расширении

Я создал новый тестовый проект с только схематичным видом и 4 способами источника данных, но сбой произойдет, там тоже.

Вот минимальная реализация:

func outlineView(outlineView: NSOutlineView, numberOfChildrenOfItem item: AnyObject?) -> Int { 

    return 3 
} 

func outlineView(outlineView: NSOutlineView, child index: Int, ofItem item: AnyObject?) -> AnyObject { 

    return "Test" 
} 

func outlineView(outlineView: NSOutlineView, isItemExpandable item: AnyObject) -> Bool { 

    return true 
} 

func outlineView(outlineView: NSOutlineView, objectValueForTableColumn tableColumn: NSTableColumn?, byItem item: AnyObject?) -> AnyObject? { 

    return nil 
} 

Любая идея о том, что я делаю неправильно?

Я загрузил здесь тестовый проект. Пожалуйста, просмотрите его. https://drive.google.com/file/d/0BzEhecUbyNeFS3JGN1V0SlJ0dWM/view

ответ

1

Есть несколько вещей, которые я должен был исправить, чтобы сделать ваш образец работы, как и ожидалось:

  • Там в аварии, связанные с «Тест» является локальной строки и выпущен до контурный вид пытается сохранить Это. Это фиксируется наличием элементов, принадлежащих контроллеру представления.

  • После этого я столкнулся с крушением из-за бесконечной рекурсии. Это было исправлено за счет наличия модели данных вместо того, чтобы сообщать очертите, что у каждого элемента было 3 ребенка независимо от уровня, на котором находился элемент.

  • Я также сменил элементы, которые были подклассы из NSObject, а не String, потому что я помню, что читал, что это было необходимо. (В настоящее время я не могу найти ссылку.)