Entity wird mal gefunden und mal nicht

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Entity wird mal gefunden und mal nicht

    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.

    Quellcode

    1. func updateRoomCoreData(id: Int, roomname: String, key: Int) -> Bool {
    2. print(id)
    3. let predicate = NSPredicate(format: "id == %@", "\(id)")
    4. let fetchRequest = NSFetchRequest(entityName: "DBRooms")
    5. fetchRequest.predicate = predicate
    6. do {
    7. let fetchedEntities = try self.managedObjectContext.executeFetchRequest(fetchRequest) as! [DBRooms]
    8. if fetchedEntities.count != 0 {
    9. print("Entity found")
    10. for room in fetchedEntities {
    11. room.found = true
    12. }
    13. return true
    14. } else {
    15. print ("Entity not found \(fetchedEntities.count) -Roomname: \(roomname) -id: \(id) -key: \(key)")
    16. let RoomItem = NSEntityDescription.insertNewObjectForEntityForName("DBRooms", inManagedObjectContext: self.managedObjectContext) as! DBRooms
    17. RoomItem.id = id
    18. RoomItem.name = roomname
    19. RoomItem.sortkey = key
    20. RoomItem.found = true
    21. do {
    22. try managedObjectContext.save()
    23. } catch {
    24. print("Content not saved")
    25. }
    26. return false
    27. }
    28. } catch {
    29. return false
    30. print("Error")
    31. }
    32. }
    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.
  • Was meinst du? Was im Fetchedentities drin ist?

    Ich packe mal ein Log an, was ich grad gemacht habe. Da wird sowohl der JSON, der kommt, angezeigt und immer ob der Datensatz gefunden wird. Vielleicht kannst du damit was anfangen. Ansonsten kann ich das natürlich noch mal in einer lesbareren Form erstellen.
    Zu Programmstart wird die Tabelle gelehrt. Dann wird jeder Eintrag (sind 6 Stück) einmal hinzugefügt, und ist dann auch vorhanden. Hier im Log findet er dann auch einige Einträge aber einen halt nicht. (ganz unten)

    Quellcode

    1. <NSManagedObjectContext: 0x7ffac9026ec0>
    2. Optional([{"id":1,"name":"Büro"},{"id":2,"name":"Wohnzimmer"},{"id":3,"name":"Temperaturen"},{"id":4,"name":"Administration"},{"id":5,"name":"Heizung"},{"id":6,"name":"Heizung Details"}])
    3. (
    4. {
    5. id = 1;
    6. name = "B\U00fcro";
    7. },
    8. {
    9. id = 2;
    10. name = Wohnzimmer;
    11. },
    12. {
    13. id = 3;
    14. name = Temperaturen;
    15. },
    16. {
    17. id = 4;
    18. name = Administration;
    19. },
    20. {
    21. id = 5;
    22. name = Heizung;
    23. },
    24. {
    25. id = 6;
    26. name = "Heizung Details";
    27. }
    28. )
    29. {
    30. id = 6;
    31. name = "Heizung Details";
    32. }
    33. 6
    34. --- FetchedEntities
    35. []
    36. --- FetchedEntities
    37. Entity not found 0 -Roomname: Heizung Details -id: 6 -key: 1
    38. 6 - Heizung Details - 1
    39. Fehler
    40. {
    41. id = 5;
    42. name = Heizung;
    43. }
    44. 5
    45. --- FetchedEntities
    46. []
    47. --- FetchedEntities
    48. Entity not found 0 -Roomname: Heizung -id: 5 -key: 2
    49. 6 - Heizung Details - 1
    50. 5 - Heizung - 2
    51. Fehler
    52. {
    53. id = 4;
    54. name = Administration;
    55. }
    56. 4
    57. --- FetchedEntities
    58. []
    59. --- FetchedEntities
    60. Entity not found 0 -Roomname: Administration -id: 4 -key: 3
    61. 6 - Heizung Details - 1
    62. 5 - Heizung - 2
    63. 4 - Administration - 3
    64. Fehler
    65. {
    66. id = 3;
    67. name = Temperaturen;
    68. }
    69. 3
    70. --- FetchedEntities
    71. []
    72. --- FetchedEntities
    73. Entity not found 0 -Roomname: Temperaturen -id: 3 -key: 4
    74. 6 - Heizung Details - 1
    75. 5 - Heizung - 2
    76. 4 - Administration - 3
    77. 3 - Temperaturen - 4
    78. Fehler
    79. {
    80. id = 2;
    81. name = Wohnzimmer;
    82. }
    83. 2
    84. --- FetchedEntities
    85. []
    86. --- FetchedEntities
    87. Entity not found 0 -Roomname: Wohnzimmer -id: 2 -key: 5
    88. 6 - Heizung Details - 1
    89. 5 - Heizung - 2
    90. 4 - Administration - 3
    91. 3 - Temperaturen - 4
    92. 2 - Wohnzimmer - 5
    93. Fehler
    94. {
    95. id = 1;
    96. name = "B\U00fcro";
    97. }
    98. 1
    99. --- FetchedEntities
    100. []
    101. --- FetchedEntities
    102. Entity not found 0 -Roomname: Büro -id: 1 -key: 6
    103. 6 - Heizung Details - 1
    104. 5 - Heizung - 2
    105. 4 - Administration - 3
    106. 3 - Temperaturen - 4
    107. 2 - Wohnzimmer - 5
    108. 1 - Büro - 6
    109. Fehler
    110. Optional([{"id":1,"name":"Büro"},{"id":2,"name":"Wohnzimmer"},{"id":3,"name":"Temperaturen"},{"id":4,"name":"Administration"},{"id":5,"name":"Heizung"},{"id":6,"name":"Heizung Details"}])
    111. (
    112. {
    113. id = 1;
    114. name = "B\U00fcro";
    115. },
    116. {
    117. id = 2;
    118. name = Wohnzimmer;
    119. },
    120. {
    121. id = 3;
    122. name = Temperaturen;
    123. },
    124. {
    125. id = 4;
    126. name = Administration;
    127. },
    128. {
    129. id = 5;
    130. name = Heizung;
    131. },
    132. {
    133. id = 6;
    134. name = "Heizung Details";
    135. }
    136. )
    137. {
    138. id = 6;
    139. name = "Heizung Details";
    140. }
    141. 6
    142. --- FetchedEntities
    143. [<SHC.DBRooms: 0x7ffac905ac10> (entity: DBRooms; id: 0xd000000007940000 <x-coredata://579D4B1E-613D-4ACE-BB52-28A24A8D3447/DBRooms/p485> ; data: <fault>)]
    144. Optional([{"id":1,"name":"Büro"},{"id":2,"name":"Wohnzimmer"},{"id":3,"name":"Temperaturen"},{"id":4,"name":"Administration"},{"id":5,"name":"Heizung"},{"id":6,"name":"Heizung Details"}])
    145. --- FetchedEntities
    146. Entity found
    147. {
    148. id = 5;
    149. name = Heizung;
    150. }
    151. 5
    152. --- FetchedEntities
    153. [<SHC.DBRooms: 0x7ffac9054b30> (entity: DBRooms; id: 0xd000000007980000 <x-coredata://579D4B1E-613D-4ACE-BB52-28A24A8D3447/DBRooms/p486> ; data: <fault>)]
    154. --- FetchedEntities
    155. Entity found
    156. {
    157. id = 4;
    158. name = Administration;
    159. }
    160. 4
    161. --- FetchedEntities
    162. [<SHC.DBRooms: 0x7ffac9054fc0> (entity: DBRooms; id: 0xd0000000079c0000 <x-coredata://579D4B1E-613D-4ACE-BB52-28A24A8D3447/DBRooms/p487> ; data: <fault>)]
    163. --- FetchedEntities
    164. Entity found
    165. {
    166. id = 3;
    167. name = Temperaturen;
    168. }
    169. 3
    170. --- FetchedEntities
    171. [<SHC.DBRooms: 0x7ffac9055b20> (entity: DBRooms; id: 0xd000000007a00000 <x-coredata://579D4B1E-613D-4ACE-BB52-28A24A8D3447/DBRooms/p488> ; data: <fault>)]
    172. --- FetchedEntities
    173. Entity found
    174. {
    175. id = 2;
    176. name = Wohnzimmer;
    177. }
    178. 2
    179. --- FetchedEntities
    180. [<SHC.DBRooms: 0x7ffac900a370> (entity: DBRooms; id: 0xd000000007a40000 <x-coredata://579D4B1E-613D-4ACE-BB52-28A24A8D3447/DBRooms/p489> ; data: <fault>)]
    181. --- FetchedEntities
    182. Entity found
    183. {
    184. id = 1;
    185. name = "B\U00fcro";
    186. }
    187. 1
    188. --- FetchedEntities
    189. [<SHC.DBRooms: 0x7ffac905a590> (entity: DBRooms; id: 0xd000000007a80000 <x-coredata://579D4B1E-613D-4ACE-BB52-28A24A8D3447/DBRooms/p490> ; data: <fault>)]
    190. --- FetchedEntities
    191. Entity found
    192. (
    193. {
    194. id = 1;
    195. name = "B\U00fcro";
    196. },
    197. {
    198. id = 2;
    199. name = Wohnzimmer;
    200. },
    201. {
    202. id = 3;
    203. name = Temperaturen;
    204. },
    205. {
    206. id = 4;
    207. name = Administration;
    208. },
    209. {
    210. id = 5;
    211. name = Heizung;
    212. },
    213. {
    214. id = 6;
    215. name = "Heizung Details";
    216. }
    217. )
    218. {
    219. id = 6;
    220. name = "Heizung Details";
    221. }
    222. 6
    223. --- FetchedEntities
    224. []
    225. --- FetchedEntities
    226. Entity not found 0 -Roomname: Heizung Details -id: 6 -key: 0
    227. 6 - Heizung Details - 1
    228. 5 - Heizung - 2
    229. 4 - Administration - 3
    230. 3 - Temperaturen - 4
    231. 2 - Wohnzimmer - 5
    232. 1 - Büro - 6
    233. 6 - Heizung Details - 0
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Captnemo ()