Базовый объект Data со свойствами, которые указывают на объекты - PullRequest
1 голос
/ 23 августа 2011

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

У меня есть много подклассных объектов MKAnnotation с однозначными отношениями к сущностям.Каждый раз, когда мой fetchedResultsController выполняет новую выборку, я предполагаю, что результаты предыдущей выборки освобождаются, а выбранные объекты NSManagedObject перераспределяются в памяти.Так что мои личные отношения разорваны.Если я смогу сохранить указатель на объекты MKAnnotation в основных данных, это решит половину проблемы (связь в одном направлении).Имеет ли это смысл?Как бы вы это сделали?

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

1 Ответ

0 голосов
/ 24 августа 2011

Смешивать указатели и управляемые объекты обычно бесполезно, потому что в Core Data так много оптимизаций, что прямое управление памятью практически невозможно, например, объект может вернуться к ошибке.

Вы действительно ошибаетесь.Базовые данные - это в первую очередь не API-интерфейс персистентности, а API-интерфейс моделирования данных, предназначенный для предоставления полного уровня модели в приложении разработки Mode-View-Controller.Таким образом, вы можете использовать его, не сохраняя ничего вообще.Если вы используете базовые данные и у вас есть такие данные, как аннотация карты, аннотация должна быть смоделирована в базовых данных.Это упростит все.

Поскольку нет класса MSAnnotation, а есть просто протокол MKAnnotation, простейшим решением в этом случае будет создание класса NSManagedObject, который реализует протокол MKAnnotation.Вы можете конвертировать данные о местоположении, например CLLocationCoordinate2D, в NSValues ​​или, что еще лучше, просто создать для них атрибуты.Поскольку класс реализует протокол, вы можете передавать управляемые объекты везде, где вы проходите любой объект протокола.

...