2010-11-15 5 views
0

Im в настоящее время собирает бизнес-приложение для ipad. Он будет разговаривать с базой данных сервера Microsoft SQL.IPad App pull и push реляционные данные

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

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

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

ответ

1

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

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

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

+0

Привет, Владимир, Спасибо за ваш ответ. Я действительно пытаюсь решить, что лучше всего подходит, поэтому мои данные тянут и толкают как можно меньше, чтобы они были быстрыми. Вы пробовали новую среду синхронизации Microsoft 4, где они заявляют, что разговаривают с любым устройством по кабелю? – MattyD