Sto utilizzando il codice di codice di Swift per Core Data in un nuovo progetto. Il file .xcdatamodeld
ha una singola entità definita (Task
) con un singolo attributo (name
).Come mai posso trasmettere a NSManagedObject ma non al tipo della mia entità?
Ho un file Task.swift
che assomiglia a questo:
import CoreData
class Task: NSManagedObject {
@NSManaged var name: String
}
Quando ho eseguito questo, funziona:
var firstTask = NSEntityDescription.insertNewObjectForEntityForName("Task",
inManagedObjectContext: managedObjectContext) as NSManagedObject
firstTask.setPrimitiveValue("File my TPS reports", forKey: "name")
var error: NSError?
managedObjectContext.save(&error)
posso anche andare nel database SQLite in uso dal simulatore iOS e confermare che la riga è stata aggiunta.
Tuttavia, quando si esegue lo stesso codice esattamente come sopra ma con as Task
invece di as NSManagedObject
, ottengo un incidente con il messaggio di errore Thread 1: EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)
, associata alla var firstTask
... linea. Se continuo l'esecuzione, ottengo EXC_BAD_ACCESS
e 0 misaligned_stack_error_
all'inizio di Thread 1 ogni volta che lo anticipo.
Perché questo cast potrebbe portare a tutto questo?
di poter postare uno screenshot dello schermo del modello CoreData che mostra l'entità 'Task', con l'ispettore Entità vista aperta sulla destra? – Erik
Grande commento. Grazie. Mi ha appena portato a una soluzione di lavoro. –
qual è stata la soluzione? – DeveloperACE