在 XCode 6 beta 7 中从 Swift 在 iOS 中打印
Posted
技术标签:
【中文标题】在 XCode 6 beta 7 中从 Swift 在 iOS 中打印【英文标题】:Printing in iOS from Swift in XCode 6 beta 7 【发布时间】:2014-09-02 22:50:07 【问题描述】:这是我用于 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' 的值未解包;您的意思是使用 ! 还是 ??”在第一个 var 行上。不幸的是,XCode 建议的修复并没有修复它,而且我还不够聪明,无法自己解决!
【问题讨论】:
【参考方案1】: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 的 optional binding 语法来检查这种情况并继续使用pic
,除非它是非无:
if let pic = UIPrintInteractionController.sharedPrintController()
// the rest of your code
无论哪种方式,Xcode 都在告诉您,您现在需要处理共享打印控制器在 beta 7 中作为可选值公开的事实。
【讨论】:
以上是关于在 XCode 6 beta 7 中从 Swift 在 iOS 中打印的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 7 beta (5 & 6) 看不到某些 VC 的 IBOutlets
Xcode 6 beta 7 UIView.animateWithDuration 调用中的额外参数“usingSpringWithDamping”