2014-09-02 1 views
4

Вот код, который я использую для Swift airprinting с бета-6 и он работал отлично:Печать в прошивкой от Swift в XCode 6 бета 7

@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) 
    } 
} 

Конечно, бета-7 преломил с «Значение факультативных тип «UIPrintInteractionController» не разворачивается, вы хотели использовать! или ?? на первой строке var. К сожалению, предложенное XCode исправление не исправляет его, и я недостаточно умен, чтобы понять это сам!

ответ

3

Xcode 6 beta 7 проверил большую часть API Cocoa Touch, поскольку он предоставляет необязательные значения - то есть те, которые могут быть ноль. Похоже, что общий контроллер печати является одним из таких значений. Открытие Swift версия заголовка для UIPrintInteractionController, я вижу:

class func sharedPrintController() -> UIPrintInteractionController? 

типа с трейлинг знаком вопроса - UIPrintInteractionController? - указывает на то, что возвращаемое значение sharedPrintController() может быть экземпляром UIPrintInteractionController или он может быть равен нулю.

Если вы уверены в том, что в ситуации, вы вызываете этот метод, он всегда будет возвращать значение, не ноль, вы можете немедленно заставить это необязательное значение «разворачивать» в экземпляр UIPrintInteractionController:

var pic = UIPrintInteractionController.sharedPrintController()! 
// the rest of your code 

с другой стороны, если вы думаете, что вы могли бы когда-либо получить ноль от этого метода, вы можете использовать дополнительный связывающий синтаксис Свифта, чтобы проверить это дело и продолжать использовать pic только если оно не ноль:

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

В любом случае, Xcode сообщает вам, что теперь вам нужно иметь дело с тем, что общий контроллер печати отображается как необязательное значение в бета-версии 7.

+0

Это сделало трюк! Большое спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^