В настоящее время я разрабатываю приложение, в котором хочу отправить SMS-сообщения, чтобы подтвердить, что у пользователя есть номер, из которого они отправляются. Затем я делаю некоторую работу на заднем плане и запрашиваю сервер, чтобы проверить, проверено ли число.Инициализация MFMessageComposeViewController в Swift
Единственная проблема в том, что я не могу отправить SMS. Единственные обучающие материалы и документация, которые я могу найти, это Objective-C.
Я скопировал его в меру своих возможностей, однако есть одна порция, в которой я тоже не могу найти эквивалент Swift. «Init».
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.
Заранее благодарим за помощь.
Хорошо ... Я клянусь, что я сделал попробовать. Я родом из Java-фона, поэтому сначала пробовал, но, похоже, не работал. Однако это так ... так здорово. Спасибо, сэр! –
Единственный раз, когда вы будете _ever_ сказать 'alloc' в Swift, вероятно, при создании буфера памяти с UnsafeMutablePointer. – matt
извините, пришлось подождать. ура! –