Je viens de passer à partir de xcode 6 beta 3 en version bêta 4. Dans 3 mon application compilait parfaitement la compilation parfaitement dans 4, j'ai l'erreur suivante. Quelqu'un peut-il expliquer et fournir une solution s'il vous plaît.
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()
}
4 Réponses :
C'est un bogue dans la manière dont ce module est ponté à Swift. Signaler cela. Pour utiliser le module, restez dans Objective-C jusqu'à ce que le bogue de pontage SWIFT soit corrigé. P>
La partie principale du bogue tel qu'il se trouve me semble être: p>
Cela devrait être un énumé, et ce n'est pas; C'est une structure p> li>
la struct a une valeur code> code>, qui doit être capable de comparaison, mais il n'a pas de getter (vous pouvez la définir lors de l'initialisation, mais vous ne pouvez pas l'obtenir plus tard) p> li> ul>
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("")
}
}
Ajouter .Value corrigé mon problème aussi.
Dans Swift 2, résultat.Value code> n'existe pas.
pour RAWVALUE CODE>: if (result.rawValue == MessageComposeResultCancelled.rawValue) {
// Message canceled.
}
Pour SWIFT 3.0, vous aurez besoin de cela:
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)
}
}
S'il vous plaît fournir où est défini le messagecomposerSententant
@AlBlue: qui est défini dans le frameworks MessageUi, voir développeur.apple.com/library/prerelease/ios/documentation/... .
Déjà discuté ici