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 呼び出しから返されたものであり、実際のデータはサーバー側の DB に格納されます。したがって、ストアはオブジェクト (またはオブジェクトが格納されている場所) の直接的な表現ではないため、カスタム 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

読んだことがありますか:

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

TBXMLもチェックしてください。

TBXML は、Apple iPad、iPhone、iPod Touch デバイスで使用するために設計された Objective-C で書かれた軽量の XML ドキュメント パーサーです。TBXML は、リソースを最小限に抑えながら、可能な限り高速な XML 解析を提供することを目的としています。絶対的な効率を求めるこの要件は、XML の検証と変更を犠牲にして達成されます。TBXML オブジェクトから有効な XML を変更および生成することはできず、XML ドキュメントのインポートおよび解析中に検証はまったく実行されません。

于 2011-01-12T00:56:31.157 に答える
0

あなたが求めていることを実行する簡単な方法はありません。Core Data はそれを簡単にするものではありません。

ドキュメントを読んだことがあると思います。リモート データをローカルで表す適切なモデルを決定し、リモート エンドとローカル エンド間の相互作用を管理し、エンド間の状態を同期する必要があります。同期プロセスの決定と調整は、最も難しい部分です。このプロセスを自動化できるサードパーティ フレームワークがあるかどうかはわかりません。

于 2011-02-22T10:04:54.040 に答える