2016-03-24 12 views
0

wenn ich Daten von FirstViewController an SecondViewController (Tabellenansicht) über prepareForSegue übergebe Ich habe ein leeres Array in secondViewController, um die Daten zu sammeln, aber jedes Mal, wenn die Ansicht das Array lädt, ist init leer.Swift PreparateForSegue initialisiert leeres Array

Bevor ich in die Kerndaten oder nsuserdefaults komme, wie kann ich die Daten zum zweiten View-Controller hinzufügen?

Es gibt ein ähnliches Problem hier, aber die Methode hat mein Problem nicht gelöst. Trouble passing Array through prepareForSegue

// View Controller 

// a new dictionary object is created 
myDictionary = ["apples": 3, "oranges": 4, "bananas": 5] 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if segue.identifier == "saveData" { 

     let dvc = segue.destionationViewController as! MyTableViewController 

     dvc.arrayOfDictionaries += [myDictionary] 

    } 
    resetAll() 
} 


// My Table View Controller 
var arrayOfDictionaries: [[String: AnyObject]] = [] 
var dictionary = [String:AnyObject]() 

in TableViewContrller habe ich eine func

override func viewDidLoad() { 
    super.viewDidLoad() 

    loadData() // 
} 

func loadData() { 

    for dict in arrayOfDictionaries { 

     for (key, value) in dict { 
     // extract data 
     dictionary[key] = value 

     } 

    } 
} 

Wie kann ich in arrayOfDictionaries Daten bestehen bleiben erhalten? Danke

+0

Wie lautet Ihr Code? – Larme

+0

'resetAll()' Setzen Sie Ihr Wörterbuch zurück? Ich spreche Swift nicht, aber wenn ein Array von Dictionary nicht zugewiesen/initialisiert wird, funktioniert 'array + = newArray'? – Larme

+0

resetAll setzt das Wörterbuch zurück, nachdem die Daten übergeben wurden und dann eine weitere Instanz von myDictionary erstellt wird. Die Daten werden übergeben, aber immer nur 1 Instanz. myDict muss zurückgesetzt werden, um ein neues dict zu sammeln – Dazzle

Antwort

0

Warum hängen Sie Werte an das Array an, wenn es leer ist?

Um künftige Probleme zu vermeiden, können Sie rufen Sie einfach

dvc.arrayOfDictionaries = [myDictionary] 

Sie also kümmern nie um die arrayOfDictionaries Zustand (wenn es initialisiert wird, wenn es leer ist oder irgendetwas anderes)

Und bitte, Überprüfen Sie Ihre viewDidLoad und andere View-Lifecycle-Methoden im Tabellenansicht-Controller. Ist es möglich, dass Sie das Array dort erneut initialisieren?

+0

Danke für den Tipp. Leider tritt das gleiche Problem auf, auch wenn arrayOfDictionaries: [[String: AnyObject]]! – Dazzle

+0

machst du etwas in der 'viewDidLoad' /' viewWillAppear' (usw.) in der TableViewController? –

+0

Ich werde den Hauptblock bearbeiten, um anzuzeigen, Last geladen und ein loadData func – Dazzle

Verwandte Themen