Dans swift précédemment, j'ai été capable d'utiliser un code comme celui-ci pour ajouter de nouvelles données à mon "TestEntity" dans mon modèle de données.Comment insérer de nouvelles données dans une entité dans Swift3?
NSManagedObject
a été créé pour mon « TestEntity » et j'ai pu définir ses attributs avec le « point » syntaxe
A la fin, je sauverais le contexte
let entity=NSEntityDescription.insertNewObject(forEntityName: "TestEntity", into: context) as! TestEntity
entity.testAttribute="test value"
context.save()
Ce code ne fonctionne pas travailler dans Swift3. Quand je lance, je reçois l'erreur d'exécution suivante:
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)
Quelqu'un peut-il faire la lumière sur la façon dont cela doit être fait dans swift3, s'il vous plaît? Toute aide est grandement appréciée. Merci.
La deuxième partie de la question est de savoir comment accéder à nouveau aux données. le code suivant se termine par une erreur: erreur fatale: élément NSArray
n'a pas réussi à correspondre au tableau Swift Type d'élément
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 {
}
L'enregistrement doit être encapsulé dans des blocs 'try-catch'. – Mundi
@Mundi Oui bien sûr, mais ce n'est pas pertinent pour la question. J'ai supprimé la ligne. – vadian
J'ai dû créer NSEntityDescription pour que le code ci-dessus fonctionne. sans elle, je suis une autre erreur d'exécution: application Mettre fin à cause de l'exception non interceptée « NSInvalidArgumentException », la raison: « Une NSManagedObject de classe « testCoreData.TestEntity » doit avoir un NSEntityDescription valide. » 'Laisser entityDes = NSEntityDescription.entity (forEntityName: "TestEntity", dans: contexte) let entité = TestEntity (entité: entityDes !, InsertInto: contexte) entity.testAtt = "attribut test"' Mais cela a fonctionné. Je vous remercie. – matyasl