Полученные свойства v Отношения (основные данные - iPhone) - PullRequest
9 голосов
/ 15 ноября 2009

Я новый разработчик для iPhone (около 4 месяцев или около того), который начинает изучать Core Data.

В книге «Начало разработки iPhone 3» Дэйва Марка упоминается, что main разница между извлеченными свойствами и отношениями заключается в том, что извлеченные свойства допускают отложенную загрузку. Тем не менее, я видел другие ресурсы и принял ответы на этом сайте, которые предполагают, что отношения допускают ленивую загрузку.

Например, если у меня есть объект Department с отношением «многие» к Employee, я бы не хотел, чтобы выборка в данном Департаменте загружала всех связанных сотрудников в память.

Буду чрезвычайно признателен за авторитетный ответ по этому вопросу и по другим различиям, поскольку он имеет очевидные последствия для любого дизайна.

Кроме того, я был бы чрезвычайно признателен, если бы кто-то мог указать мне на разумный ресурс Core Data, который представляет собой понятное руководство для начинающих (ранее я был Java-разработчиком, но я новичок в iPhone-Way ...

Ответы [ 3 ]

12 голосов
/ 16 ноября 2009

Из «Руководства по программированию основных данных» извлеченные свойства представляют «слабые односторонние отношения». Они просто позволяют вам определять значение свойства с помощью предиката выборки, а не моделировать его напрямую, как отношение.

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

5 голосов
/ 15 ноября 2009

Проверить неисправен в основных данных:

При использовании ошибок, если вы извлекаете один объект Employee из постоянного хранилища, его отношения между менеджером, отделом и отчетами первоначально представляются ошибками. Хотя ошибка является экземпляром класса Department, она еще не реализована - ни одна из его постоянных переменных экземпляра еще не установлена.

Если вы отправляете объекту Department сообщение, чтобы получить, скажем, его имя, то происходит сбой - и в этой ситуации Core Data выполняет выборку для вас, чтобы получить все атрибуты объекта.

2 голосов
/ 16 ноября 2009

Я очень рекомендую Базовые данные , автор Маркус Зарра. Я поднял его несколько месяцев назад, и хотя предполагается, что у вас есть некоторый опыт работы с Objective-C, он также довольно доступен для начинающих.

...