¿Cómo rotar la orientación mediante programación en Swift?

Intenté lo siguiente:

UIDevice.currentDevice().setValue(UIInterfaceOrientation.Portrait.rawValue, forKey: "orientation")

en

viewWillAppear

Pero no funciona. ¿Cómo puedo rotar mi pantalla en viewWillAppear?

ACTUALIZAR

Yo uso el siguiente código para bloquear una orientación:

var shouldRotate = true
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int {
    if shouldRotate == true {
        return Int(UIInterfaceOrientationMask.Portrait.rawValue)
    } else {
        return Int(UIInterfaceOrientationMask.LandscapeLeft.rawValue)
    }
}

Swift 4.0

  private func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int {
        if shouldRotate == true {
            return Int(UIInterfaceOrientationMask.portrait.rawValue)
        } else {
            return Int(UIInterfaceOrientationMask.landscapeLeft.rawValue)
        }
    }

y en mi PRIMER controlador a la vista Aparecerá:

if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
    appDelegate.shouldRotate = true
}

en mi SEGUNDO controlador:

if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
    appDelegate.shouldRotate = false
}

entonces, cuando regreso del SEGUNDO controlador al PRIMERO:

Lo giro hacia la izquierda, no gira, gire hacia la derecha, nada, gire hacia la izquierda, otra vez, gira.

¿Cómo puedo arreglarlo?

Respuestas a la pregunta(4)

Su respuesta a la pregunta