2016-07-29 73 views
1

我对我的应用程序有一个奇怪的反应。 我的应用程序在近10种不同的设备中工作正常,并且已通过测试并且在线。但是有一位拥有iOS 5的iPhone 5的朋友有一个问题。当他试图进入一个表格视图时,我通过alamofire和swiftyjson的API调用将项目附加到表格视图中。该应用程序崩溃。从crashlytics我得到这个奇怪的错误iPhone上的Wierd Crash应用程序

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 

并在管线196这是代码

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 

所以要解释你一点,用这个程序,你取决于你的位置靠近你的一些事件。我有一个保护,如果没有事件有消息。但是我们离开了几个街区,我可以通过cell.eventTitle获得活动......但是我的朋友的iPhone通过它崩溃。

有什么想法?

P.S.我现在将iOS 9.1下载到我的模拟器。另一个与iPhone 5的朋友没有这个问题。

+1

我没有猜测它为什么会崩溃,但既然你知道这个人,也许你可以把你朋友的电话连接到Xcode,看看你是否遇到异常断点? – ghostatron

+0

@conarch Crashlytics报告告诉你有一个例外的确切位置。这就是为什么我好奇...即使iPhone 5越狱没有崩溃...甚至iPod touch 2! –

+0

我建议直接连接,主要是因为,如果您可以触发异常断点,则可以检查应用程序的状态以查看与朋友的手机有什么关系。而不是刺伤堆栈痕迹,你实际上可以看到它。如果我是你,我会利用这一点。 – ghostatron

回答

1

正如你所说,其他iPhone手机没有这个问题,我认为你的朋友的iphone可能是从应用程序或其他任何东西重载,它不及时采取JSON变量! 所以我建议首先使用if语句,以避免象这样的错误:

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

如果你在你的下一个更新要,也许你可以使用落成重新加载您的tableView的数据。

希望它有帮助。

+0

因此,在这种情况下,我必须重新确保表格视图在json数据准备好后立即重新加载,我猜是带有承诺。因为即使我改变所有追加到单元格它不会出现任何数据。还是我错了? –

+0

是的,你是对的if语句解决方案只是为了避免错误,正如我在我的答案中所说的。但是,如果刷新视图就像回到tableview一样,或者如果你有一个刷新按钮,它会重新加载它(因为缓存) –