2015-03-09 1 views
0

Hi Je développe une application avec Parse et lorsque l'utilisateur crée un compte, il y a un UIPickerView avec différentes chaînes que l'utilisateur doit choisir. Im essayant de sauver leur choix dans une chaîne. Je l'ai eu travailler avec mais cela enregistre un nombre pas une chaîne.Problème avec la portée et les tableaux SWIFT

let myRank = picker.selectedRowInComponent(0) 

Lorsque je tente

let myRank = pickerArray[row] 

je reçois une erreur « Utilisation d'identifiant sans solution « ligne ». Ce je suppose est à cause de la portée, mais je ne sais pas comment le résoudre!

Voici mon code:

let pickerArray: NSArray = ["- Välj din kompetens -", "Assistent", "Instruktör", "Biträdande Kurschef", "Kurschef"] 

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
    return 1 
} 

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return pickerArray.count 
} 

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! { 
    return "\(pickerArray[row])" 
} 

func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int) 
{ 
    // selected value in Uipickerview in Swift 
    let rank = pickerArray[row] 

} 

@IBAction func registerButtonPressed(sender: UIButton) { 

    let myRank = pickerArray[row] 

    var user = PFUser() 
    user.username = email 
    user.password = password 
    user.email = email 
    user[PF_USER_RANK] = myRank 
    user[PF_USER_EMAILCOPY] = email 
    user[PF_USER_FULLNAME] = name 
    user.signUpInBackgroundWithBlock { (succeeded: Bool, error: NSError!) -> Void in 
     if error == nil { 
      PushNotication.parsePushUserAssign() 
      ProgressHUD.showSuccess("Succeeded.") 
      self.dismissViewControllerAnimated(true, completion: nil) 
     } else { 
      if let userInfo = error.userInfo { 
       ProgressHUD.showError(userInfo["error"] as String) 
      } 
     } 
    } 
} 

Répondre

0

Vous n'aurez pas accès à row sauf si vous le stockez en tant que variable d'instance.

Je pense que c'est un cas où ce serait inutile, cependant. Vous êtes à mi-chemin. Vous avez déjà découvert comment récupérer l'index de ligne sélectionné à partir de votre sélecteur et vous savez déjà comment sélectionner une chaîne spécifique à partir de votre pickerArray en fonction d'un index. Il suffit de combiner les deux:

let myRank = pickerArray[picker.selectedRowInComponent(0)] 
+0

Merci travaillé parfaitement! –