2015-08-05 4 views
0

Я пытаюсь отправить sms и электронную почту из приложения iOS, но у меня возникают некоторые проблемы.iOS Ошибка при отправке электронной почты или смс

Я взял код из учебника, например, код смс:

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) 
} 

и я напечатал мои ДАННЫЕ (они, кажется, нормально), но когда я пытаюсь отправить его, приложение аварии с a

'fatal error: unexpectedly found nil while unwrapping an Optional value' and it show me a strange file with a line highlighted : '0x4b5164 <+64>: trap'...

+0

Какой выходной сигнал для. println (phoneNumbers) это сообщение –

+0

выход: [01 47 89 65 83] – Karz

+0

Итак, номер находится в правильном формате.? Я думаю, что число должно быть похоже на «+1999999999» или «999999999» и т. Д. –

ответ

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) 
    } 
} 
+0

Спасибо за вашу помощь, я пробовал ваш код, но не работал, такая же ошибка: S – Karz

0

Вы можете попробовать это до инициализации ваших «сообщения», некоторые устройства не имеет возможности отправить сообщение:

if MFMessageComposeViewController.canSendText() { 
    ... 
} 

Проверьте если phoneNumbers не равен нулю перед установкой message.recipients, это может быть добавлено, если номер телефона не сохранен в настройках пользователя.

И self.messageText не является, к тому же, ноль.

Надеюсь, это может вам помочь.

+0

Я только что протестировал его, и он пересекает право в инструкции, но всегда эта ошибка. .. – Karz

+0

Я тестирую приложение на iPod Touch, но он может отправлять сообщение с iMessage с тем же api, что и sms, и он передает инструкцию, поэтому я думаю, что это не проблема – Karz

Смежные вопросы