Ich habe gerade mein Projekt auf swift 1.2 aktualisiert. Und nach 5 oder 6 aufeinander folgenden 'Konvertieren zu neuesten Swift' Aktion, konnte ich es kompilieren. Dann hatte ich viele meiner UI-Test fehlgeschlagen. Es war aufgrund der Tatsache, dass meine 'NSFetchedResultsControllerDelegate' nicht mehr aufgerufen wurde.Abgerufener Ergebnis Controller-Delegat, der nicht nach swift 1.2/xcode 6.3 update aufgerufen wird
Nachdem (ich könnte sagen) ein sehr glücklicher Versuch, fand ich, dass es aufgrund der Tatsache, dass mein Delegierter kein NSObject war. Also konnte ich es beheben, indem ich NSObject subklassifiziere oder @obj hinzufügte.
Vorher:
class BasicFetchedResultControllerDelegate : NSFetchedResultsControllerDelegate
Nach:
class BasicFetchedResultControllerDelegate : NSObject, NSFetchedResultsControllerDelegate
Ich glaube nicht, dass ich etwas sah, dazu im Änderungsprotokoll verwendet. Was sind die Veränderungen, die dazu führen? Haben Sie andere Änderungen bemerkt?
‚NSObjectProtocol‘ erstrecken habe ich meinen Kopf seit Tagen stoßen fragen, warum Delegatmethoden nicht aufgerufen werden, bis ich dieses Problem gefunden. Apple sollte es als Kompilierfehler markieren. Lektion gelernt: Zögere nicht, Swift-Klassen NSObject zu erben. – hebinda
Wenn ich versuche, NSObject in meiner Klasse hinzuzufügen, bekomme ich ** Mehrfache Vererbung von den Klassen 'UITableViewController' und 'NSObject' **, während das Hinzufügen der @objc() -Deklaration die Methode nicht so verhält, wie sie sollte. Was könnte ich sonst noch versuchen? – carlodurso
Ein anderer Vorbehalt, Swift ignoriert Delegatmethoden in generischen Klassen stillschweigend, selbst wenn die Klasse 'NSObject' erweitert oder' @object_content_de verwendet, z. 'Klasse F: NSObject, NSFetchedResultsControllerDelegate' wird automatisch fehlschlagen. –