2014-07-16 9 views
5

Dire che ho 2 entità nel mio database CloudKit:Il modo migliore per interrogare i riferimenti in CloudKit?

- Album 
    - (NSString) title 

- Photo 
    - (NSString) name 
    - (CKRefrence) album 

fotografie hanno un CKReference a un album. Ciò significa che 1 album può avere molte foto (come previsto).

Ho una schermata in cui voglio visualizzare tutti gli album e quante foto ci sono in ciascun album. Qual è il modo migliore per richiedere questo? Se faccio subito una ricerca per gli album, ogni album non sa nulla delle sue foto.

risposta

5

Per ciascuna delle anAlbum album oggetto, si dovrebbe formare la vostra predicato e ricerca Photo record di tipo in questo modo:

let predicate = NSPredicate(format: "album == %@", anAlbum) 
let query = CKQuery(recordType: "Photo", predicate: predicate) 

Nel completionHandler, è possibile ottenere un conteggio della matrice risultato, che sarebbe il numero di foto che appartengono ad anAlbum.

+0

Non è possibile interrogare solo le foto. È necessario estrarre i Reference.RecordID dall'album e inviarli come array a CKRecordFetchRequest. – Yariv

2

CloudKit non deve essere utilizzato come livello di modello, ma solo framework di connettività, che fornisce il database. È possibile utilizzare CoreData come livello del modello per risolvere il proprio compito. Crea entità album, che ha una relazione uno a molti con l'entità foto, che ha una relazione uno a uno nell'album.

Quindi recuperare prima tutti gli album e mappare ciascun record sull'entità album corrispondente in CoreData. Quindi ottieni tutte le foto, mappale all'entità Foto in CoreData e per ogni foto corrisponde all'entità Album corrispondente in CoreData.

Problemi correlati