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

在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

下面是我在beta 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'的值未展开;您的意思是使用!还是??”来打破它。不幸的是,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中作为可选值公开的事实