In Swift zuvor konnte ich einen Code wie diesen verwenden, um neue Daten zu meiner "TestEntity" in meinem Datenmodell hinzuzufügen.Wie fügt man neue Daten in die Entity in Swift3 ein?
NSManagedObject
wurde für meinen „TestEntity“ erstellt, und ich konnte die Attribute mit dem „Punkt“ Syntax
Am Ende gesetzt werde ich
let entity=NSEntityDescription.insertNewObject(forEntityName: "TestEntity", into: context) as! TestEntity
entity.testAttribute="test value"
context.save()
Dieser Code den Kontext nicht speichern arbeite in Swift3. Wenn ich es laufen lasse, erhalte ich die folgenden Laufzeitfehler:
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)
Kann jemand etwas Licht auf, wie sollte dies in swift3 getan werden, bitte? Jede Hilfe wird sehr geschätzt. Danke.
Der zweite Teil der Frage ist, wie man wieder auf die Daten zugreifen kann. Der folgende Code endet mit einem Fehler: fatal error: NSArray
Element der Swift Array Elementtyp
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 {
}
Die Speicherung muss in 'try-catch'-Blöcke gespeichert werden. – Mundi
@Mundi Ja natürlich, aber es ist irrelevant für die Frage. Ich habe die Zeile gelöscht. – vadian
Ich musste NSEntityDescription erstellen, damit der obige Code funktioniert. ohne sie, bekam ich eine andere Laufzeitfehler: Beenden app aufgrund nicht abgefangene Ausnahme ‚NSInvalidArgumentException‘, Grund: ‚eine gültige NSEntityDescription haben muss‚‘Ein NSManagedObject der Klasse‘ testCoreData.TestEntity 'Lassen entityDes = NSEntityDescription.entity (forEntityName: "TestEntity", in: Kontext) let entity = TestEntity (Einheit: entityDes !, InsertInto: context) entity.testAtt = "test Attribut"' Aber dann hat es funktioniert. Vielen Dank. – matyasl