iOS Swift 中的异常管理问题
Issue with Exception manage in iOS Swift
你好
我想问你关于 IOS 中使用 Swift 2.0 语言的代码中异常管理的问题。
我有以下代码:
alert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action: UIAlertAction!) in
// Remove save value in Keychain
let MyKeychainWrapper = KeychainWrapper()
MyKeychainWrapper.setValue("Account", forKey: kSecAttrAccount as String)
MyKeychainWrapper.setValue("password", forKey: kSecValueData as String)
let loginViewController = self.storyboard?.instantiateViewControllerWithIdentifier("loginViewController") as! LoginViewController
self.presentViewController(loginViewController, animated: true, completion: nil)
}))
问题是我在这段代码中遇到了以下异常:
2015-10-26 08:04:49.464 RapidSentryMaster[1907:25789] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<KeychainWrapper 0x7fe783922820> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key v_Data.'
我认为异常是由于没有找到以前保存的任何 KeyChain,所以我尝试以我以前在 android 或其他语言中使用的相同方式管理异常尝试..赶上
alert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action: UIAlertAction!) in
// Remove save value in Keychain
do{
let MyKeychainWrapper = KeychainWrapper()
try MyKeychainWrapper.setValue("Account", forKey: kSecAttrAccount as String)
try MyKeychainWrapper.setValue("password", forKey: kSecValueData as String)
}catch{
}
let loginViewController = self.storyboard?.instantiateViewControllerWithIdentifier("loginViewController") as! LoginViewController
self.presentViewController(loginViewController, animated: true, completion: nil)
}))
这样做我遇到了以下问题:
try 表达式中没有调用抛出函数并且
无法访问 catch 块...
想请教各位,处理这种异常的正确方法是什么?
在此先致谢
嗯,您不能将代码封装在 try-catch
中,因为 在编译时 此代码不应该向编译器抛出异常。
此外,Swift 错误不是例外,它们就像使用强制处理规则的 NSError 处理一样。
查看KeychainWrapper.h 文件。没有方法 setValue:forKey:
相反,您应该使用 mySetObject:forKey:
如果你想尝试 this 教程。
干杯。
你好
我想问你关于 IOS 中使用 Swift 2.0 语言的代码中异常管理的问题。
我有以下代码:
alert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action: UIAlertAction!) in
// Remove save value in Keychain
let MyKeychainWrapper = KeychainWrapper()
MyKeychainWrapper.setValue("Account", forKey: kSecAttrAccount as String)
MyKeychainWrapper.setValue("password", forKey: kSecValueData as String)
let loginViewController = self.storyboard?.instantiateViewControllerWithIdentifier("loginViewController") as! LoginViewController
self.presentViewController(loginViewController, animated: true, completion: nil)
}))
问题是我在这段代码中遇到了以下异常:
2015-10-26 08:04:49.464 RapidSentryMaster[1907:25789] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<KeychainWrapper 0x7fe783922820> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key v_Data.'
我认为异常是由于没有找到以前保存的任何 KeyChain,所以我尝试以我以前在 android 或其他语言中使用的相同方式管理异常尝试..赶上
alert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action: UIAlertAction!) in
// Remove save value in Keychain
do{
let MyKeychainWrapper = KeychainWrapper()
try MyKeychainWrapper.setValue("Account", forKey: kSecAttrAccount as String)
try MyKeychainWrapper.setValue("password", forKey: kSecValueData as String)
}catch{
}
let loginViewController = self.storyboard?.instantiateViewControllerWithIdentifier("loginViewController") as! LoginViewController
self.presentViewController(loginViewController, animated: true, completion: nil)
}))
这样做我遇到了以下问题:
try 表达式中没有调用抛出函数并且 无法访问 catch 块...
想请教各位,处理这种异常的正确方法是什么?
在此先致谢
嗯,您不能将代码封装在 try-catch
中,因为 在编译时 此代码不应该向编译器抛出异常。
此外,Swift 错误不是例外,它们就像使用强制处理规则的 NSError 处理一样。
查看KeychainWrapper.h 文件。没有方法 setValue:forKey:
相反,您应该使用 mySetObject:forKey:
如果你想尝试 this 教程。
干杯。