Ich verwende Swift auf Xcode 6 mit CoreData
.Swift und CoreData Casting Probleme im Test vs Nicht-Test
Ich habe die Versionshinweise gelesen und habe diese issue gesehen, um sicherzustellen, dass ein Kerndatenmodell mit einem Modulnamen (App-Name) markiert wird, sodass Sie zur Laufzeit einen NSManagedObject
in Ihren Modelltyp umwandeln können.
Wenn ich dies tue, kann ich eine App richtig laufen lassen (gut!). Aber mein Problem ist, wenn ich zu Test versuchen dass gleiche Code, der Test wird immer abstürzen, wenn die Besetzung mit einem Fehler Swift dynamic cast failed
passiert (schlecht :(). Dies macht es schwierig, meine Anwendung zu testen.
Ist ? es einen Einfluss auf die Modulnamen verwenden wir, wenn die Anwendung für den Test gegen laufen gebaut
Vielen Dank im Voraus für alle Hinweise ...
Follow up:
das ist nicht ideal: Wie oben erwähnt, um Swift einen Core D zu verwenden Bei einem Modell müssen Sie den Klassennamen mit dem Namen Ihrer App dekorieren. Dies funktioniert zum Erstellen der App, aber die Tests laufen unter einem anderen App-Namen! Das bedeutet, dass Sie in den Datenmodellierer gehen und diesen Klassennamen von myAppname.myEntity
in myAppnameTests.myEntity
ändern müssen, bevor Sie diese Entitäten namentlich verwenden können, wenn sie von einem Test verwendet oder aufgerufen werden.
Versuchen Sie, den Klassennamen mit @objc (MyClassName) zu dekorieren. Dies wird den normalen Namensmangel umgehen. Dann sollten Sie sich im Datenmodell nicht um den Modulnamen kümmern müssen. –
Wenn ich meine Entity-Klassen in swift schreibe, dann dekoriere sie mit 'objc (xxx)' - Ich bekomme den dynamischen Cast-Fehler, wenn ich versuche, die Entity mit diesem Namen in anderen Swift-Code zu verwenden ... Frustrating ... –
Versuchen dies: http://stackoverflow.com/a/26568813/438063 – Lucien