Sto lavorando a un progetto iOS che utilizza i dati principali. Sto usando rapido. Lo stack di Core Data è impostato correttamente e sembra tutto a posto. Ho creato una classe per un'entità (NSManagedObject) denominata TestEntity. La classe si presenta così:Swift non può testare i dati di base nei test Xcode?
import UIKit
import CoreData
class TestEntity: NSManagedObject {
@NSManaged var name: NSString
@NSManaged var age: NSNumber
}
Così, poi cerco di inserire un nuovo TestEntity in codice utilizzando questa riga di codice:
let te: TestEntity = NSEntityDescription.insertNewObjectForEntityForName("TestEntity", inManagedObjectContext: ctx) as TestEntity
Allora ottengo questo errore:
Ho visto alcune risposte sullo stack overflow che dicono che devo preoccuparmi del nome del modulo. Così poi ho guardato che fino ai documenti: https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/WritingSwiftClassesWithObjective-CBehavior.html
Poi sono andato nell'entità dei dati di base per TestEntity e nel campo classe I è entrato myAppName.TestEntity
Quando eseguo l'applicazione di questa linea:
let te: TestEntity = NSEntityDescription.insertNewObjectForEntityForName("TestEntity", inManagedObjectContext: ctx) as TestEntity
mi dà ancora lo stesso errore.
Cos'altro potrei fare di sbagliato?
EDIT: Così, ero in grado di rendere l'applicazione va in crash più cambiando la classe TestEntity NSManagedObject a: import UIKit importazione CoreData
@objc(TestEntity) class TestEntity: NSManagedObject {
@NSManaged var name: NSString
@NSManaged var age: NSNumber
}
Così, ho aggiunto il @objc (TestEntity) dentro. Funziona con o senza l'aggiunta dell'appName prima del nome della classe TestEntity nell'ispettore del modello di dati dati nucleo.
Questo funziona, ma, quando ho eseguito test questa linea ancora crash:
let te: TestEntity = NSEntityDescription.insertNewObjectForEntityForName("TestEntity", inManagedObjectContext: ctx) as TestEntity
Così ho scoperto che questo è un problema per gli altri: How to access Core Data generated Obj-C classes in test targets?
Come può otteniamo dati di base per lavorare nei test in rapido. NON sto usando un'intestazione di bridging nel target dell'app e tutto funziona alla grande. L'obiettivo del test si arresta comunque.
Come posso correggere il target di test in modo che possa eseguire test di dati fondamentali?
Provare questo: http://stackoverflow.com/a/26568813/438063 – Lucien
Vedere alcune note in più [in questa risposta SO] [1] sull'approccio "aggiunta @objc (ClassName)". [1]: http://stackoverflow.com/a/29445352/2466193 –
vedere alcune più note [in questo SO rispondere] [1] sulla '@objc aggiungendo (NomeClasse)' approccio. [1]: http://stackoverflow.com/a/29445352/2466193 –