Использование this руководство я создал статическую библиотеку (назовем ее AppCore), которые могут быть разделены между версиями Mac OS X и IOS одного приложения. Эта статическая библиотека использует Core Data, и ее точка зрения заключается в совместном использовании версий модели и схемы между различными реализациями.NSArrayController и обращаясь к общему, статической, на основе основных данных библиотеки
Я создал проект на основе NSPersistentDocument
, который будет зависеть от этого AppCore. В этом проекте я добавил ссылку на файл .xcdatamodel. Затем я создал простой табличный вид с кнопками add/remove для редактирования массива одного типа сущности с помощью элемента «новый основной объект данных». Это создало экземпляр NSArrayController
и необходимые привязки для поведения add/remove.
Теперь все работает нормально, когда я использую класс по умолчанию для объектов Core Data (NSManagedObject
), и я могу добавлять новые строки с помощью кнопок +/-. Однако, когда я изменить класс реализации объекта к обычаю один, я получаю сообщение об ошибке
Failed to create new object
Это, кажется, исходит из NSArrayController
и это, кажется, не в состоянии создать экземпляр требуемого лица. Я могу, однако, создать в NSPersistentDocument
подкласса:
[NSEntityDescription insertNewObjectForEntityForName:@"SomeEntity" inManagedObjectContext:[self managedObjectContext]]
Что меня смущает почему экземпляр NSArrayController
не может. Если я правильно понимаю, контроллеру массива дается указание создать сущность, а не класс, и я предполагаю, что сущности создаются с помощью класса NSEntityDescription
. Я мог бы реализовать свою собственную версию контроллера массива add:
, но опять же, может быть, здесь что-то принципиально неправильно. Я не коснулся init:
s, а реализация класса пользовательских сущностей просто для удобства, чтобы получить доступ к атрибутам напрямую.
Я попытался изменить базовый SDK на AppCore, но без эффекта. В настоящее время он использует версию iOS, но я не уверен, как это должно быть. Это другой вопрос, но если он не связан, я могу задать его здесь по отдельному вопросу.
Итак, чтобы обобщить, почему не удается создать экземпляр этого объекта NSArrayController
?
Заранее спасибо.
Update
Это работает, если я добавляю SomeEntity
класс от AppCore зависимого проекта в качестве ссылки. Это не самый удобный способ, так как изменения в AppCore также должны быть переданы в проекты dependatnt.