我目前正在开发一个应用程序,我希望能够在其中发送 SMS 消息以确认用户知道他们发送的号码。然后我做一些后端工作并查询服务器以查看该号码是否已经过验证。
唯一的问题是我无法发送短信。我能找到的唯一在线教程和文档是 Objective-C。
我已经尽我所能复制了它,但是有一部分我也找不到 Swift 的等价物。 “初始化”。
func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult) {
if (result.value == MessageComposeResultCancelled.value) {
NSLog("Message was cancelled.");
}
else if (result.value == MessageComposeResultFailed.value) {
var warningAlert : UIAlertView = UIAlertView.alloc();
warningAlert.title = "Error";
warningAlert.message = "Failed to send SMS!";
warningAlert.delegate = nil;
warningAlert.show();
NSLog("Message failed.");
} else {
NSLog("Message was sent.");
}
self.dismissViewControllerAnimated(true, completion: nil);
}
func showSMS() {
if (!MFMessageComposeViewController.canSendText()) {
var warningAlert : UIAlertView = UIAlertView.alloc();
warningAlert.title = "Error";
warningAlert.message = "Your device does not support SMS.";
warningAlert.delegate = nil;
warningAlert.show();
return;
}
var recipients : NSArray = ["1234567890"];
var message : NSString = "Message.";
// This is the problem line I think....
let messageController : MFMessageComposeViewController = MFMessageComposeViewController.alloc();
/* In Objective-C it is: */
// MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];
// I have also tried this...
let messageC : MFMessageComposeViewController! = MFMessageComposeViewController();
messageController.messageComposeDelegate = self;
messageController.recipients = recipients;
messageController.body = message;
self.presentViewController(messageController, animated: true, completion: nil);
}
我认为问题是当我运行它时,MFMessageComposeViewController 没有完全实例化。因此,当它遇到此代码时,屏幕不会打开消息对话框,而是会变黑。我发现当同一行未在 Objective-C 中初始化时,这就是问题所在。
在此先感谢您的帮助。
最佳答案
你说得很对。它永远不会被 init
编辑——因为您永远不会 init
编辑它。您正在调用 alloc
,这是错误的。
您从不在 Swift 中调用 alloc
。嗯,你可能会,但通常不会。只需初始化即可。像这样:
let messageController = MFMailComposeViewController()
这实际上是对 init
的调用,这正是您想要的。
(您可能需要停下来阅读 Swift 语言以及它如何调用初始化程序,然后再深入了解它,因为您显然在代码中的任何地方都在做这个完全错误的事情。)
关于ios - Swift 中的 MFMessageComposeViewController 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26493340/