我正在尝试从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'...
答案 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 顺便说一下也不是。
希望这可以帮到你。