在XCode 6 beta 7中从Swift在iOS中打印

时间:2014-09-02 22:50:08

标签: ios swift airprint

这是我用于测试版6的Swift airprinting的代码,它运行良好:

@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'没有打开;你的意思是用!或?? ??#34;在第一个变量线上。不幸的是,XCode建议修复无法修复它,而且我不够聪明,不能自己解决它!

1 个答案:

答案 0 :(得分:3)

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的可选绑定语法来检查该情况并继续使用pic只有它是非零的:

if let pic = UIPrintInteractionController.sharedPrintController() {
    // the rest of your code
}

无论哪种方式,Xcode都告诉您现在需要处理共享打印控制器作为beta 7中的可选值公开的事实。