【发布时间】:2018-02-20 12:47:54
【问题描述】:
我有以下代码,它截取用户屏幕的屏幕截图,并允许他们通过 SMS 将其作为附件发送给朋友。
func sendSmsToFriend() {
UIGraphicsBeginImageContext(view.frame.size)
view.layer.render(in: UIGraphicsGetCurrentContext()!)
let screenshotImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
if MFMessageComposeViewController.canSendText() && MFMessageComposeViewController.canSendAttachments() {
let smsController = MFMessageComposeViewController()
smsController.body = "Can you please tell me what colour this is?"
let screenshotImageData: Data = UIImagePNGRepresentation(screenshotImage!)!
smsController.addAttachmentData(screenshotImageData, typeIdentifier: "data", filename: "screenshotImage.png")
smsController.messageComposeDelegate = self
self.present(smsController, animated: true, completion: nil)
} else {
print("User cannot send texts or attachments")
}
}
以上内容在一个单独的项目上运行良好,在 Xcode 的最新稳定公开版本上。
我尝试将代码添加到将在最新 iOS(我相信是 11.3 beta 2)上运行的项目中,因此我使用 Xcode 9.3 Beta 2(2018 年 2 月 6 日发布)进行开发。
这是测试版中的错误吗?
我收到的错误是针对以下行:
let screenshotImageData: Data = UIImagePNGRepresentation(screenshotImage!)!
随后也在下面的行中。
获取:
Cannot convert value of type 'Data' to specified type 'Data'
【问题讨论】:
-
清理派生数据
-
双重(或三重)检查您没有在项目中定义另一个
Data类型。 – 另请注意,类型注释不是必需的,即let screenshotImageData = ...应该可以正常编译。 -
你也决定从政治转向编程吗? :D
-
你可以试试 let screenshotImageData = UIImagePNGRepresentation(screenshotImage!)!
-
@MartinR 成功了!我不敢相信我还没有尝试过这个……漫长的一天。如果您愿意,可以发布答案,我可以将其标记为已解决
标签: swift xcode sms xcode9-beta messageui