Domanda

Di recente ho esaminato Core Data per iPhone e ho una query a cui non sono stato in grado di trovare una risposta in letteratura.

Immaginiamo di avere un oggetto modello Utente con una relazione a molti con un oggetto Acquista . Un utente può avere migliaia di acquisti.

Tutte le informazioni che ho visto finora sembrano suggerire che un'operazione di recupero effettuata attraverso quella relazione restituirebbe un NSSet con tutti gli oggetti Acquista associati a un particolare Utente .

Chiaramente preferirei che ci fosse un modo per limitare il numero di Acquista recuperati da:

1) imporre una sorta di criterio (ad esempio solo acquisti superiori a & # 163; 1000 ecc.); o

2) recuperare in batch solo se quanto sopra non è possibile.

È possibile quanto sopra? Sono solo preoccupato che con la memoria limitata dell'iPhone rischia di sovraccaricarlo con migliaia di oggetti inutilmente recuperati.

Grazie in anticipo per eventuali risposte.

È stato utile?

Soluzione

La mia comprensione è che quando si recuperano oggetti Utente, la relazione con i suoi oggetti Acquisto sarà un errore che verrà caricato solo se vi si accede.
Invece, è possibile recuperare gli oggetti di acquisto con un predicato che specifica l'utente (i) e controllare (s) su qualsiasi altro criterio.

Detto questo, testerei sicuramente casi d'uso realistici (sui dispositivi) prima di dedicare troppo tempo a problemi di prestazioni. L'efficienza di iPhone e Core Data potrebbe sorprenderti.

Altri suggerimenti

  1. Utilizza una proprietà recuperata
  2. Usa NSFetchedResultsController

La risposta a queste e alle domande che farai successivamente troveranno risposta nella Guida alla programmazione dei dati di base per iPhone.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top