IPad App тянуть и толкать реляционные данные - PullRequest
0 голосов
/ 15 ноября 2010

Я сейчас собираю бизнес-приложение для iPad. Он будет говорить с базой данных Microsoft SQL Server.

Мой вопрос - какой самый эффективный способ перенести реляционные данные через линию? Одним из примеров является отображение списка контактов в приложении. Запись контакта имеет поле DepartmentID (которое связано с таблицей отдела) и поле ContactTypeID (которое связано с таблицей ContactType). Я надеюсь, что когда пользователь впервые запустит приложение, я перенесу данные таблицы отделов и типов контактов на ipad. Затем, когда я извлекаю данные из списка контактов, я просто вытягиваю идентификаторы полей и извлекаю связанные с ними данные из данных, которые я извлек при запуске. Пользователь должен затем нажать на запись в списке и открыть страницу с подробностями для выбранного контакта. Это простой пример, но, надеюсь, он поможет мне.

Кто-нибудь получил какой-нибудь совет относительно лучшего подхода для этого? Мне нужно будет как извлекать данные, так и отправлять данные на сервер и с сервера.

Заранее спасибо

1 Ответ

1 голос
/ 15 ноября 2010

Популярным подходом является преобразование объектов на стороне сервера в JSON, а затем отправка строки JSON на устройство.На устройстве декодируйте JSON в значения NSDictionary / NSArray, используя некоторую инфраструктуру JSON (я предлагаю JSONKit , поскольку он очень простой и очень быстрый ).

Как только вы получитедекодированный JSON, вы можете использовать (10000 * предупреждение * о бесстыдном подключении) , чтобы превратить ваши 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 на устройстве.

Лучше всего протестировать оба этих подхода и посмотреть, какой из них работает лучше в вашем конкретном случае.Лично я бы рекомендовал вложенный подход (если это позволяет ваша структура БД), поскольку он намного быстрее и разрешение отношений выполняется на сервере (где вы, вероятно, можете себе это позволить), а не на устройстве (где вы, вероятно, можете »я не могу себе этого позволить, если у вас большая база данных).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...