代码之家  ›  专栏  ›  技术社区  ›  Johan Enstam

范围和阵列故障SWIFT

  •  0
  • Johan Enstam  · 技术社区  · 11 年前

    嗨,我正在用Parse开发一个应用程序,当用户创建一个帐户时,有一个UIPickerView,用户可以从中选择不同的字符串。我试图用字符串保存他们的选择。 我已经使用了它,但这节省了一个数字而不是字符串。

    let myRank = picker.selectedRowInComponent(0)
    

    当我尝试

    let myRank = pickerArray[row]
    

    我收到一个错误,说“使用未解析的标识符”行。 我想这是因为范围,但我不知道如何解决它!

    这是我的代码:

    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)
                }
            }
        }
    }
    
    1 回复  |  直到 11 年前
        1
  •  0
  •   Ian MacDonald    11 年前

    您将无法访问 row 除非将其存储为实例变量。

    我认为这是一个没有必要的情况。你已经走到一半了。您已经发现如何从选择器中检索选定的行索引,并且您已经知道如何从 pickerArray 基于索引。只需将两者结合起来:

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