2016-04-08 3 views
1

Это журнал аварии я получил от Crashlytics:Swift отчеты о сбоях не имеет смысла для меня

Thread : Crashed: com.apple.main-thread 
0 Trenìt!      0x1000b93e4 SearchHistoryProvider.getMostRecentStations(Int) -> [String] (SearchHistoryProvider.swift) 
1 Trenìt!      0x10007985c specialized MasterViewController.onTouchedTextField(UITextField) ->() (MasterViewController.swift:265) 
2 Trenìt!      0x100075414 @objc MasterViewController.onTouchedTextField(UITextField) ->() (MasterViewController.swift) 
3 UIKit       0x186fa0ad0 -[UIApplication sendAction:to:from:forEvent:] + 100 
4 UIKit       0x186fa0a4c -[UIControl sendAction:to:forEvent:] + 80 
5 UIKit       0x186f88740 -[UIControl _sendActionsForEvents:withEvent:] + 436 
6 UIKit       0x186fa9248 -[UIControl touchesBegan:withEvent:] + 400 
7 UIKit       0x186f9fdc0 -[UIWindow _sendTouchesForEvent:] + 376 
8 UIKit       0x186f98b08 -[UIWindow sendEvent:] + 784 
9 UIKit       0x186f68f4c -[UIApplication sendEvent:] + 248 
10 UIKit       0x186f67528 _UIApplicationHandleEventQueue + 6568 
11 CoreFoundation     0x181dd5124 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24 
12 CoreFoundation     0x181dd4bb8 __CFRunLoopDoSources0 + 540 
13 CoreFoundation     0x181dd28b8 __CFRunLoopRun + 724 
14 CoreFoundation     0x181cfcd10 CFRunLoopRunSpecific + 384 
15 GraphicsServices    0x1835e4088 GSEventRunModal + 180 
16 UIKit       0x186fd1f70 UIApplicationMain + 204 
17 Trenìt!      0x10009b2fc main (AppDelegate.swift:14)``` 
(edited) 

и это мой код:

MasterViewController.swift:

263 func showRecentStations(textField: UITextField) { 
264  textField.text = "" 
265  suggestionStations = masterContainerManager!.homeController?.searchHistoryProvider?.getMostRecentStations(10) 
266  updateStationsTable(textField) 
267 } 

SearchHistoryProvider.swift

func getMostRecentStations (maxSize : Int) -> [String] { 
    let stationsByOldestArray = getRecentStationsByOldest() 
    let stations = NSMutableOrderedSet() 
    for i in (0...(stationsByOldestArray.count-1)).reverse() { 
     stations.addObject(stationsByOldestArray[i].depStation) 
     if stations.count==maxSize { 
      return stations.array as! [String] 
     } 
     stations.addObject(stationsByOldestArray[i].arrStation) 
     if stations.count==maxSize { 
      return stations.array as! [String] 
     } 
    } 
    return stations.array as! [String] 
} 

Может ли кто-нибудь понять, в чем дело?

+0

Лучше использовать 'Добавить исключительную точку останова' для всех. Это облегчит отслеживание. – Ryan

+0

Это ошибка в живой версии, которую я не могу воспроизвести. Как я могу понять, что такое ошибка? –

+0

Трудно сказать, какая именно причина. Я считаю, что 'Crashlytics', который является' Fabric', теперь предоставляет более подробную информацию, если вы загружаете 'dsym' через скрипт по мере их руководства. – Ryan

ответ

1

Я нашел ошибку: в случае stationsByOldestArray.count

был 0

для цикла был бы

for i in (0...-1).reverse()

Я зафиксировал его, переписав цикл как

for i in (0..<stationsByOldestArray.count).reverse()

Однако я думаю, что отчеты о быстром сбое часто безнадежно бесполезны!