Ich arbeite an einem iOS-Projekt, das Kerndaten verwendet. Ich benutze schnell. Der Core Data Stack ist richtig eingerichtet und alles scheint in Ordnung zu sein. Ich habe eine Klasse für eine Entität (NSManagedObject) mit dem Namen TestEntity erstellt. Die Klasse sieht wie folgt aus:Swift kann Core-Daten in Xcode-Tests nicht testen?
import UIKit
import CoreData
class TestEntity: NSManagedObject {
@NSManaged var name: NSString
@NSManaged var age: NSNumber
}
Also, dann versuche ich diese Codezeile einen neuen TestEntity in Code einfügen mit:
let te: TestEntity = NSEntityDescription.insertNewObjectForEntityForName("TestEntity", inManagedObjectContext: ctx) as TestEntity
ich dann diesen Fehler:
Ich habe einige Antworten auf Stapelüberlauf gesehen, die sagen, dass ich mich um den Modulnamen sorgen muss. Also schaute ich auf der Dokumentation, dass bis: https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/WritingSwiftClassesWithObjective-CBehavior.html
Dann ging ich in der Kerndateneinheit für TestEntity und in der Klasse Feld eingetragen I myAppName.TestEntity
Wenn ich die App diese Zeile aus:
let te: TestEntity = NSEntityDescription.insertNewObjectForEntityForName("TestEntity", inManagedObjectContext: ctx) as TestEntity
gibt mir immer noch den gleichen Fehler.
Was könnte ich sonst noch falsch machen?
EDIT: So konnte ich die App nicht mehr machen Absturz durch die TestEntity NSManagedObject Klasse Wechsel: Import UIKit Import Coredata
@objc(TestEntity) class TestEntity: NSManagedObject {
@NSManaged var name: NSString
@NSManaged var age: NSNumber
}
Also, ich hinzugefügt, um die @objc (TestEntity) drin. Dies funktioniert mit oder ohne Hinzufügen des appName vor dem TestEntity-Klassennamen im Core Data Data Model Inspector.
Dies funktioniert, aber, wenn ich Tests diese Linie noch Abstürze laufen:
let te: TestEntity = NSEntityDescription.insertNewObjectForEntityForName("TestEntity", inManagedObjectContext: ctx) as TestEntity
So fand ich, dass dies ein Problem für andere Menschen ist: How to access Core Data generated Obj-C classes in test targets?
Wie kann Wir bekommen Kerndaten in Tests in Swift zu arbeiten. Ich benutze keine Bridging-Header in der App-Ziel und alles funktioniert gut. Das Testziel stürzt trotzdem ab.
Wie kann ich das Testziel beheben, damit Kerndatentests ausgeführt werden können?
Versuchen Sie Folgendes: http://StackOverflow.com/a/26568813/438063 – Lucien
Weitere Anmerkungen [in dieser SO-Antwort] [1] zum Hinzufügen von @objc (ClassName) -Ansatz. [1]: http://stackoverflow.com/a/29445352/2466193 –
einige weitere Hinweise siehe [in diesem SO beantworten] [1] auf der 'Zugabe von @objc (Classname)' -Ansatz. [1]: http://stackoverflow.com/a/29445352/2466193 –