发送电子邮件或短信时出现iOS错误

时间:2015-08-05 10:10:52

标签: ios objective-c swift sendmessage

我正在尝试从iOS应用发送短信和电子邮件,但我遇到了一些问题。

我从教程中获取了代码,例如sms代码:

func sendMessage() {
    let prefs = NSUserDefaults.standardUserDefaults()
    var message = MFMessageComposeViewController()

    // Contacts
    var phoneNumbers = [String]()
    var phoneNumberNb: Int = prefs.objectForKey("phonenumberssaved")!.count
    for(var i = 0; i < phoneNumberNb; i++) {
        phoneNumbers.append(prefs.objectForKey("phonenumberssaved")!.objectAtIndex(i) as! String)
    }

    println(phoneNumbers)

    message.recipients = phoneNumbers
    message.body = self.messageText
    message.messageComposeDelegate = self

    self.presentViewController(message, animated: false, completion: nil)
} 

我打印了我的数据(它们似乎没问题),但是当我尝试发送它时,应用程序崩溃了

  

'致命错误:在展开“可选值”时意外发现nil'并显示一个突出显示行的奇怪文件:'0x4b5164&lt; + 64&gt;:trap'...

2 个答案:

答案 0 :(得分:0)

使用条件展开。此外,您不需要处理每个数组元素:

func sendMessage() {
    let prefs = NSUserDefaults.standardUserDefaults()
    let message = MFMessageComposeViewController()

    // Contacts
    if let phoneNumbers = prefs.objectForKey("phonenumberssaved") as? [String] {
        println(phoneNumbers)

        message.recipients = phoneNumbers
        message.body = "some body"
        message.messageComposeDelegate = self

        self.presentViewController(message, animated: false, completion: nil)
    }
}

答案 1 :(得分:0)

您可以在初始化&#34;消息之前尝试此操作&#34;,某些设备无法选择发送消息:

if MFMessageComposeViewController.canSendText() {
    ...
}

在设置 message.recipients 之前验证 phoneNumbers 是否为零,如果用户首选项中没有保存电话号码,则可以附加此内容。

self.messageText 顺便说一下也不是。

希望这可以帮到你。