2017-01-10 9 views
1

Я пытаюсь указать несколько отправителей в моем didSelectItemAt для моего UICollectionViewCell. Однако, когда я указываю более одного, тогда он возвращает найденный нуль при разворачивании необязательной ошибки. НапримерУкажите несколько отправителей в Swift?

self.performSegue(withIdentifier: "detailViewC", sender: monsters) 
self.performSegue(withIdentifier: "detailViewC", sender: abilities) 

Он считывает данные монстра во втором контроллере представления просто отлично, пока я не добавить второй датчик abilities. Затем он не может прочитать данные монстра, но он может читать данные о возможностях. Как я могу указать их оба, поэтому следующий контроллер представления считывает оба переданных значения?

ответ

-2

Отправьте словарь с обоими монстрами и способностями в качестве значений для ключей. Чистым шаблоном будет передача фактического отправителя (self) и использование его в качестве делегата и чтение всех необходимых вам вызовов методом.

0

Итак, вы пытаетесь указать, какие данные добавляются к segue, и вы хотите, чтобы и монстры, и способности были отправлены. Сначала вы призвали к segue с монстрами, поэтому вам нужно иметь способности, уже прикрепленные к данным, которые вы хотите пройти в режиме segue.

У вас должна быть структура для монстра, которая содержит необязательные свойства или способности объекта.

struct Monster { 

    var abilities: [Ability]? 

} 

До имея монстров: [монстр] массив отправить SEGUE назначьте способности собственных монстров.

+0

Хорошо, я читал и теперь понимаю, как работают структуры, но ... где в моем коде действительно работает структура? – baxu

+0

Обычно я предоставляю struct свой собственный файл или помещаю его с другим кодом, связанным с моделью данных, если он логически подходит там. Это как объявление класса. –