Asignar un valor a una propiedad del controller en Swift

Estoy tratando de pasar una variable int entre vistas en Swift, pero no estoy seguro de cómo acceder a la propiedad de la otra propiedad View.

En Objective CI haría algo como esto

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; AnsViewController *ansViewController = [storyBoard instantiateViewControllerWithIdentifier:@"ansView"]; ansViewController.num = theNum; [self presentViewController:ansViewController animated:YES completion:nil]; 

Y en el otro file viewcontroller.h escribí esto para declarar la propiedad para get los datos

 @property (nonatomic) int num; 

Ahora para Swift tengo esto

 let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) let ansViewController : UIViewController = storyBoard.instantiateViewControllerWithIdentifier("ansView") as UIViewController ansViewController.num = theNum; self.presentViewController(ansViewController, animated:true, completion:nil) 

y en el otro file .swift para el otro controller de vista declaré num by doing

 let num: int 

Estoy bastante seguro de que esa no es la forma correcta de hacerlo porque recibo un error en esta línea

 ansViewController.num = theNum; 

y dice, "UIViewController no tiene un miembro llamado num" ¿Cómo resolvería este error y qué he hecho mal?

Gracias

El problema

En Objective C, ha definido explícitamente ansViewController como AnsViewController *, que tiene la propiedad num.

En su código Swift, sin embargo, ha definido explícitamente ansViewController como UIViewController, no AnsViewController. Entonces, el comstackdor no tiene idea si esto es realmente un AnsViewController, u otra subclass UIViewController, o simplemente un UIViewController vainilla.

Ahora para la solución.

Vamos a intentar abatir el valor devuelto como AnsViewController, luego acceder a esa propiedad si el downcast tiene éxito (supongo que siempre lo hará, pero fuera del context del rest de su código y nibs, puedo ' t estar seguro)

 let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) // To be safe, let's attempt to downcast the returned value as an AnsViewController if let ansViewController = storyBoard.instantiateViewControllerWithIdentifier("ansView") as? AnsViewController { // We get here if the "as?" succeeds with a non-nil value ansViewController.num = theNum; self.presentViewController(ansViewController, animated:true, completion:nil) } else { // Out of context, I can't see why this case would (or could) ever happen } 

Ahora, si sabes que esto siempre tendrá éxito (por lo que puedo ver, el valor de retorno de -instantiateWith … es determinista), entonces puedes ser un poco más conciso:

 let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) // Force the downcast as an AnsViewController (this could crash at runtime // if the return value is nil or not an AnsViewController, so again, // the previous example is safer let ansViewController = storyBoard.instantiateViewControllerWithIdentifier("ansView") as AnsViewController ansViewController.num = theNum; self.presentViewController(ansViewController, animated:true, completion:nil)