2017-01-18 3 views
0

У меня есть UIPickerView Мне нужно сохранить выбор пользователей в Parse. Я пробовал миллион разных вещей, и он просто оставляет мою колонку пустой. Любые идеи, что я делаю неправильно? Информация просто не сохраняется в Parse, я знаю, что UIPicker работает, хотя из-за обновления метки. Я искал google и стек и не вижу ничего плохого в моем коде?Сохранение данных UIPickerView для анализа

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { 

@IBOutlet weak var pickerView: UIPickerView! 
@IBOutlet weak var pickedLabel: UILabel! 

var pickerDataSource = ["Car", "Bus", "Train", "Plane", "Boat"] 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.pickerView.dataSource = self; 
    self.pickerView.delegate = self; 
} 

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

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

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! { 
    return self.pickerDataSource[row] 
    } 

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 
{ 
PFUser.currentUser()?["PickerColumn"] = self.pickerDataSource[row]; 
    self.pickedLabel.text = "Your choice: \(self.pickerDataSource[row])" 
PFUser.currentUser()?.saveInBackground() 
} 

Я также попытался это:

var pickerSave: String? 

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 
{ 
pickerSave = pickerDataSource[row] 
    self.pickedLabel.text = "Your choice: \(self.pickerDataSource[row])" 
    } 

@IBAction func next(sender: AnyObject) { 

PFUser.currentUser()?["pickerColumn"] = pickerSave 
    self.performSegueWithIdentifier("next", sender:self) 
     PFUser.currentUser()?.saveInBackground() 
} 

ответ

0

Если метка обновления, то ваш сборщика прекрасно. Вы выпускаете класс PFUser. PFUser.currentUser() возвращает словарь, как вы ожидаете? после того, как вы установите «pickerColumn», вы можете распечатать его значение на консоли?

ли следующие работы:

PFUser.currentUser()?["pickerColumn"] = "1" 
PFUser.currentUser()?.saveInBackground() 

Эти конкретные линии, что нарушает.

+0

Привет, Андрей, да, данные сборщика печатаются, чтобы регистрироваться без проблем, поэтому я не могу понять это, это должно быть просто сохранение текста для разбора, но его нет. 'PFUser.currentUser()? [ "PickerColumn"] = (pickerDataSource [строка]) печать (pickerDataSource [строка])' PFUser.currentUser() ?. saveInBackground() – Grace

0

Похоже, вы пытаетесь сохранить значение из сборщика в поле parse _User. В любом случае я бы не рекомендовал сохранить его там. Я предполагаю, что вы используете mongoDB, и это проблема схемы. Поэтому я бы сделал новый класс для хранения этих данных.

Я бы сказал, что так.

var pickerData = PFObject(className:"PickerData") 
@IBAction func next(sender: AnyObject) { 

pickerData["user"] = PFUser.current()? 
pickerData["data"] = self.pickedLabel.text 
pickerData.saveInBackground() 
} 
+0

Большое спасибо Джарад я буду стараться, что и вернусь к тебе. – Grace

Смежные вопросы