Основные данные и низкая производительность - PullRequest
3 голосов
/ 07 июня 2010

Я работаю над этой проблемой уже некоторое время, и я открыт для любых рекомендаций и советов.

Пример

Итак, я создал образецПриложение Core Data.Приложение в основном подражает приложению AddressBook.У меня есть следующие объекты: группа, контакт, адрес, телефон, электронная почта, веб-страница, даты.

Как вы, наверное, догадались, группа может иметь несколько контактов, а контакт может быть в нескольких группах.Контакты могут также иметь несколько адресов, телефонов, электронных писем, веб-страниц и дат.

Я в основном импортировал около 600 контактов в это приложение из AddressBook.Пользовательский интерфейс относительно прост ... список групп / категорий слева и NSCollectionView или NSTableView справа, который показывает список контактов в зависимости от выбранной группы. (Представление коллекции или представление таблицы ... как я добавилвозможность отображения любого вида, оба из которых связаны с NSArrayController)

Элементы группы, которые я извлекаю через код, а не Интерфейсный конструктор, потому что я хотел обойтись с Thing's-подобной боковой панелью, иэто было намного проще сделать таким образом.

Проблема

Одна из категорий содержит все контакты, в то время как другая категория содержит только 2 контакта.Когда я выбираю категорию, в которой есть все контакты, требуется 8-10 секунд, чтобы информация заполнила коллекцию или просмотр таблицы.Однако сделать то же самое в самой AddressBook очень быстро, почти мгновенно.Я использую тип хранилища SQLLite и пытался использовать несколько различных подходов, в том числе пытаться диагностировать проблему с помощью инструментов, но ничего не помогло.

Я попытался установить предикат в defaultFetchPredicate для контактаконтроллер массива в отличие от установки предиката фильтра, но это не сработало.

Я пробовал предварительную выборку и сбои, но я не уверен, правильно ли я это делаю, и не совсем уверен, как это сделатьесли Интерфейсный Разработчик обрабатывает NSArrayController Контакта.

Другой Пример

Я также попытался загрузить пример приложения Core Data ... хотя у него более простая модель отношенийчем то, что я сделал (в основном, у Молекулы есть объекты Atom, а у объекта Atom есть объекты Element), я вставил 65 000 записей, и это показалось мне очаровательным.* Я в основном врезался в стену, и мне интересно, знает ли кто-нибудь еще, почему это происходит, и лучшие способы исправить / преодолеть /избежать такого рода проблем?

Спасибо!

1 Ответ

1 голос
/ 11 июня 2010

Оказывается, что на самом деле это был NSCollectionView, который замедлял вещи. Я предполагаю, что создание и манипулирование представлениями x количество представлений представления коллекции добавляет значительное количество накладных расходов. IKImageBrowserView можно было использовать, но это не то, что я искал.

Я решил изменить макет приложения, чтобы решить эту проблему.

Спасибо всем!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...