在XCode 6 beta 7中使用Swift进行iOS打印

4
这是我在Swift airprinting中使用的beta 6代码,它运行良好:
@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建议的修复方法并不能解决这个问题,而我自己也不够聪明去解决它!
1个回答

3

Xcode 6 beta 7审查了Cocoa Touch API中的大部分内容,以确定其如何暴露可选值-即那些可能为nil的值。看起来共享的打印控制器就是这样一个值。打开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中作为可选值暴露的事实。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接