Parse.com und PickerView

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Parse.com und PickerView

    Hi,

    Ich nutze Parse.com. Dort habe ich eine Tabelle, mit Sprachen => "objectId" und "name".
    Diese möchte ich abfragen und in einen pickerView anzeigen lassen. Soweit so gut, habe ich hinbekommen.

    Jetzt möchte ich die Auswahl aber gerne in einer anderen Tabelle speichern, dazu brauche ich die objektId, da die Sprache als Pointer fungiert.

    Zuerst dachte ich, ich muss die Daten abfragen und in einem dictionary ablegen, aber dann erhalte ich Fehlermeldungen aus den Funktionen


    titleForRow

    und

    didSelectRow


    da diese ja einen numerischen Key erwarten.

    Inzwischen bin ich aber total verunsichert, was denn nun der richtige Weg ist.
    Ich brauch den Namen zum anzeigen, aber die objectId für das abspeichern...

    Oder gibt es da bei Parse einen Weg, evtl. innerhalb der save routine? Bisher hab ich den docs nichts brauchbares für mich gefunden...

    Vielleicht ist Euch ja was bekannt?
  • heohni schrieb:

    Hi,

    Ich nutze Parse.com. Dort habe ich eine Tabelle, mit Sprachen => "objectId" und "name".
    Diese möchte ich abfragen und in einen pickerView anzeigen lassen. Soweit so gut, habe ich hinbekommen.

    Jetzt möchte ich die Auswahl aber gerne in einer anderen Tabelle speichern, dazu brauche ich die objektId, da die Sprache als Pointer fungiert.

    Zuerst dachte ich, ich muss die Daten abfragen und in einem dictionary ablegen, aber dann erhalte ich Fehlermeldungen aus den Funktionen


    titleForRow

    und

    didSelectRow


    da diese ja einen numerischen Key erwarten.

    Inzwischen bin ich aber total verunsichert, was denn nun der richtige Weg ist.
    Ich brauch den Namen zum anzeigen, aber die objectId für das abspeichern...

    Oder gibt es da bei Parse einen Weg, evtl. innerhalb der save routine? Bisher hab ich den docs nichts brauchbares für mich gefunden...

    Vielleicht ist Euch ja was bekannt?


    1. Kannst du vielleicht etwas Code posten; also wie du die einzelnen Komponenten codierst?
    2. Ist dein Problem/Fragestellung nicht ersichtlich
    3. Wenn du die Docs liest, wirst du sehen, dass parse.com bei einer query immer ein Array von Dictionaries zurückliefert.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von 99s99m ()

  • Hi,

    1. Code

    Quellcode

    1. var languagePickerValues = [String : String]()
    2. func getLessons() -> Bool{
    3. var status: Bool = false
    4. var query = PFQuery(className:"Lesson")
    5. query.orderByAscending("name")
    6. query.findObjectsInBackgroundWithBlock {
    7. (objects: [AnyObject]!, error: NSError!) -> Void in
    8. if error == nil {
    9. // The find succeeded.
    10. // Do something with the found objects
    11. for object in objects {
    12. var name = object["name"] as String
    13. self.languagePickerValues["\(object.objectId)"] = name
    14. }
    15. status = true
    16. } else {
    17. // Log details of the failure
    18. println("\(error.userInfo)")
    19. }
    20. }
    21. return status
    22. }
    23. override func viewDidLoad() {
    24. super.viewDidLoad()
    25. languagePicker = UIPickerView()
    26. languagePicker.dataSource = self
    27. languagePicker.delegate = self
    28. selectedLanguage.inputView = languagePicker
    29. if (getLessons()){
    30. selectedLanguage.text = languagePickerValues[0]
    31. }
    32. }
    33. // functions needed for picker view
    34. func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int{
    35. return 1
    36. }
    37. func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
    38. return languagePickerValues.count
    39. }
    40. func pickerView(pickerView: UIPickerView, titleForRow row: String, forComponent component: Int) -> String! {
    41. return languagePickerValues[row] <- error 'Int' is not convertible to 'DictionaryIndex<String, String>'
    42. }
    43. func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int){
    44. selectedLanguage.text = languagePickerValues[row] <- error 'Int' is not convertible to 'DictionaryIndex<String, String>'
    45. self.view.endEditing(true)
    46. }
    Alles anzeigen


    2. Der Pickerview benötigt ja nur ein einfaches Array zur Anzeige der Werte aus Tabelle "Languages".
    Ich möchte die vom User gewählte Sprache aber aber nicht als z.B. "Englisch" in der Tabelle "Settings" abspeichern, sonder mit der objectId des Eintrags "Englisch", da die Sprache ein Pointer zwischen beiden Tabellen ist.

    3. Die Docs wälze ich seit Tagen, aber DAS ist mir da noch nicht begegnet. Und selbst, wenn ich die Abfrage aus "Languages" in ein Dictionary schreibe, funktionieren die titleForRow und didSelectRow Funktionen des PickerViews nicht mehr, da diese ein Array mit einen numerischen Key erwarten, welchen ich aber ich nicht habe, da parse ja nicht mit numerischen key arbeitet sondern mit String objectIds.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von heohni ()

  • Hast du eine UIPickerView mittels Outlet verbunden?

    Quellcode

    1. NSArray *keys = [dict allKeys];
    2. NSString *aKey = [keys objectAtIndex:row];
    3. id language = [dict objectForKey:aKey];

    Du kannst ungefähr so mittels "Index" auf das Dictionary zugreifen. Der Code ist halt in Objective-C schnell getippt worden.