2016-07-29 15 views
1

Ich habe eine seltsame Reaktion mit meiner App. Meine App funktioniert gut in fast 10 verschiedenen Geräten und hat auch die Tests bestanden und es ist online. Aber ein Freund, der iPhone 5s mit iOS 9.1 hat, hat ein Problem. Wenn er versucht, in eine Tabellenansicht zu gelangen, an die ich Objekte mit einem API-Aufruf mit alamofire und swiftyjson anhänge, stürzt die App ab. Von crashlytics erhalte ich diese seltsame FehlerWierd Crash auf iPhone App

Crashed: com.apple.main-thread 
0 Events Near Me     0x1000a532c specialized listMapViewController.tableView(UITableView, cellForRowAtIndexPath : NSIndexPath) -> UITableViewCell (listMapViewController.swift:196) 
1 Events Near Me     0x1000a3c94 @objc listMapViewController.tableView(UITableView, cellForRowAtIndexPath : NSIndexPath) -> UITableViewCell (listMapViewController.swift) 
2 UIKit       0x18a37220c -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 688 
3 UIKit       0x18a372364 -[UITableView _createPreparedCellForGlobalRow:willDisplay:] + 80 
4 UIKit       0x18a3617b8 -[UITableView _updateVisibleCellsNow:isRecursive:] + 2440 
5 UIKit       0x18a376f0c -[UITableView _performWithCachedTraitCollection:] + 104 
6 UIKit       0x18a10f22c -[UITableView layoutSubviews] + 176 
7 UIKit       0x18a01f7ac -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 644 
8 QuartzCore      0x18981eb58 -[CALayer layoutSublayers] + 148 
9 QuartzCore      0x189819764 CA::Layer::layout_if_needed(CA::Transaction*) + 292 
10 QuartzCore      0x189819624 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 32 
11 QuartzCore      0x189818cc0 CA::Context::commit_transaction(CA::Transaction*) + 252 
12 QuartzCore      0x189818a08 CA::Transaction::commit() + 512 
13 QuartzCore      0x1898120f8 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 80 
14 CoreFoundation     0x184a47bd0 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32 
15 CoreFoundation     0x184a45974 __CFRunLoopDoObservers + 372 
16 CoreFoundation     0x184a45da4 __CFRunLoopRun + 928 
17 CoreFoundation     0x184974ca0 CFRunLoopRunSpecific + 384 
18 GraphicsServices    0x18fbb0088 GSEventRunModal + 180 
19 UIKit       0x18a08cffc UIApplicationMain + 204 
20 Events Near Me     0x100095eec main (AppDelegate.swift:15) 
21 libdyld.dylib     0x199da28b8 start + 4 

Und in der Linie 196 Dies ist der Code

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 


let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! locationEventsTableViewCell 



var dict = arrRes[indexPath.row] 

cell.eventTitle.text = dict["eventName"] as? String //here is the issue 

So Sie ein wenig zu erklären, mit dieser App einige Veranstaltungen in Ihrer Nähe erhalten je nach Standort . Ich habe einen Schutz, wenn es keine Ereignisse gibt, gibt es eine Nachricht. Aber wir lassen ein paar Blocks weg und ich kann Events bekommen, unter anderem mit dem cell.eventTitle ... aber das iPhone meines Freundes stürzt durch.

Irgendeine Idee?

P.S. Ich lade jetzt iOS 9.1 auf meinen Simulator herunter. Ein anderer Freund mit iPhone 5 hat dieses Problem nicht.

+1

Ich habe keine Ahnung, warum es abstürzt, aber da Sie die Person kennen, können Sie vielleicht das Telefon Ihres Freundes mit Xcode verbinden und sehen, ob Sie einen Ausnahme-Breakpoint treffen? – ghostatron

+0

@conarch Crashlytics Berichte sagen Ihnen den genauen Ort, an dem es eine Ausnahme gab. Dies ist, warum ich neugierig ... sogar iPhone 5 Jailbroken hat keine Abstürze überhaupt ... sogar iPod touch 2 !!! –

+0

Ich schlug vor, direkt eine Verbindung herzustellen, weil Sie, wenn Sie einen Ausnahme-Haltepunkt erreichen, den Status der App überprüfen können, um zu sehen, was mit dem Telefon Ihres Freundes zu tun hat. Anstatt auf Stack-Spuren zu stochern, können Sie es tatsächlich sehen. Ich würde das ausnutzen, wenn ich du wäre. – ghostatron

Antwort

1

Wie Sie sagen, dass andere iPhones dieses Problem nicht haben, nahm ich an, dass das iphone Ihres Freundes möglicherweise von apps oder irgendetwas anderem überladen wird, und es die json Variablen in der Zeit nicht nimmt! Deshalb schlage ich zum ersten Mal, wenn Aussagen zu verwenden, um Fehler wie diese zu vermeiden:

if dict["eventName"] as? String != nil { 
cell.eventTitle.text = dict["eventName"] as? String 
} 

Und wenn Sie vielleicht in Ihrem nächsten Update wünschen könnten Sie Vervollständigungen verwenden Ihre Tableview Daten neu zu laden.

Ich hoffe, es hilft.

+0

Also in diesem Fall muss ich erneut sicherstellen, dass die Tabellenansicht neu geladen wird, sobald die JSON-Daten bereit sind, nehme ich an mit Versprechungen. Denn selbst wenn ich alle Anhänge an die Zellen ändere, werden keine Daten angezeigt. Oder liege ich falsch? –

+0

Ja, Sie haben Recht, die if-Anweisungen Lösung ist nur um die Fehler zu vermeiden, wie ich in meiner Antwort sage. Aber wenn du die Ansicht aktualisierst, gehe zurück und wieder zur Tabellenansicht oder wenn du eine Refresh-Schaltfläche hast, wird sie neu geladen (wegen Cache) –