С чем вы связываете контекст управляемого объекта NSArrayController в Xcode 4? - PullRequest
7 голосов
/ 01 июня 2011

Я пытаюсь создать основанное на документе приложение для просмотра пива, которое позволит вам вводить свои заметки. Я построил модель в Базовых данных и представление в Интерфейсном Разработчике. После некоторых обучающих программ на основе Xcode 3 мне сказали подключить новый NSArrayController к managedObjectContext владельца файла. Если я попытаюсь сделать это в Xcode 4, восклицательный знак в кружке появится рядом с «Путь к ключу модели» в инспекторе для NSArrayController.

Я действительно могу загрузить файл .xib в Интерфейсный Разработчик в Xcode 3, установить это соединение, а затем построить его в Xcode 4, и он запускается, но каждое поле вызывает ошибку проверки.

Модель имеет сущность с именем Scoresheet, у которой есть свойство с именем date, которое является NSDate. Но если я связываю его со значением NSDatePicker и пытаюсь сохранить его на диск, он говорит, что у меня «несколько ошибок валидации». Как может быть ? Они оба NSDates, верно? На самом деле, у меня та же проблема с привязками ко всему; ни один из моих объектов пользовательского интерфейса не будет работать с моей моделью.

Единственное, что я могу понять, это что-то не так в соединении между владельцем файла и NSArrayController.

На данный момент я не написал никакого кода, потому что я понимаю, что мне не нужно просто связывать поля пользовательского интерфейса и основные данные. Это отличается, потому что я использую приложение на основе документа? (Я также не могу заставить его работать в приложении с одним окном.)

Ответ «не используйте базовые данные» не будет продуктивным; Я знаю, что могу просто вернуться к обычному объекту данных. Я хотел бы выяснить это в контексте базовых данных, если это возможно.

ТИА!

(Обновление: этот вопрос, кажется, волнует многих людей. Я ознакомился с книгой Зарры о базовых данных, книгой Хиллегаса о программировании какао и двумя книгами О'Рейли. Похоже, все они основаны на Xcode 3 .)

Ответы [ 2 ]

4 голосов
/ 13 июня 2011

NSPersistentDocument имеет свой собственный контекст управляемого объекта, и вы должны связать NSArrayController в xib-файле вашего документа с этим контекстом управляемого объекта.

Например, если ваш класс документов называется MyDocument, Xcode автоматически создаст для вас MyDocument.h / .m / .xib. В .xib владелец файла является экземпляром вашего класса MyDocument, и вы можете привязать к нему NSArrayController с помощью привязки владельца файла -> managedObjectContext.

0 голосов
/ 24 июня 2011

Я столкнулся с той же проблемой (пример CarLot в главе 11 Hillegass, верно?)

Следующая запись в блоге принадлежит разработчику, который написал и поддерживает расширение для использования с NSManagedObjects и считает, что этоошибка в XCode 4 и отправка отчета в rdar: http://danieltull.co.uk/blog/2011/04/20/xcode-4-and-creating-nsmanagedobject-subclasses/

У меня есть машина с XCode 3, в конечном итоге я перестану бить по этому вопросу в 4, создам проект в XCode 3 иимпортируйте его в XCode 4.

Отредактировано, чтобы добавить: Добавление элемента в XCode 3 и связывание розетки, а затем импорт проекта в XCode 4 работает нормально, кажется, что это ошибка в XCode 4.Я не получаю проблем проверки от XCode 4, делающего это.

...