ios - 生产应用程序崩溃报告
问题描述
我无法重新创建应用商店中某些应用用户发生的崩溃,我无法弄清楚。
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x000000010008d180
Termination Signal: Trace/BPT trap: 5
Termination Reason: Namespace SIGNAL, Code 0x5
Terminating Process: exc handler [3253]
Triggered by Thread: 0
Thread 0 name:
Thread 0 Crashed:
0 FGS 0x000000010008d180 LoginViewController.setupUI() + 896 (<compiler-generated>:94)
1 FGS 0x000000010008cde4 @objc LoginViewController.viewDidLoad() + 96 (LoginViewController.swift:87)
2 UIKitCore 0x00000001a0c64364 -[UIViewController _sendViewDidLoadWithAppearanceProxyObjectTaggingEnabled] + 104 (UIViewController.m:2252)
3 UIKitCore 0x00000001a0c68f98 -[UIViewController loadViewIfRequired] + 952 (UIViewController.m:3351)
4 UIKitCore 0x00000001a0bd7c88 -[UINavigationController _updateScrollViewFromViewController:toViewController:] + 172 (UINavigationController.m:6332)
5 UIKitCore 0x00000001a0bd7f9c -[UINavigationController _startTransition:fromViewController:toViewController:] + 180 (UINavigationController.m:6367)
6 UIKitCore 0x00000001a0bd8db4 -[UINavigationController _startDeferredTransitionIfNeeded:] + 1104 (UINavigationController.m:6579)
7 UIKitCore 0x00000001a0bda0f8 -[UINavigationController __viewWillLayoutSubviews] + 168 (UINavigationController.m:6853)
8 UIKitCore 0x00000001a0bbd4e0 -[UILayoutContainerView layoutSubviews] + 228 (UILayoutContainerView.m:86)
9 UIKitCore 0x00000001a1747abc -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 2156 (UIView.m:16956)
10 libobjc.A.dylib 0x000000019cf1faf0 -[NSObject performSelector:withObject:] + 68 (NSObject.mm:2182)
11 QuartzCore 0x00000001a3ce60f4 -[CALayer layoutSublayers] + 292 (CALayer.mm:9582)
12 QuartzCore 0x00000001a3ce63fc CA::Layer::layout_if_needed(CA::Transaction*) + 484 (CALayer.mm:9459)
13 QuartzCore 0x00000001a3cf9964 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 140 (CALayer.mm:2434)
14 QuartzCore 0x00000001a3c3ec1c CA::Context::commit_transaction(CA::Transaction*, double) + 308 (CAContextInternal.mm:1991)
15 QuartzCore 0x00000001a3c69bd8 CA::Transaction::commit() + 684 (CATransactionInternal.mm:438)
16 UIKitCore 0x00000001a12b7788 __34-[UIApplication _firstCommitBlock]_block_invoke_2 + 84 (UIApplication.m:10823)
17 CoreFoundation 0x000000019d18507c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 28 (CFRunLoop.c:1774)
18 CoreFoundation 0x000000019d184800 __CFRunLoopDoBlocks + 268 (CFRunLoop.c:1815)
19 CoreFoundation 0x000000019d17f800 __CFRunLoopRun + 1088 (CFRunLoop.c:2884)
20 CoreFoundation 0x000000019d17f098 CFRunLoopRunSpecific + 480 (CFRunLoop.c:3192)
21 GraphicsServices 0x00000001a72e9534 GSEventRunModal + 108 (GSEvent.c:2246)
22 UIKitCore 0x00000001a129f7ac UIApplicationMain + 1940 (UIApplication.m:4753)
23 FGS 0x000000010000da5c main + 68 (PolicyTableViewCell.swift:31)
24 libdyld.dylib 0x000000019cffef30 start + 4
它说它崩溃了LoginViewController
setupUI
,这是该函数中的代码:
private func setupUI() {
let hour = Calendar.current.component(.hour, from: Date())
var greetingMessage: String = ""
switch hour {
case 5..<12:
greetingMessage = "Good morning"
case 12..<18:
greetingMessage = "Good afternoon"
case 18..<24:
greetingMessage = "Good evening"
case 24..<5:
greetingMessage = "Good night"
default:
break
}
//Using keychain to store user name is case of app deletion, so if reinstalled, will remember him and greet him again.
if let fgsUser = keychain.get(Constants.kFgsUser) {
goodMorningLabel.text =
"""
\(greetingMessage)
\(fgsUser)
"""
}
else {
goodMorningLabel.text = greetingMessage
}
}
对于钥匙串部分,我使用的是KeychainSwift
17.0 版
解决方案
你需要改变最后一种情况。
您需要将 24 替换为 0。
private func setupUI() {
let hour = Calendar.current.component(.hour, from: Date())
var greetingMessage: String = ""
switch hour {
case 5..<12:
greetingMessage = "Good morning"
case 12..<18:
greetingMessage = "Good afternoon"
case 18..<24:
greetingMessage = "Good evening"
case 0..<5:
greetingMessage = "Good night"
default:
break
}
//Using keychain to store user name is case of app deletion, so if reinstalled, will remember him and greet him again.
if let fgsUser = keychain.get(Constants.kFgsUser) {
goodMorningLabel.text =
"""
\(greetingMessage)
\(fgsUser)
"""
}
else {
goodMorningLabel.text = greetingMessage
}
}
推荐阅读
- javascript - 使用 html 将本地文本文件数据填充到网页
- javascript - 如何处理 JavaScript Node 中轻微损坏的 JSON?
- flutter - 如何用颤振制作本地通知?
- redis - systemctl start 不返回/退出
- c# - 为什么换行符等于-1?
- web-services - 如何使用 HTTP 请求确定某个位置是否在未来的日期和时间开放
- html - HTML 和 SASS 链接在一起,但它们无法正常运行
- javascript - JS 脚本 defer 正在破坏代码,想添加回调或寻找其他解决方案
- java - maven-help-plugin:2.1.1:effective-settings failed: 执行时遇到 API 不兼容
- python - 从另一个 python 文件访问函数字典