2015-10-27 24 views
8

E 'possibile convertire Results<T> in List<T> o non dovrei farlo?Realm: Risultati <T> als Lista <T>

Nel mio caso, ho un metodo che ha List come parametro. Voglio chiamare questo metodo con gli oggetti recuperati (Results<T>) e con oggetti computerizzata (List<T>)

+0

Puoi sfruttare il fatto che entrambi sono 'RealmCollectionType'? –

risposta

4

Results e List attrezzo CollectionType e RealmCollectionType. Quest'ultima è una specializzazione del precedente protocollo, che consente di utilizzare in modo efficiente le funzioni di aggregazione e di filtrare le voci di ordinamento &.

Quasi nessun metodo in Realm Swift fa forti ipotesi sul tipo di raccolta. Si aspettano solo un SequenceType che è una generalizzazione del precedente CollectionType. Per il tuo metodo, ti consiglio di andare allo stesso modo. Puoi raggiungerlo dichiarandolo come mostrato di seguito.

func foo<T, S: SequenceType where S.Generator.Element == T>(objects: S) { … } 
11

Results implementa il protocollo CollectionType così si potrebbe usare reduce per convertirlo:

let results: Results<MyObject> = ... 
let converted = results.reduce(List<MyObject>()) { (list, element) -> List<MyObject> in 
    list.append(element) 
    return list 
} 

Si potrebbe mettere questo codice in un'estensione o comunque ti piace.

Problemi correlati