Ich habe gerade mein Projekt auf swift 1.2 hochgestuft. Und nach 5 oder 6 aufeinander folgenden 'Konvertieren zu neuesten Swift' Aktion, konnte ich es kompilieren. Dann hatte ich viel von meinem UI-Test fehlgeschlagen. Es war aufgrund der Tatsache, dass meine 'NSFetchedResultsControllerDelegate' nicht mehr aufgerufen wurde.
Nachdem (ich könnte sagen) ein sehr glücklicher Versuch, fand ich, dass es aufgrund der Tatsache, dass mein Delegierter kein NSObject war. So konnte ich es beheben, indem ich NSObject abbaut oder @obj hinzufügt.
Vorher:
%Vor%Nachher:
%Vor%Ich glaube nicht, dass ich etwas in diesem Änderungsprotokoll gesehen habe. Was sind die Veränderungen, die dazu führen? Hast du andere Veränderungen wie diese bemerkt?
Ich habe das von Apple erhalten, nachdem ich einen Fehlerbericht ausgefüllt habe:
Dieses Problem verhält sich wie folgt basierend auf dem folgenden:
Dies ist eine Verhaltensänderung in Swift 1.2: Methoden in nicht von Objective-C abgeleiteten Klassen werden nicht mehr implizit als @objc markiert, selbst wenn sie einem Objective-C-Protokoll entsprechen. Sie können die Methoden explizit mit dem @objc-Attribut markieren, wenn Sie NSObject nicht erweitern möchten. Dies wird in den Versionshinweisen zu Xcode 6.3 unter Ссылка .
Core Data-Klassen verhalten sich immer noch sehr ähnlich wie ältere Objective-C-Klassen. Da NSFetchedResultsController
eine @protocol
ohne Oberklasse ist, benötigt Swift die explizite Deklaration NSObject
.
Und Sie haben recht, da ist nichts in den Änderungsprotokollen.