2017-01-25 2 views
2

Используя Swift 2.3, у меня есть Core DataSet определяется с определенным типом, например:Преобразовать Набор определенного типа для массива - Swift 2,3

@NSManaged public var personEntities: Set<PersonEntity>? 

И я просто хочу, чтобы преобразовать его в быстрой 2,3 Array из PersonEntity - простое право? Ive попытался следующим, и все они производят ошибки различного рода:

cell.people = Array(self.memory.personEntities) 

(Не могу вызвать инициализатор для типа .. с списком аргументов типа ..)

cell.people = self.memory.personEntities.flatMap({$0 as? PersonEntity})! 

(Не может присвоить значение типа лицо Entity к типу [PersonEntity])

cell.people = self.memory.personEntities.flatMap({$0}) 

(Flatmap производит U, а не контекстная тип результата _)

Любая помощь очень ценится.

+0

Это потому, что 'personEntities' является необязательным. Это необязательно? Он может очень хорошо иметь значение по умолчанию '[]', являющееся пустой 'Set'. – Eendje

+0

@Eendje Предполагая, что 'nil' ==' [] 'определенно не подходит. – Alexander

+1

@LukeSmith Вам нужно развернуть необязательный 'Set ?', Чтобы получить 'Set '. Оттуда вы можете передать его в инициализатор 'Array'. – Alexander

ответ

0

С благодарностью за contributers через комментарии, это правильный ответ:

cell.people = Array(self.memory.personEntities ?? []) 

Он потерпел неудачу, потому что ранее self.memory.personEntities является Optional. Таким образом, добавив ?? [], он может не получить personEntities (если его нуль) и вместо этого просто предоставить пустой массив [].