Интеграция XMLRPC / веб-сервисов с базовыми данными - PullRequest
10 голосов
/ 27 августа 2009

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

Вот мой запрос -

Я хочу создать модель управляемого объекта, используя базовые данные для представления некоторых объектов на стороне сервера, например, папки, файла и т. Д. Все объекты (папка, файл и т. Д.) Доступны через API-интерфейсы XMLRPC, которые возвращают некоторый правильно сформированный XML.

Например, может существовать API с именем getFolders, который может возвращать следующее -

<xml>
 <folders>
  <folder id=1>
    <name>Test 123</name>
   <files>
      <file id=100>
           <name>hello.txt</name>
          <path>./hello.txt</path>
      </file>
      ...
  </files>
 </folder>
 ...
</folders>

Аналогичным образом может существовать API-интерфейс updateFolders, который работает с существующим элементом папки, и для простоты скажем, он просто обновляет имя папки. Запрос на это выложит что-то вроде следующего -

<xml>
 <method name="updateFolder">
  <folder_id="1">
  <params>
   <param name="folder_name" value="Test"/>
  </params>
 </method>

Я пытаюсь выяснить -

  1. How can I represent folder as a managed object i.e., how do I initialize it from the above XML
  2. Once initialized, how can I handle an update to it using the updateFolder API shown above

Кажется, что NSPersistentStore, такой как XMLStoreType, указывает непосредственно на фактические файлы XML, которые содержат окончательные данные. В моем случае XML - это просто то, что возвращается из вызова XMLRPC, а фактические данные хранятся в БД на стороне сервера. Поэтому, поскольку хранилища не являются прямыми представлениями объектов (или того, где хранятся объекты), мне было интересно, должен ли я создать собственный NSAtomicStore и обрабатывать загрузку и сохранение для инициализации и обновления соответственно. Вот ссылка на это для NSAtomicStore -

https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/AtomicStore_Concepts/Articles/asLoading.html#//apple_ref/doc/uid/TP40005298

Пожалуйста, дайте мне знать, если это имеет смысл или есть лучший способ справиться с этим.

Ответы [ 2 ]

1 голос
/ 12 января 2011

Прочитали ли вы:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html

Также проверьте TBXML :

TBXML - это легкий анализатор XML-документов, написанный на Objective-C, предназначенный для использования на устройствах Apple iPad, iPhone и iPod Touch. TBXML направлен на обеспечение максимально быстрого анализа XML при использовании наименьшего количества ресурсов. Это требование абсолютной эффективности достигается за счет проверки и модификации XML. Невозможно изменить и сгенерировать действительный XML из объекта TBXML, и при импорте и анализе документа XML не выполняется никакой проверки.

0 голосов
/ 22 февраля 2011

Нет простого способа выполнить то, что вы просите, и Базовые данные не облегчат вам задачу.

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

...