ios - 在 iPad Air (IOS Swift) 中的 KeychainItemWrapper.m 中保存 uuid 时应用程序崩溃
问题描述
我的应用程序在 iPad Air,os 12.2.0 中崩溃。Fabric 中的 crashlytics 显示第 315 行的崩溃
NSAssert( result == noErr, @"Couldn't add the Keychain Item." );
在 KeychainItemWrapper.m 文件中。调用此方法将 UUID 存储在 app 中:
func getUUIDString() -> String {
if !uuid.trimmed().isEmpty {
print("uuid ==> \(uuid)")
return uuid // return cached value
}
/// Generate A Dynamic UDID
var toRet = ""
/// Wrapper Object
let keychainWrapperObj = KeychainItemWrapper(identifier: "ManDown", accessGroup: nil)
/// Check is Any UDID Stored
if let udidSavedVal = keychainWrapperObj?.object(forKey: kSecAttrService) {
print("Old UDID is being Used now as ==> \(udidSavedVal as? String ?? "")")
toRet = udidSavedVal as? String ?? ""
}
if toRet.trimmed().isEmpty {
/// We have no UDID Saved Need to get New
if UserDefaultManager.getUUIDSaved() != nil {
toRet = UserDefaultManager.getUUIDSaved()!
//导致崩溃的行 keychainwraper.setobject()
keychainWrapperObj?.setObject(toRet, forKey: kSecAttrService)
} else {
/// Need to Get new UUID
var newUUIDStr: String?
newUUIDStr = UIDevice.current.identifierForVendor!.uuidString
print(newUUIDStr!)
UserDefaultManager.saveUUIDInDefaultAs(UUIDString: newUUIDStr!)
toRet = newUUIDStr!
keychainWrapperObj?.setObject(toRet, forKey: kSecAttrService)
}
}
print("uuid ==> \(toRet)")
uuid = toRet
Crashlytics.sharedInstance().setUserName(uuid)
return uuid
}
好吧,我的问题是如何解决此崩溃以及如何至少复制此错误以进行进一步调试。Xcode 10.2 swift 4 keychainSharing 的功能不可用,但应用程序仍然可以正常工作。
Error logs:
Fatal Exception: NSInternalInconsistencyException
0 CoreFoundation 0x191b53518 __exceptionPreprocess
1 libobjc.A.dylib 0x190d2e9f8 objc_exception_throw
2 CoreFoundation 0x191a6d148 +[_CFXNotificationTokenRegistration keyCallbacks]
3 Foundation 0x1925301c8 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:]
解决方案
推荐阅读
- arduino - esp32 arduino mqtt over websocket?
- java - 从图像转换为 Pdf,然后将其作为响应发送,而不保存在磁盘 java 中
- google-sheets - 带有希伯来语的 url 的 importxml 以 Chrome 无法识别的 UTF-8 以外的编码返回
- windows - 无法在可执行目录或任何父目录中找到 jenkins.xml 文件
- php - Laravel,使用查询这些 id 在另一个表中的位置查找 id
- multidimensional-array - 编译问题,生锈 - intel mkl
- elixir - 使用无效端口范围捕获 HTTPoison 错误
- xaml - 如何在 xaml 代码中根据平台指定控件的属性?
- c# - 低于 keybd_event 的低级键盘输入
- laravel - Laravel 作用域动态