EXC_BREAKPOINT из-за неправильного преобразования - PullRequest
0 голосов
/ 08 мая 2019

При проверке проблем, обнаруженных Crashlytics, кажется, что у меня есть ошибка EXC_BREAKPOINT для следующей строки:

self.caloriesFor100 = Int((cartFood.nbCalories.floatValue / 100) * cartFood.quantite.floatValue)
  • калорий For100 это Int.
  • cartFood.nbCalories - это NSNumber, который должен иметь значения с плавающей точкой.
  • cartFood.quantite также является NSNumber, который должен иметь значения с плавающей точкой.

Мне не удалось воспроизвести проблему. Что может вызвать EXC_BREAKPOINT в этом коде?

Полная трассировка стека:

Crashed: com.apple.main-thread
0  LSDP                           0x10269ccbc specialized CartFoodModelinit(_:) (CartFoodModel.swift:88)
1  LSDP                           0x10268a570 specialized CartFoodCell.cartFoodObjc (CartFoodModel.swift)
2  LSDP                           0x102689600 @objc CartFoodCell.cartFoodObjc (<compiler-generated>)
3  LSDP                           0x102664c7c -[PanierDuJourViewController tableView:cellForRowAtIndexPath:] (PanierDuJourViewController.m:156)
4  UIKit                          0x18bf10148 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 668
5  UIKit                          0x18bf0fe00 -[UITableView _createPreparedCellForGlobalRow:willDisplay:] + 80
6  UIKit                          0x18bf0eb1c -[UITableView _updateVisibleCellsNow:isRecursive:] + 2280
7  UIKit                          0x18bf0a668 -[UITableView layoutSubviews] + 140
8  UIKit                          0x18be47770 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1420
9  QuartzCore                     0x1863e925c -[CALayer layoutSublayers] + 184
10 QuartzCore                     0x1863ed3ec CA::Layer::layout_if_needed(CA::Transaction*) + 324
11 QuartzCore                     0x186359aa0 CA::Context::commit_transaction(CA::Transaction*) + 320
12 QuartzCore                     0x1863815d0 CA::Transaction::commit() + 580
13 UIKit                          0x18c22054c _UIApplicationFlushRunLoopCATransactionIfTooLate + 172
14 UIKit                          0x18c7fd4c0 __handleEventQueueInternal + 5520
15 UIKit                          0x18c7f6258 __handleHIDEventFetcherDrain + 152
16 CoreFoundation                 0x18221b404 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
17 CoreFoundation                 0x18221ac2c __CFRunLoopDoSources0 + 276
18 CoreFoundation                 0x18221879c __CFRunLoopRun + 1204
19 CoreFoundation                 0x182138da8 CFRunLoopRunSpecific + 552
20 GraphicsServices               0x18411b020 GSEventRunModal + 100
21 UIKit                          0x18c11978c UIApplicationMain + 236
22 LSDP                           0x1025fce28 main (main.m:16)
23 libdyld.dylib                  0x181bc9fc0 start + 4

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Я нашел похожую проблему и ее решение здесь .
Поскольку ваше приложение падает на tableView:cellForRowAtIndexPath:, возможно, в ячейке должна отображаться запись вашей таблицы (CartFoodCell.cartFoodObjc), котораябольше не существует.
Но без дополнительного кода это только предположение.Пожалуйста, дважды проверьте его в своем коде.

0 голосов
/ 08 мая 2019

Вы можете поймать это исключение в случае, если свойство NSNumber будет nil. Поэтому, возможно, лучше изменить nbCalories на значение параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...