在iOS中从Swift在XCode 6 beta 7中打印
下面是我在beta 6中使用的Swift airprinting代码,它运行良好:在iOS中从Swift在XCode 6 beta 7中打印,ios,swift,airprint,Ios,Swift,Airprint,下面是我在beta 6中使用的Swift airprinting代码,它运行良好: @IBAction func button3Tapped() { var pic:UIPrintInteractionController = .sharedPrintController() var viewpf:UIViewPrintFormatter = myTextView.viewPrintFormatter() pic.delegate = self pic.shows
@IBAction func button3Tapped() {
var pic:UIPrintInteractionController = .sharedPrintController()
var viewpf:UIViewPrintFormatter = myTextView.viewPrintFormatter()
pic.delegate = self
pic.showsPageRange = true
pic.printFormatter = viewpf
if UIDevice.currentDevice().userInterfaceIdiom == .Pad {
pic.presentFromRect(self.myButton3.frame, inView:self.view, animated:true, completionHandler: nil)
} else {
pic.presentAnimated(true, completionHandler: nil)
}
}
当然,beta 7在第一行中使用了一个“可选类型'UIPrintInteractionController'的值未展开;您的意思是使用!还是??”来打破它。不幸的是,XCode建议的修复程序无法修复它,而且我自己也没有足够的智慧来解决它 Xcode 6 beta 7对Cocoa Touch API的大部分内容进行了审核,以了解它是如何公开可选值的。看起来共享打印控制器就是这样一个值。打开UIPrintInteractionController标题的Swift版本,我看到:
class func sharedPrintController() -> UIPrintInteractionController?
带有尾随问号的类型—UIPrintInteractionController?
——表示sharedPrintController()
的返回值可能是UIPrintInteractionController的实例,也可能是零
如果您确信,在调用该方法的情况下,它将始终返回非nil值,则可以立即强制将此可选值“展开”到UIPrintInteractionController的实例中:
var pic = UIPrintInteractionController.sharedPrintController()!
// the rest of your code
另一方面,如果您认为可能会从该方法中获得nil,则可以使用Swift的可选绑定语法检查该情况,并仅在非nil时继续使用pic
:
if let pic = UIPrintInteractionController.sharedPrintController() {
// the rest of your code
}
无论哪种方式,Xcode都告诉您,您现在需要处理共享打印控制器在beta 7中作为可选值公开的事实