I am having trouble with dispatch_once_t when migrating to Swift 3.
According to Apple's migration guide:
The free function dispatch_once is no longer available in Swift. In Swift, you can use lazily initialized globals or static properties and get the same thread-safety and called-once guarantees as dispatch_once provided. Example:
let myGlobal = { … global contains initialization in a call to a closure … }()
_ = myGlobal // using myGlobal will invoke the initialization code only the first time it is used.
So I wanted to migrate this code. So it was before migration:
class var sharedInstance: CarsConfigurator
{
    struct Static {
        static var instance: CarsConfigurator?
        static var token: dispatch_once_t = 0
    }
    dispatch_once(&Static.token) {
        Static.instance = CarsConfigurator()
    }
    return Static.instance!
}
After the migration, following the Apple's guidelines (manual migration), the code looks like this:
class var sharedInstance: CarsConfigurator
{
    struct Static {
        static var instance: CarsConfigurator?
        static var token = {0}()
    }
    _ = Static.token
    return Static.instance!
}
But when I run this I get the following error when accessing return Static.instance!:
fatal error: unexpectedly found nil while unwrapping an Optional value
I see from this error that the instance member is nil, but why is it? Is it something wrong with my migration?
 
    