2009-08-27 8 views
10

Sto progettando un progetto e non è stato implementato nulla, quindi sto ancora analizzando il processo di riflessione per determinare se i dati di base sono validi per il progetto.Integrazione di XMLRPC/Web Services con Core Data

Ecco la mia domanda -

voglio creare un modello di oggetto gestito con Core Data per rappresentare un certo lato server oggetti ad esempio cartelle, file, ecc .... Tutti gli oggetti (cartelle, file etc ..) sono accessibili tramite API XMLRPC che restituiscono alcuni XML ben formati.

Per esempio, ci può essere un'API chiamata getFolders che possono restituire il seguente -

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

Allo stesso modo non ci può essere un'API updateFolders che opera su un elemento cartella esistente e per semplicità diciamo solo aggiorna il nome della cartella. La richiesta di inviare sarebbe qualcosa di simile a quanto segue -

<xml> 
<method name="updateFolder"> 
    <folder_id="1"> 
    <params> 
    <param name="folder_name" value="Test"/> 
    </params> 
</method> 

Sto cercando di capire -

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 

Sembra che il come punto di XMLStoreType NSPersistentStore direttamente in file XML effettivi che fissano il dati finali. Nel mio caso, l'XML è semplicemente quello che viene restituito da una chiamata XMLRPC e i dati effettivi sono memorizzati su un DB lato server. Pertanto, poiché i negozi non sono rappresentazioni dirette degli oggetti (o dove sono memorizzati gli oggetti), mi chiedevo se dovevo creare un NSAtomicStore personalizzato e gestire il carico e salvare rispettivamente per l'inizializzazione e l'aggiornamento. Ecco un link a fare questo per un NSAtomicStore -

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

Si prega di farmi sapere se questo ha un senso o se c'è un modo migliore per gestire questa situazione.

Grazie in anticipo per il vostro aiuto!

risposta

1

Hai letto attraverso:

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

controllare anche TBXML:

tbXml è un leggero documento XML parser scritto in Objective-C progettato per l'utilizzo su Apple iPad, iPhone & Dispositivi iPod Touch. TBXML mira a fornire l'analisi XML più veloce possibile utilizzando al tempo stesso il minor numero di risorse. Questo requisito di assoluta efficienza è ottenuto a scapito della convalida e della modifica XML. Non è possibile modificare e generare XML valido da un oggetto TBXML e nessuna convalida viene eseguita durante l'importazione e l'analisi di un documento XML.

0

Non esiste un modo semplice per fare ciò che chiedi e Core Data non renderà più facile per te.

Presumo che abbiate letto i documenti: è necessario determinare un modello adatto per rappresentare localmente i dati remoti, gestire le interazioni tra il terminale remoto e il terminale locale e sincronizzare lo stato tra le estremità. Decidere e coordinare il processo di sincronizzazione è la parte più difficile. Non sono sicuro se esista un framework di terze parti in grado di automatizzare questo processo.