2015-10-27 3 views
8

Можно ли конвертировать Results<T> в List<T> или не должен ли я это делать?Realm: Результаты <T> als Список <T>

В моем случае у меня есть метод, который имеет список как параметр. Я хочу, чтобы вызвать этот метод с надуманными объектами (Results<T>) и вычисляемых объектов (List<T>)

+0

Можете ли вы использовать тот факт, что они оба являются «RealmCollectionType»? –

ответ

4

Results и List реализация CollectionType и RealmCollectionType. Последний является специализацией прежнего протокола, который позволяет эффективно использовать функции агрегации и фильтровать записи сортировки &.

Практически ни один метод в Realm Swift не делает серьезных предположений о типе коллекции. Они просто ожидают SequenceType, который является обобщением прежнего CollectionType. Для вашего собственного метода я бы рекомендовал идти тем же путем. Вы можете достичь этого, объявив его, как показано ниже.

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

Results реализует протокол CollectionType, чтобы вы могли использовать reduce, чтобы преобразовать его:

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

Вы можете поместить этот код в расширение или, как вам нравится.

Смежные вопросы