2016-08-18 6 views
1

Swift 2.2, IOS 9, Der neuesten Version des RealmProbleme mit Realm prepareForSeque und IBAction

Ich habe ein klassisches zwei Controller Projekt, in dem sie beide Controller sind Tableview.

Viewcontroller 1 eine Liste von Elementen ist: ItemsViewController Viewcontroller 2 hat die Möglichkeit, Elemente der Reise hinzufügen = ItemDetailsViewController

Der Code, um die Details zur Vorbereitung und die Details speichern wurde mit Grund prepareForSeque im Detail Controller getan und eine @ IBAction-Funktion im Listen-Controller

Alles funktionierte gut, wenn dies mit einem Basis-Array getan wurde. Das Array zu dieser Zeit hieß Elemente und ein einzelnes Element namens item.

Als ich dies jedoch in ein Realm-Projekt umwandelte, gingen die Dinge schief.

Ich fing an, Fehler in der ItemsViewController innerhalb der Funktion @IBAction zu bekommen.

Um den Fehler aufzuspüren ich vor allem als Problem Aktivität des Schreibbefehl in den Details Controller durchgeführt, aber die Absicht, es in der Liste Controller zu bewegen, sobald ich die Dinge sortieren

für segue Code Bereiten aus

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "SaveItemDetail" { 

     item.id = NSUUID().UUIDString 
     item.name = nameTextField.text! 

     try! uiRealm.write { 
      uiRealm.add(item) 
     } 

    } 

} 

Version 1 der IBAction.

In dieser Version, wo ich überhaupt nichts mache, bekomme ich einen Bruchfehler am Ende des Blocks. Oder wenn ich in einem Druck setzen („Hallo Welt“) bekommt eine Pause Fehler dort zur Laufzeit

Version 2 Wenn ich versuche, die Artikelinformationen aus den Details Controller

@IBAction func saveItemDetail(segue:UIStoryboardSegue) { 

    if let itemDetailsViewController = segue.sourceViewController as? ItemDetailsViewController { 
     if let item = itemDetailsViewController.item { 
     } 
    } 

} 

In dieser Version zu erhalten ich kann nicht die Build an der Arbeit und hat die folgenden Fehler

initialiser for conditional binding must have Optional type not 'Item' 

So bin ich eindeutig etwas fehle, mit wie Realm arbeitet mit Klassen und kann nicht wirklich sehen, warum. Irgendwelche Gedanken dazu?

+0

wie der Fehler scheint, ist auf anderen Thread auf Ihrer Version 1 etwas, und die Version 2 ist doesnt wie sein im Zusammenhang mit Realm scheint, seine Swift Sachen, weil Sie 'tun, wenn auf dem Objekt let' überprüfen das ist nicht optional, also hast du diesen Fehler, weil er angenommen hat, dass er nie 'nil' wird, immer noch, irgendwie schwer zu sehen, was das wirkliche Problem hier ist ... vielleicht klarer schreiben – Tj3n

+0

Könnten Sie bitte eine Fehlermeldung geben, die Sie bekommen V1? Wie für v2, wenn Ihre 'itemDetailsViewController.item' Option nicht ist, müssen Sie nicht' if let ..' verwenden. – Dmitry

+0

OK, es sieht so aus, als ob es in den Kommentaren etwas gab, das swift nicht als Kommentar interpretierte und daher ein Problem verursachte. Ich habe alle Kommentare weggeblasen und obwohl die Dinge nicht perfekt funktionieren, sind all die seltsamen Fehler verschwunden –

Antwort

1

OK, das schien alles auf einen auskommentierten Code zurückzuführen zu sein, der swift interpretierte und daher alle möglichen Probleme verursachte, die mich dann alle möglichen Hasenlöcher hinunter führten.

Schließen der Ausgabe