In my app I keep a list of items which I can adjust on any device. When I make a change in my app on one device and relaunch the app on another I notice a crash.
It gives me the following crash:
2020-09-04 16:13:30.676671+0200 MyWhiskyLog[2583:1043268] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not open file.'*** First throw call stack:(0x1abd9096c 0x1abaa9028 0x1b08e4234 0x1b08e4460 0x1e1899564 0x1e17a621c 0x104975254 0x10497a264 0x1b006e970 0x1b003b428 0x1b0058bd8 0x1b0331b1c 0x1abaa4a4c 0x1b2947a9c 0x1b2947eec 0x1b295a614 0x1b289f1c4 0x1b28c9fd0 0x1b28037bc 0x1b28d1cc8 0x1abce1dac 0x1abd0c7c4 0x1abd0be90 0x1abd06ac8 0x1abd05f40 0x1b5f83534 0x1afe7ea60 0x1049c81e4 0x1abb84e18)libc++abi.dylib: terminating with uncaught exception of type _NSCoreDataException
I notice that my listdata has changed, in particular my image data. It looks like the data is converted to a path and therefore the app crashes.
Before:
whisky = <MyWhiskyLog.Whisky: 0x2816dabc0> (entity: Whisky; id: 0xd5d3139dc67efd68 <x-coredata://2DB88E4B-B787-47DB-A30C-3043522FF37F/Whisky/p5>; data: { age = 12; alcoholAmount = "40 %"; averageRank = 4; bodyRank = 4; cask = ""; country = "Andorra.png"; finishRank = 4; identifier = "D4F0C398-7335-499B-B7B8-97E3AE64754F"; name = Redbreast; nose = ""; noseRank = 5; note = ""; price = "50 $"; status = 1; taste = ""; tasteRank = 5; type = ""; whiskyFirstCharacter = R; whiskybottleimage = "{length = 50, bytes = 0x89504e47 0d0a1a0a 0000000d 49484452 ... 4347436f 6c6f7253 }";})
After:
the name of the whisky Optional("The Glenlivet")whisky = <MyWhiskyLog.Whisky: 0x2816dac10> (entity: Whisky; id: 0xd5d3139dc67afd68 <x-coredata://2DB88E4B-B787-47DB-A30C-3043522FF37F/Whisky/p4>; data: { age = 12; alcoholAmount = "41 %"; averageRank = 3; bodyRank = 3; cask = ""; country = "Bhutan.png"; finishRank = 3; identifier = "4D80C3A3-98F9-41B2-A4F4-D7901CF8FF90"; name = "The Glenlivet"; nose = ""; noseRank = 3; note = ""; price = "35 $"; status = 1; taste = ""; tasteRank = 3; type = ""; whiskyFirstCharacter = T; whiskyImage = nil; whiskybottleimage = "NSData [_PFEvanescentData] with address 0x283bbdd70 backed by file at 'file:///var/mobile/Containers/Data/Application/FCD2F68B-0EDB-4671-82FF-38AFD9FCB848/Library/Application%20Support/ckAssetFiles/87504DB7-1E3F-4904-8F42-5EE6B84114B5'";})
What has happened to my whiskybottleimage data? How can I resolve this crash? When calling this property in cellForRowAtIndexPath I notice this crash:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "whiskyCell", for: indexPath) as! WhiskyTableViewCell if let whisky = fetchedResultsController?.object(at: indexPath) { if let bottleImageWhisky = whisky.whiskybottleimage { //set image of whisky in the tableviewcell // here my app crashes} return cell }