xcode 6 beta 4 – MessageComposeResult不能转换为OptionalNilComparisonType
我刚刚从Xcode 6 Beta 3升级到Beta 4.在3我的应用程序编译完美,但在4我有以下错误。 任何人都可以解释和提供解决scheme,请。
func messageComposeViewController(sendMsg: MFMessageComposeViewController, didFinishWithResult result: MessageComposeResult) { switch result { case MessageComposeResultSent : //Error: MessageComposeResult is not convertible to _OptionalNilComparisonType label2.text = "Msg Sent" case MessageComposeResultCancelled : //Error: MessageComposeResult is not convertible to _OptionalNilComparisonType label2.text = "Msg Send Cancelled" case MessageComposeResultFailed : //Error: MessageComposeResult is not convertible to _OptionalNilComparisonType label2.text = "Msg Send Failed" default: label2.text = "Msg Error" } self.dismissViewControllerAnimated(true, completion: nil) self.reloadInputViews() }
这个模块被桥接到Swift的方式是一个错误。 举报。 要使用这个模块,留在Objective-C中,直到Swift桥接错误得到解决。
错误的主要部分在我看来似乎是:
-
这应该是一个枚举,而不是; 这是一个结构
-
该结构有一个
value
,应该能够比较,但它没有getter(你可以设置它在初始化,但你不能得到它以后)
func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult) { switch result.value { case MessageComposeResultSent.value : println("enviado") case MessageComposeResultCancelled.value : println("cancelado") case MessageComposeResultFailed.value : println("fallo") default: println("") } }
对于Swift 2 ,您将需要使用rawValue
:
// MARK: MFMessageComposeViewControllerDelegate func messageComposeViewController(controller:MFMessageComposeViewController, didFinishWithResult result:MessageComposeResult) { controller.dismissViewControllerAnimated(true, completion:nil) switch result.rawValue { case MessageComposeResultSent.rawValue: print("cancelado") case MessageComposeResultCancelled.rawValue : print("canceled...") case MessageComposeResultFailed.rawValue : print("fail...") default: print("default...") } }
当然,如果你只对一个特定的值感兴趣,你可以使用if语句:
if (result.rawValue == MessageComposeResultCancelled.rawValue) { // Message canceled. }
对于Swift 3.0,你将需要这个:
func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult){ switch result.rawValue { case MessageComposeResult.sent.rawValue: print("sent") break case MessageComposeResult.cancelled.rawValue: print("cancelled") break case MessageComposeResult.failed.rawValue: print("failed") break default: break } self.dismiss(animated: true) { () -> Void in } } @IBAction func sentSMSAction(_ sender: AnyObject) { if MFMessageComposeViewController.canSendText() { let messageVC = MFMessageComposeViewController() messageVC.body = "My first custom SMS"; messageVC.recipients = ["0123456789"] messageVC.messageComposeDelegate = self; self.present(messageVC, animated: false, completion: nil) } }