'UIWindow?' does not have a member named 'rootViewController'

ios, swift, xcode6

Solution

Try this, you have to initialize before access it :

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {

    // declaration of products like in your above code
    ....

    window = UIWindow(frame: UIScreen.mainScreen().bounds)
    let navController = window!.rootViewController as! UINavigationController           

    let tableViewController = navController.viewControllers[0] as! MainTableViewController
    tableViewController.products = products

    return true
}

I hope this help you.

Problem

I downloaded Apple's Table Search with UISearchController (Obj-C and Swift) sample code. I'm using Xcode 6.3 beta. Upon opening the Swift file, I converted the code to Swift 1.2 (via Edit/Convert). After conversion, I get the following compiler errors in `AppDelegate.swift` (I've also noted the lines where the errors occur in the the raw code below.: ``` Objective-C method 'application:didFinishLaunchingWithOptions:' provided by method 'application(_:didFinishLaunchingWithOptions:)' conflicts with optional requirement method 'application(_:didFinishLaunchingWithOptions:)' in protocol 'UIApplicationDelegate' 'UIWindow?' does not have a member named 'rootViewController'` ``` Any thing jump out? Here's `AppDelegate.swift` ``` import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { // MARK: Properties var window: UIWindow? // MARK: Application Life Cycle // error on the line below func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool { let products = [ Product(type: Product.deviceTypeTitle, name: "iPhone", year: 2007, price: 599.00), Product(type: Product.deviceTypeTitle, name: "iPod", year: 2001, price: 399.00), Product(type: Product.deviceTypeTitle, name: "iPod touch", year: 2007, price: 210.00), Product(type: Product.deviceTypeTitle, name: "iPad", year: 2010, price: 499.00), Product(type: Product.deviceTypeTitle, name: "iPad mini", year: 2012, price: 659.00), Product(type: Product.desktopTypeTitle, name: "iMac", year: 1997, price: 1299.00), Product(type: Product.desktopTypeTitle, name: "Mac Pro", year: 2006, price: 2499.00), Product(type: Product.portableTypeTitle, name: "MacBook Air", year: 2008, price: 1799.00), Product(type: Product.portableTypeTitle, name: "MacBook Pro", year: 2006, price: 1499.00) ] // error on the line below let navController = window.rootViewController as! UINavigationController // Note we want the first view controller (not the visibleViewController) in case // we are being store from UIStateRestoration. let tableViewController = navController.viewControllers[0] as! MainTableViewController tableViewController.products = products return true } // MARK: UIStateRestoration func application(application: UIApplication, shouldSaveApplicationState coder: NSCoder) -> Bool { return true } func application(application: UIApplication, shouldRestoreApplicationState coder: NSCoder) -> Bool { return true } } ```

Original source

Related problems