2009-11-01 22 views
9

Sono nuovo per la piattaforma iphone e sto creando un'app che recupera un feed rss e lo visualizza in un UITableView. Ho ottenuto questo funziona perfettamente (o meglio, come volevo). Quello che stavo pensando era che avrei archiviato gli elementi del feed corrente sul telefono in modo tale che iniziasse a caricare i vecchi oggetti che aveva conservato mentre riceveva il nuovo feed, quindi analizzare il nuovo feed e aggiungere i nuovi elementi e aggiornare TableView. Stavo per utilizzare i dati di base per archiviarli nei vecchi elementi del feed perché sarebbe un buon modo per apprendere i dati principali e sarebbe un uso appropriato dei dati principali. Tuttavia, sto avendo difficoltà a imparare come usare Core Data e collegarlo con Table/Array.Nuovo to Core Data per iphone

Ho già cercato su google e ho cercato lo stackoverflow per le esercitazioni, ma non ho ancora trovato nulla che lo spieghi in un modo che ho davvero compreso. Sarebbe molto apprezzata qualsiasi spiegazione dei passaggi complessivi necessari per aggiungere i dati di base a un'app esistente. I dettagli completi non sono necessari (ma sarebbero anche utili). Non ho molta esperienza con SQL o l'archiviazione dei dati in questo modo e sto avendo problemi a capire come funziona l'intero concetto di Core Data e come si connette a tutto.

Inoltre, sarebbe apprezzato anche qualsiasi metodo migliore per fare ciò che sto cercando di realizzare.

risposta

8

Esistono modelli Xcode per applicazioni basate su Core Data; questi sono un ottimo inizio per far decollare i Core Data. Tuttavia, sembra che tu voglia integrare Core Data nell'app esistente, quindi ...

  • Aggiungere tre oggetti principali di Dati principali: il contesto oggetto gestito (MOC), il modello oggetto gestito (MOM) e il persistent store coordinator (PSC). Questi devono essere accessibili ovunque siano disponibili i Dati principali, quindi nel delegato dell'app o, più preferibilmente, nel controller o nell'origine dati per la visualizzazione tabella.
  • Creare una MOM in Xcode. Questo sarà un file di tipo .xcdatamodel, ed è un grafo di oggetti che definisce tutte le entità Core Data che vuoi nella tua app.
  • Utilizzare NSFetchedResultsController (come suggerito da Louis Gerbarg) per estrarre i dati da Core Data e visualizzarli nella vista tabella.
  • Aggiungete il codice nelle vostre routine di recupero e analisi per memorizzare nuovi oggetti di dati di base nell'archivio, quando appropriato.

Un buon modo per iniziare è solo creare una nuova applicazione Core Data e giocarci un po '; puoi anche guardare le fantastiche risorse di Apple sull'argomento, come lo Core Data Programming Guide e le app di esempio Recipes e Locations. (Potrebbe essere necessaria la registrazione dello sviluppatore.)

Un'ultima cosa da notare è che, per la maggior parte, un sacco di codice Core Data che è necessario aggiungere può essere estratto direttamente da una delle app del modello Xcode e incollato in il tuo programma (questo vale soprattutto per gli accessor per i tre oggetti Core Data di cui hai bisogno). Stai attento a non usare codice che non capisci, però.

3

Se si utilizza CoreData per popolare un UITableView, si desidera veramente utilizzare NSFetchedResultsController anziché provare a compilare e sincronizzare l'array manualmente. La documentazione di NSFetchedResultsController include collegamenti a diverse esercitazioni CoreData, incluse le forze che popolano le visualizzazioni delle tabelle.

1

NSFetchedResultsController è ancora un po 'bacato e richiede soluzioni alternative fragili. Vorrei iniziare con il più semplice tutorial sulla "posizione" di iPhone Core Data prima di passare all'esercitazione sui libri.

+0

Potete essere più specifici? Ricordo vari bug che hanno alcune conseguenze piuttosto brutte in 3.0, ma sono abbastanza sicuro che NSFetchedResultsController sia ragionevolmente stabile e utilizzabile in 3.1. Ci sono ancora problemi in sospeso di cui non so nulla? – Tim

+0

Quando si spostano le righe, il controller fetch fa riferimento agli indici intermedi della propria matrice interna. Se detti indici non esistono più, il successivo ricaricamento delle sezioni provoca un arresto immediato. –

1

Inoltre, qualsiasi metodo migliore di fare quello che sto cercando di realizzare sarebbe anche apprezzare

sì, suona come Core Data potrebbe essere eccessivo per la vostra applicazione. Supponendo che gli elementi del tuo feed siano memorizzati in un oggetto di raccolta, puoi facilmente utilizzare lo built in serializaition di OSX.

0

Notato in altri post Stack-Overflow, ma consiglio vivamente il libro Prag Prog "Dati di base: API di Apple per dati persistenti su Mac OS X"; la maggior parte è anche pertinente per le app di iPhone Core Data; c'è un intero capitolo sulla creazione di un'app per iPhone.

http://pragprog.com/titles/mzcd/core-data