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

Posted

技术标签:

【中文标题】将 XMLRPC/Web 服务与核心数据集成【英文标题】:Integrating XMLRPC/Web Services with Core Data 【发布时间】:2010-11-23 05:14:49 【问题描述】:

我正在为一个项目进行设计,但没有实施任何东西 - 所以我仍在考虑核心数据是否适用于该项目。

这是我的查询 -

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

例如,可能有一个名为 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

看起来像 XMLStoreType 这样的 NSPersistentStore 直接指向保存最终数据的实际 XML 文件。在我的例子中,XML 只是从 XMLRPC 调用返回的内容,实际数据存储在服务器端数据库中。因此,由于存储不是对象的直接表示(或存储对象的位置),我想知道是否应该创建一个自定义 NSAtomicStore 并分别处理加载和保存以进行初始化和更新。这是为 NSAtomicStore 执行此操作的链接 -

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

请让我知道这是否有意义或是否有更好的方法来处理此问题。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

你读完了吗:

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 验证和修改为代价的。无法从 TBXML 对象修改和生成有效的 XML,并且在导入和解析 XML 文档时不会执行任何验证。

【讨论】:

以上是关于将 XMLRPC/Web 服务与核心数据集成的主要内容,如果未能解决你的问题,请参考以下文章

关于?与画面的集成---- k均值聚类

Python机器学习实战决策树与集成学习——集成学习GBDT应用实例

Restkit 核心数据与 NSManagedObjectContext 集成

集成学习:Bagging & Boosting

将种子数据库与 Parse 本地数据存储集成

如何将 Firebase BigQuery 集成“数据集生存时间”从 60 天更改为不会过期?