2017-01-10 3 views
1

Ich versuche, mehrere Absender in meinem didSelectItemAt für meine UICollectionViewCell anzugeben. Wenn ich jedoch mehr als eins spezifiziere, gibt es eine gefunden Null beim Entpacken optional Fehler. Zum BeispielMehrere Absender in Swift angeben?

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

Es liest die Monster Daten in den zweiten View-Controller nur gut, bis ich den zweiten Sender abilities hinzufügen. Dann kann es die Monsterdaten überhaupt nicht lesen, aber es kann die Fähigkeitsdaten lesen. Wie kann ich beide angeben, damit der nächste View-Controller beide gesendeten Werte liest?

Antwort

-2

Senden Sie ein Wörterbuch mit sowohl Monstern als auch Fähigkeiten als Werte für Schlüssel. Ein saubereres Muster wäre, einen tatsächlichen Absender (self) zu übergeben und es als Delegat zu verwenden und alles, was Sie benötigen, durch Methodenaufrufe zu lesen.

0

Du versuchst also zu implizieren, welche Daten dem Abschnitt hinzugefügt werden, und du willst sowohl die Monster als auch die Fähigkeiten, die gesendet werden. Du hast zuerst die Überfahrt mit den Monstern aufgerufen, also musst du die Fähigkeiten bereits an die Daten angehängt haben, die du im Überqueren passieren willst.

Sie sollten eine Struktur für Monster haben, die eine optionale Eigenschaft Fähigkeit oder Fähigkeiten enthält.

struct Monster { 

    var abilities: [Ability]? 

} 

Prior die Monster mit: [Monster] Array die Segue senden, die Fähigkeiten an die richtigen Monster zuweisen.

+0

Ok, ich habe gelesen und verstehe jetzt, wie Strukturen funktionieren, aber ... wo in meinem Code geht die Struktur eigentlich? – baxu

+0

Normalerweise gebe ich einer Struktur eine eigene Datei oder lege sie mit einem anderen datenmodellbezogenen Code zusammen, wenn sie logisch dort passt. Es ist wie eine Klassendeklaration. –

Verwandte Themen