2017-02-16 106 views
1

我试图发送一个短信,并使用该代码的短信错误:雨燕3.0:发送

import UIKit 
import MessageUI 

class ViewController: UIViewController { 

override func viewDidLoad() { 
super.viewDidLoad() 
} 

override func didReceiveMemoryWarning() { 
super.didReceiveMemoryWarning() 
} 

@IBAction func sendMessage(_ sender: UIButton) { 

let messageVC = MFMessageComposeViewController() 
messageVC.body = "For a good time call!" 
messageVC.recipients = ["79161887060"] 
messageVC.messageComposeDelegate = self 

self.present(messageVC, animated: true, completion: nil) 
} 
} 

extension ViewController: MFMessageComposeViewControllerDelegate { 
func messageComposeViewController(_ controller:  MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { 
switch (result.rawValue) { 
case MessageComposeResult.cancelled.rawValue: 
    print("Message was cancelled") 
    self.dismiss(animated: true, completion: nil) 
case MessageComposeResult.failed.rawValue: 
    print("Message failed") 
    self.dismiss(animated: true, completion: nil) 
case MessageComposeResult.sent.rawValue: 
    print("Message was sent") 
    self.dismiss(animated: true, completion: nil) 
default: 
    break; 
} 
} 
} 

构建成功,但是当我轻点按钮(动作发送短信) - 调试器去的appdelegate文件并停止在那里:

Error Aouput

日志是在这里:

2017年2月16日14:06:13.171616 [R egistration [24422:1035557] bundleid:XLab.Registration,enable_level:0,persist_level:0,propagate_with_activity:0 2017-02-16 14:06:13.172031注册[24422:1035557]子系统:com.apple.siri,类别: Intents,enable_level:1,persist_level:1,default_ttl:0,info_ttl:0,debug_ttl:0,generate_symptoms:0,enable_oversize:0,privacy_setting:0,enable_private_data:0 2017-02-16 14:06:13.177495 Registration [ 24422:1035645] subsystem:com.apple.UIKit,category:HIDEventFiltered,enable_level:0,persist_level:0,default_ttl:0,info_ttl:0,debug_ttl:0,generate_symptoms:0,enable_oversize:1,privacy_setting:2,enable_private_data: 0 2017-02-16 14:06:13.180083注册[24422:1035645]子系统:com.apple.UIKit,类别:HIDEventIncoming,enable_level:0,persist_level:0,default_ttl:0,info_ttl:0,debug_ttl:0, generate_symptoms:0,enable_oversize:1,privacy_setting: 2,enable_private_data:0 2017-02-16 14:06:13.190296注册[24422:1035635]子系统:com.apple.BaseBoard,类别:MachPort,enable_level:1,persist_level:0,default_ttl:0,info_ttl:0, debug_ttl:0,generate_symptoms:0,enable_oversize:0,privacy_setting:0,enable_private_data:0 2017-02-16 14:06:13.204079注册[24422:1035557] subsystem:com.apple.UIKit,category:StatusBar,enable_level: 0,persist_level:0,default_ttl:0,info_ttl:0,debug_ttl:0,generate_symptoms:0,enable_oversize:1,privacy_setting:2,enable_private_data:0 2017-02-16 14:06:13.296657注册[24422:1035557]子系统:com.apple.UIKit,类别:GestureEnvironment,enable_level:0,persist_level:0,default_ttl:1,info_ttl:0,debug_ttl:0,generate_symptoms:0,enable_oversize:1,privacy_setting:2,enable_private_data:0 2017- 02-16 14:06:13.316493注册配置[24422:1035557]子系统:com.apple.BackBoardServices.fence,类别:App,enable_level:1,persist_level:0,default_ttl:0,info_ttl:0,debug_ttl:0,generate_symptoms:0,enable_oversize:0,privacy_setting: 0,enable_private_data:0 2017-02-16 14:06:14.350494注册[24422:1035557]子系统:com.apple.UIKit,类别:Touch,enable_level:0,persist_level:0,default_ttl:1,info_ttl:0, debug_ttl:0,generate_symptoms:0,enable_oversize:1,privacy_setting:2,enable_private_data:0 2017-02-16 14:06:14.351481注册[24422:1035557] subsystem:com.apple.UIKit,category:Gesture,enable_level: 0,persist_level:0,default_ttl:1,info_ttl:0,debug_ttl:0,generate_symptoms:0,enable_oversize:1,privacy_setting:2,enable_private_data:0 2017-02-16 14:06:14.352214注册[24422:1035557]子系统:com.apple.UIKit,类别:GestureExclusion,enable_level:0,pe rsist_level:0,default_ttl:1,info_ttl:0,debug_ttl:0,generate_symptoms:0,enable_oversize:1,privacy_setting:2,enable_private_data:0 2017-02-16 14:06:14.943772注册[24422:1035557]子系统: com.apple.BackBoardServices.fence,category:Observer,enable_level:1,persist_level:0,default_ttl:0,info_ttl:0,debug_ttl:0,generate_symptoms:0,enable_oversize:0,privacy_setting:0,enable_private_data:0 2017- 02-16 14:06:14.944254注册[24422:1035557]子系统:com.apple.BackBoardServices.fence,类别:Workspace,enable_level:1,persist_level:0,default_ttl:0,info_ttl:0,debug_ttl:0,generate_symptoms: 0,enable_oversize:0,privacy_setting:0,enable_private_data:0 2017-02-16 14:06:14.944580注册[24422:1035557]子系统:com.apple.BackBoardServices。fence,category:Trace,enable_level:1,persist_level:0,default_ttl:0,info_ttl:0,debug_ttl:0,generate_symptoms:0,enable_oversize:0,privacy_setting:0,enable_private_data:0 2017-02-16 14:06 :32.331注册[24422:1035557] *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'应用程序试图在目标上呈现一个零模式视图控制器。 *第一掷调用堆栈: ( 0的CoreFoundation 0x00000001107ad34b exceptionPreprocess + 171 1 libobjc.A.dylib 0x000000010fdf121e objc_exception_throw + 48 2的UIKit 0x0000000111a4b867 - [UIViewController中_presentViewController:withAnimationController:完成:] + 5328 3的UIKit 0x0000000111a4e3da __62 - [UIViewController中presentViewController:动画:完成:] _ block_invoke_2 + 70 4的UIKit 0x000000011194fada + [UIView的(动画)performWithoutAnimation:] + 90 5的UIKit 0x0000000111a4e370 __62- [UIViewController中presentViewController:动画:完成:] _ block_invoke + 365 6的UIKit 0x0000000111a4e6df - [的UIViewController _performCoordinatedPresentOrDismiss:动画:] + 530 7的UIKit 0x0000000111a4e1c5 - [UIViewController中presentViewController:动画:完成:] + 179 8登记0x000000010f7f13da _TFC12Registration14ViewController17sendSMSBtnClickedfPs9AnyObject_T_ + 1002 9登记0x000000010f7f1516 _TToFC12Registration14ViewController17sendSMSBtnClickedfPs9AnyObject_T_ + 54 10的UIKit 0x0000000111898b88 - [UIApplication的sendAction:为:从:forEvent:] + 83 11的UIKit 0x0000000111a1e2b2 - [UIControl sendAction:至:forEvent:] + 67 12的UIKit 0x0000000111a1e5cb - [UIControl _sendActionsForEvents:withEvent:方法] + 444 13的UIKit 0x0000000111a1d4c7 - [UIControl touchesEnded:withEvent:方法] + 668 14 UIKit的0x00000001119060d5 - [一个UIWindow _sendTouchesForEvent:] + 2747 15的UIKit 0x00000001119077c3 - [一个UIWindow的SendEvent:] + 4011 16的UIKit 0x00000001118b4a33 - [UIApplication的的SendEvent:] + 371 17的UIKit 0x00000001120a6b6d __dispatchPreprocessedEventFromEventQueue + 3248 18的UIKit 0x000000011209f817 __handleEventQueue + 4879 19的CoreFoundation 0x0000000110752311 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17 20的CoreFoundation 0x000000011073759c __CFRunLoopDoSources0 + 556 21的CoreFoundation 0x0000000110736a86 __CFRunLoopRun + 918 22的CoreFoundation 0x0000000110736494 CFRunLoopRunSpecific + 420 23 GraphicsService小号0x0000000115a13a6f GSEventRunModal + 161 24的UIKit 0x0000000111896f34 UIApplicationMain + 159 25登记0x000000010f7f911f主+ 111 26 libdyld.dylib 0x000000011428f68d启动+ 1 ) 的libC++ abi.dylib:与类型的未捕获的异常终止NSException

请帮助解决该问题。有任何想法吗?

也许这个问题,因为我在模拟器上运行脚本,而不是在设备上?

在此先感谢!

+2

我的第一个建议是检查它是否在设备上工作。错误是:应用程序试图在目标上呈现一个零模式视图控制器。看来messageVC是无效的或者无法呈现。可能由于模拟器? – Darkwonder

+0

谢谢。我试图做到这一点 –

回答

1

您可以使用此代码。它的测试和运行良好

@IBAction func sendMessage(_ sender: UIButton) {
  
     if (MFMessageComposeViewController.canSendText()) { 
      let messageVC = MFMessageComposeViewController() 
      messageVC.body = "For a good time call!" 
      messageVC.recipients = ["79161887060"] 
      messageVC.messageComposeDelegate = self 
      self.presentViewController(messageVC, animated: true, completion: nil) 
     } 
    } 
+1

这个作品,我用它的方式。自然,它不会在模拟器上工作,因为canSendText是错误的。但是如果设备没有短信,至少不会崩溃。 –