将XMLRPC / Web服务与核心数据集成

时间:2009-08-27 00:02:49

标签: core-data service xml-rpc

我正在为一个项目做设计并且没有实现 - 所以我仍然会通过思考过程来确定核心数据是否适用于该项目。

这是我的查询 -

我想使用Core Data创建一个托管对象模型来表示一些服务器端对象,例如Folder,File等.... 所有对象(文件夹,文件等)都可以通过XMLRPC API访问,这些API返回一些格式良好的XML。

例如,可能有一个名为getFolders的API可以返回以下内容 -

<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>

类似地,可以有一个对现有文件夹项进行操作的updateFolders API,为简单起见,我们可以说它只是更新文件夹名称。对它的请求将发布如下内容 -

<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调用返回的,而实际数据存储在服务器端DB上。因此,由于存储不是对象的直接表示(或存储对象的位置),我想知道是否应该创建自定义NSAtomicStore并分别处理加载和保存以进行初始化和更新。这是为NSAtomicStore执行此操作的链接 -

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

请告诉我这是否有意义,或者是否有更好的方法来解决这个问题。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您是否已阅读:

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

同时查看TBXML

TBXML是一种用Objective-C编写的轻量级XML文档解析器,专为在Apple iPad,iPhone和iPad上使用而设计。 iPod Touch设备。 TBXML旨在提供尽可能快的XML解析,同时利用最少的资源。绝对效率的这一要求是以XML验证和修改为代价的。无法从TBXML对象修改和生成有效的XML,并且在导入和解析XML文档时不会执行任何验证。

答案 1 :(得分:0)

没有简单的方法可以满足您的要求,而Core Data也不会让您更轻松。

我假设您已经阅读了文档 - 您需要确定一个合适的模型来本地表示您的远程数据,管理远程端和本地端之间的交互,并在两端之间同步状态。决定和协调同步过程是最难的部分。我不确定是否有任何第三方框架可以自动执行此过程。