Интеграция XMLRPC/Web-сервисов с основными данными

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

Здесь мой запрос -

Я хочу создать модель управляемого объекта с использованием Core Data для представления некоторых объектов на стороне сервера, например, Folder, File и т.д.... Все объекты (папка, файл и т.д.) Доступны через 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 -

http://devworld.apple.com/documentation/Cocoa/Conceptual/AtomicStore_Concepts/Articles/asLoading.html#//apple_ref/doc/uid/TP40005298

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

Заранее благодарим за помощь!

Ответ 1

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

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

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

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

Ответ 2

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

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