我有一个 iOS 应用程序,可以在 Appstore 中找到。今天我测试了该应用程序,当应用程序尝试打开错误对话框时,它在我的 iPhone4 (iOS7) 上崩溃了。在 iPhone5s 上没有问题。
当我从 XCode 安装应用程序时,它可以工作...XCode/Appstore 是相同的版本。 我阅读了 XCode 中的控制台来找出应用程序崩溃的原因。我收到此错误:
following error: : *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present a nil modal view controller on target
我做错了什么? 当我调用错误对话框时,我这样做:
self.showAlert("Error.", message: "Wrong credentials.", owner: self);
报错方法:
func showAlert(title:NSString, message:NSString,owner:UIViewController) {
if let gotModernAlert: AnyClass = NSClassFromString("UIAlertController") {
var alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert);
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil));
owner.presentViewController(alert, animated: true, completion: nil);
}
else {
let alertView = UIAlertView(title: title, message: message, delegate: self, cancelButtonTitle: nil, otherButtonTitles: "OK");
alertView.alertViewStyle = .Default;
alertView.show();
}
}
最诚挚的问候
最佳答案
使用此方法检查类
+ (BOOL) checkIfClassExists:(NSString *)className {
id c = objc_getClass([className cStringUsingEncoding:NSASCIIStringEncoding]);
if (c != nil) {
return YES;
} else {
return NO;
}
}
& 快速用作
if ObjCFix.checkIfClassExists("UIAlertController") {
//iOS 8 code here
} else {
//iOS 7 code here
}
关于ios - 仅使用商店应用程序时应用程序崩溃 'NSInvalidArgumentException',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31206371/