IPad App тянуть и толкать реляционные данные
Я в настоящее время собираю бизнес-приложение для iPad. Он будет говорить с базой данных Microsoft SQL Server.
Мой вопрос заключается в том, что является наиболее эффективным способом передачи реляционных данных через линию. Одним из примеров является отображение списка контактов в приложении. У записи контакта есть поле DepartmentID (связанное с таблицей отдела) и поле ContactTypeID (связанное с таблицей ContactType). Я надеюсь, что когда пользователь впервые запустит приложение, я перенесу данные таблицы отделов и типов контактов на ipad. Затем, когда я извлекаю данные из списка контактов, я просто извлекаю идентификаторы полей и извлекаю связанные с ними данные из данных, которые я извлекал при запуске. Пользователь должен затем нажать на запись в списке и открыть страницу с информацией о выбранном контакте. Это простой пример, но, надеюсь, это поможет мне.
Кто-нибудь получил какой-нибудь совет по поводу наилучшего подхода к этому? Мне нужно будет как извлекать данные, так и отправлять данные на сервер и с сервера.
заранее спасибо
1 ответ
Популярный подход заключается в преобразовании ваших серверных объектов в JSON, а затем отправке строки JSON на устройство. На устройстве декодируйте JSON в значения NSDictionary/NSArray, используя некоторую инфраструктуру JSON (я предлагаю JSONKit, поскольку он очень простой и очень быстрый).
Получив декодированный JSON, вы можете использовать этот метод (предупреждение о бесстыдном подключении) , чтобы превратить объекты NS* в объекты CoreData и сохранить их на своем телефоне.
Что касается поддержания отношений, вы можете использовать либо вложенное представление, либо плоское представление. Пример вложенной реализации будет:
{
class: "Contact",
first_name: "John",
last_name: "Doe",
contact_type: {
class: "ContactType",
type: "some value"
},
department: {
class: "Department",
name: "Department of Transportation"
}
}
Это предпочтительный подход, если у вас есть простая база данных, без циклов отношений.
Кроме того, вы можете использовать плоское представление:
{
class: "Contact",
id: 1,
first_name: "John",
last_name: "Doe",
contact_type_id: 15,
department_id: 34
}
{
class: "ContactType",
id: 15,
type: "some value"
}
{
class: "Department",
id: 34,
name: "Department of Transportation"
}
Затем вы должны будете разрешить отношения вручную, используя contact_type_id и Department_id на устройстве.
Лучше всего протестировать оба этих подхода и посмотреть, какой из них лучше работает в вашем конкретном случае. Лично я бы рекомендовал вложенный подход (если это позволяет ваша структура БД), поскольку он намного быстрее и разрешение отношений выполняется на сервере (где вы, вероятно, можете себе это позволить), а не на устройстве (где вы, вероятно, можете " я не могу себе этого позволить, если у вас большая база данных).