Hi,
in folgendem Code will ich in meinen Daten prüfen ob ein Datensatz bereits vorhanden ist, oder wenn nicht hinzufügen.
In der Summe handelt es sich um 6 Datensätze, die vorhanden sein können mit einer id von 1 bis 6.
Leider ist es so, dass die function immer mal wieder einen Datensatz nicht nicht findet z.B. mit der id 6, der aber definitiv bereits vorhanden ist.
Ist an dem Code irgendwas derart falsch, dass ein solches Verhalten möglich ist (von Schönheitsfehlern mal abgesehen). In Zeile 2 kann ich auch sehen, dass keine falsche id übergeben wird.
Alles anzeigen
Ich habe das noch mal geändert, dass er mir in Zeile 16 nochmal eine Liste der Entity DBRooms in Log ausgibt (bevor das Element hinzugefügt wird) und ein Element mit der jeweiligen id ist dann definitiv bereits vorhanden, wurde aber aus irgendeinem Grund nicht gefunden. Wenn das ganze einige Zeit läuft, dann habe ich irgendwann x Datensätze mit der gleich id in der Entity, obwohl es im Grund nicht mehr als 6 sein dürften.
Irgendwie finde ich meinen Fehler nicht.
in folgendem Code will ich in meinen Daten prüfen ob ein Datensatz bereits vorhanden ist, oder wenn nicht hinzufügen.
In der Summe handelt es sich um 6 Datensätze, die vorhanden sein können mit einer id von 1 bis 6.
Leider ist es so, dass die function immer mal wieder einen Datensatz nicht nicht findet z.B. mit der id 6, der aber definitiv bereits vorhanden ist.
Ist an dem Code irgendwas derart falsch, dass ein solches Verhalten möglich ist (von Schönheitsfehlern mal abgesehen). In Zeile 2 kann ich auch sehen, dass keine falsche id übergeben wird.
Quellcode
- func updateRoomCoreData(id: Int, roomname: String, key: Int) -> Bool {
- print(id)
- let predicate = NSPredicate(format: "id == %@", "\(id)")
- let fetchRequest = NSFetchRequest(entityName: "DBRooms")
- fetchRequest.predicate = predicate
- do {
- let fetchedEntities = try self.managedObjectContext.executeFetchRequest(fetchRequest) as! [DBRooms]
- if fetchedEntities.count != 0 {
- print("Entity found")
- for room in fetchedEntities {
- room.found = true
- }
- return true
- } else {
- print ("Entity not found \(fetchedEntities.count) -Roomname: \(roomname) -id: \(id) -key: \(key)")
- let RoomItem = NSEntityDescription.insertNewObjectForEntityForName("DBRooms", inManagedObjectContext: self.managedObjectContext) as! DBRooms
- RoomItem.id = id
- RoomItem.name = roomname
- RoomItem.sortkey = key
- RoomItem.found = true
- do {
- try managedObjectContext.save()
- } catch {
- print("Content not saved")
- }
- return false
- }
- } catch {
- return false
- print("Error")
- }
- }
Irgendwie finde ich meinen Fehler nicht.