In precedenza, ero in grado di utilizzare un codice come questo per aggiungere nuovi dati al mio "TestEntity" nel mio modello di dati.Come inserire nuovi dati nell'entità in Swift3?
NSManagedObject
è stato creato per il mio "TestEntity" e sono stato in grado di impostare i suoi attributi con il "punto" sintassi
Alla fine, vorrei salvare il contesto
let entity=NSEntityDescription.insertNewObject(forEntityName: "TestEntity", into: context) as! TestEntity
entity.testAttribute="test value"
context.save()
Questo codice non lo fa lavora in Swift3. Quando l'eseguo, ottengo il seguente errore di runtime:
Could not cast value of type 'NSManagedObject_TestEntity_' (0x175306b0) to 'testCoreData.TestEntity' (0xd6bb8). 2016-06-19 11:07:52.305195 testCoreData[689:264453] Could not cast value of type 'NSManagedObject_TestEntity_' (0x175306b0) to 'testCoreData.TestEntity' (0xd6bb8)
Qualcuno può fare luce su come questo dovrebbe essere fatto in swift3, per favore? Qualsiasi aiuto è molto apprezzato. Grazie.
La seconda parte della domanda è come accedere nuovamente ai dati. il seguente codice termina con un errore: errore irreversibile: NSArray
elemento omesso di corrispondere al Swift Array Elemento Tipo
let fr:NSFetchRequest<TestEntity>=TestEntity.fetchRequest()
do {
let searchResults=try context.fetch(fr)
if let results=searchResults {
for result in results {
print("testAtt = \(result.testAtt)")
}
}
} catch {
}
Il salvataggio deve essere inserito in blocchi 'try-catch'. – Mundi
@Mundi Sì, certo, ma è irrilevante per la domanda. Ho cancellato la linea. – vadian
Ho dovuto creare NSEntityDescription affinché il codice sopra funzionasse. senza di esso, ho avuto un altro errore di runtime: Terminazione dell'app a causa dell'eccezione non rilevata 'NSInvalidArgumentException', motivo: 'Un NSManagedObject di classe' testCoreData.TestEntity 'deve avere una NSEntityDescription valida.' 'let entityDes = NSEntityDescription.entity (forEntityName:" TestEntity ", in: context) let entity = TestEntity (entity: entityDes !, insertInto: context) entity.testAtt =" attributo test "' Ma poi ha funzionato. Grazie. – matyasl