10

我正在为一个项目做设计,但什么都没有实现——所以我仍在考虑核心数据是否适用于该项目。

这是我的查询 -

我想使用 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

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

4

2 回答 2

1

Have you read through:

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

Also check out TBXML:

TBXML is a light-weight XML document parser written in Objective-C designed for use on Apple iPad, iPhone & iPod Touch devices. TBXML aims to provide the fastest possible XML parsing whilst utilising the fewest resources. This requirement for absolute efficiency is achieved at the expense of XML validation and modification. It is not possible to modify and generate valid XML from a TBXML object and no validation is performed whatsoever whilst importing and parsing an XML document.

于 2011-01-12T00:56:31.157 回答
0

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

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

于 2011-02-22T10:04:54.040 回答