Some test text!

Add license key

In this document
chevron_rightInitializing PDFNet in a Swift project that uses storyboards

This guide demonstrates how to initialize PDFNet with a license key. To begin working with PDFNet, you must have first added it to your project.

  1. Import PDFNet.

    If you have not already done so, import PDFNet to make it accessible.

    Importing PDFNet. The equivalent in Objective-C is #import.
  2. Initialize the PDFNet framework before any classes or methods are used:

    
    
    
    

    If there was a problem with the initialization, the call will throw an error (exception in Obj-C).

linkInitializing PDFNet in a Swift project that uses storyboards

The app lifecycle in a Swift project that uses storyboards is different than other iOS projects, they require careful handling to ensure PDFNet is intialized before its classes are used.

In Swift projects that use storyboards, non-optional stored properties that are instantiated at the point of declaration are instantiated before most code has a chance to run, including application(_:willFinishLaunchingWithOptions:). This means that even if you initialize PDFNet with a license key in this method, which is "your app’s first chance to execute code at launch time", it will result in an error.

To initialize PDFNet before application(_:willFinishLaunchingWithOptions:), add a new property in AppDelegate.swift that is initialized with the result of a call to PDFNet's initialize method (which is void):

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    private let pdfnetInitialize = PTPDFNet.initialize("key-string-here")

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        return true
    }

Alternatively, non-optional stored properties could be instantiated in the class's init functions, in which case application(_:willFinishLaunchingWithOptions:) will be run first.