"Datenpakete" erstellen?

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

  • "Datenpakete" erstellen?

    Euch einen schönen Abend,

    ich probiere seit ein paar Stunden eine Suchfunktion für ein Lagerregister zu erstellen. Da ich meine Daten aber in Arrays gespeichert habe kann die Suchfunktion die einzelnen Werte nicht zuordnen und sucht dementsprechend zwar den eingegeben Wert raus, ordnete diesem aber dann die [row]-Werte der anderen Arrays im Table-View zu.

    Gibt es eine Möglichkeit das zu lösen? Habe sämtliche Versuche mit Klassen, Structs etc aufgegeben.

    Nochmal im Detail: Ich greife Daten von einem Server ab und zeige sie dem Nutzer in einem Table View. Die Daten werden dazu in Arrays gespeichert. Gebe ich nun einen Wert zum suchen eines Objektes ein so sortiert er die anderen Daten weiter nach der [row|-Funktion. Letzteres darf nicht sein, da so Preise etc. dem falschen Object zugeordnet werden.
    Meine Idee ist es Daten-Pakete zu erstellen. Also Produkt 1-10, dazu gehört dann je ein fest zugeordneter Preis, eine ID usw.

    Geht das in irgendeiner Form?



    Vielen Dank für eure Hilfe!
    Tom

    Hier der bisherige Code:

    Quellcode

    1. import UIKit
    2. class product {
    3. var productName = [""]
    4. var productID = [""]
    5. var productPrice = [""]
    6. var productQuantity = [""]
    7. init(name: Array<String>, id: Array<String>, price: Array<String>, quantity: Array<String>) {
    8. self.productName = name
    9. self.productID = id
    10. self.productPrice = price
    11. self.productQuantity = quantity
    12. }
    13. }
    14. struct auto {
    15. var name = [""]
    16. var id = [""]
    17. var price = [""]
    18. }
    19. class ProdukteController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate {
    20. var searchProduct = [String]()
    21. var searching = false
    22. var personalN13 = TransferN13.globalVariableN13.personalN13
    23. //Connections
    24. @IBOutlet var productSearchBar: UISearchBar!
    25. @IBOutlet weak var productTabelView: UITableView!
    26. override func viewDidLoad() {
    27. super.viewDidLoad()
    28. productTabelView.delegate = self
    29. productTabelView.dataSource = self
    30. productSearchBar.delegate = self
    31. if personalN13 != "" {
    32. productSearchBar.text = personalN13
    33. }else {
    34. productSearchBar.text = ""
    35. }
    36. }
    37. //Folgendes damit die Tastatur herunterfährt
    38. override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    39. self.view.endEditing(true)
    40. }
    41. @objc func dismissKeyboard() {
    42. view.endEditing(true)
    43. }
    44. //Data
    45. //producer 1
    46. let products = ["Produkt 1", "Produkt 2", "Produkt 3", "Produkt 4", "Produkt 5", "Produkt 6", "Produkt 7", "Produkt 8", "Produkt 9", "Produkt 10"]
    47. let productIDs = ["8237464728346", "1647863429343", "934284763427", "36172831636", "7891273812354", "9783121041312", "9283645475349", "8762350981643", "0916254094756", "1827450982764"]
    48. let productPrices = ["14,99€", "5,79€", "4,99€", "9,59€", "29,89", "1,79€", "15,49€", "3,99€", "94,59€", "9,79"]
    49. let productQuantities = ["12", "34", "218", "8", "3", "98", "4", "18", "81", "14"]
    50. func numberOfSections(in tableView: UITableView) -> Int {
    51. return 1
    52. }
    53. func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    54. if searching {
    55. return searchProduct.count
    56. }else {
    57. return 10
    58. }
    59. }
    60. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    61. let productCell = tableView.dequeueReusableCell(withIdentifier: "productCell", for: indexPath) as? ProduktCell
    62. productCell?.selectionStyle = UITableViewCell.SelectionStyle.none
    63. if searching {
    64. productCell?.productID?.text = searchProduct[indexPath.row]
    65. }else {
    66. productCell?.productName.text = products[indexPath.row]
    67. productCell?.productID.text = productIDs[indexPath.row]
    68. productCell?.productPrice.text = productPrices[indexPath.row]
    69. productCell?.productQuantity.text = productQuantities[indexPath.row]
    70. }
    71. return productCell!
    72. }
    73. func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    74. return 80
    75. }
    76. func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    77. self.view.endEditing(true)
    78. }
    79. //Für die Suchfunktion
    80. func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    81. searchProduct = productIDs.filter({$0.prefix(searchText.count) == searchText})
    82. searching = true
    83. productTabelView.reloadData()
    84. }
    85. func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    86. searching = false
    87. searchBar.text = ""
    88. productTabelView.reloadData()
    89. }
    90. }
    Alles anzeigen
  • Dein Problem liegt im Datenmodell: Statt ein Array mit jeweils einem Element aller Attribute zu haben, nutzt Du für jedes Attribut ein eigenes Array. Beim Filtern müsstest Du also alle Indizes synchron sortiert haben ... unnötig aufwändig und fehleranfällig.

    Bau' Dein Datenmodell so um, das Du nur ein Array verwendest. Dieses enthält dann als Elemente z. B. Dictionaries, deren Schlüssel-/Wertpaare die einzelnen Attribute der Datensätze abbilden. Oder Du nutzt dafür eine eigene Klasse mit entsprechenden Properties.

    Dann kannst Du die DataSource der TableView einfach per Predicate auf passende Array-Elemente filtern.

    Mattes

    Edit: Komisch, dass Du schon eine entsprechende Klasse product hast, aber - wenn ich nichts übersehen habe - gar nicht verwendest.
    Diese Seite bleibt aus technischen Gründen unbedruckt.

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

  • Hi,
    genau, die Klasse habe ich bereits erstell, da ich auch die Idee mit der Zuordnung der Werte in Klassen hatte. Leider bin ich dort jedoch nicht weitergekommen, da ich die vom Server verschickten Werte ja in Arrays speichere und Arrays nicht im init der Klasse abgerufen werden können. Oder habe ich hier einen Denkfehler?

    Tom
  • Dann speichere doch nicht in Arrays, dazu zwingt Dich doch keiner.
    1. Instanziere ein products-Object mit den Werten für Name, ID, Preis, Menge wie Du es schon vorgesehen hast.
    2. Füge dieses Object einem Array, z. B. products, hinzu.
    3. Fahre mit dem nächsten Datensatz fort bis alle Produkte gelesen wurden.
    4. Erzeuge beim Verarbeiten der Suche ein zweites Array per Predicate, z. B. filteredProducts
    5. Nutze beim Anzeigen der TableView bzw. in deren Delegate- / DataSource-Methoden entweder products oder filteredProducts, je nach Status der Suche.
    Das sollte eigentlich als Schubs in die richtige Richtung (oder besser: eine mögliche Richtung) reichen...

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Okay, danke für den Tipp. Habe das soweit jetzt alles implementiert und es scheint auch im Simulator zu funktionieren. Habe allerdings bisher nur auf offline Werte zurückgegriffen. Jetzt muss ich mir noch was überlegen wie ich die Daten vom Server in Objekte Umwandle.

    Suchfunktion funktioniert ebenfalls, wenn auch noch mit kleinen Bugs 8)
    Tom
  • Die Daten lade ich aus einer Tabelle von einem Server. Deswegen macht es, soweit ich mir das überlegt habe, nur Sinn die Werte in Arrays zu speichern. Ich wüsste zum aktuellen Zeitpunkt nicht wie man die Daten anders aus der Instanz herausbekommt.

    JSON Dateien sind es meines Wissens nach nicht.

    Tom

    //Edit: Bzw. man kann die Daten einzeln aus der Tabelle abfragen, das dürfte kein Problem sein. Nur wie füge ich diese dann in die Klasse ein? Ich erstelle ja zum aktuellen Zeitpunkt manuell die Einträge für die Tabelle:
    (so in etwa, als Beispiel)

    Quellcode

    1. func setUpProducts() {
    2. productArray.append(product(name: "Produkt 1", id: "8237464728346", price: "14,99€", quantity: "12"))
    3. productArray.append(product(name: "Produkt 2", id: "1647863429343", price: "5,79€", quantity: "34"))
    4. productArray.append(product(name: "Produkt 3", id: "2893172863262", price: "18,99€", quantity: "2"))
    5. productArray.append(product(name: "", id: "", price: "", quantity: ""))
    6. currentProductArray = productArray
    7. }
    Kann man das automatisieren? Mit einer Schleife?
  • Denk' noch einmal in Ruhe nach: In welchem Format Du Daten vom Server beziehst, hat absolut gar nichts mit Deiner internen Datenhaltung zu tun. Selbst, wenn Du z. B. erst alle Preise, dann alle Mengen etc. bekämst - was ich bezweifle - könntest Du nach Abschluss der Datenübertragung anders speichern. Solltest Du alle Daten auf einmal bekommen, erst recht. Und bei satzweiser Übertragung passt es 1:1 zu o. g. Objekt.

    Ich glaube, Du hast noch nicht verinnerlicht, dass die interne Datenhaltung Deiner App mehr auf die Verwendung von Daten ausgelegt sein sollte, nicht auf externe Schnittstellen.

    Lass' mal den Code beiseite und überlegen einmal konzeptionell...

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Ich könnte die heruntergeladenen Daten nacheinander in einem Objekt der Klasse "product" zusammenführen. Also immer sagen das der Wert "productName" auf dem Server dem "productName" in meiner Klasse entspricht und mit dem class.append(...) Befehl den Wert mithilfe der Klasse speichern. Dafür müsste sich der Vorgang dann aber so lange wiederholen bis die App sämtliche Daten vom Server heruntergeladen hat. Oder was meinst du?

    Tom
  • Tom16092 schrieb:

    Dafür müsste sich der Vorgang dann aber so lange wiederholen bis die App sämtliche Daten vom Server heruntergeladen hat.

    MyMattes schrieb:

    [...] könntest Du nach Abschluss der Datenübertragung anders speichern.
    Ähhh ... JA :)

    Wie @pierredrks schrieb: Kaffeesatzlesen fällt schwer. Wie - Format und Ablauf - lädst Du die Daten? Und hast Du darauf Einfluss oder ist es fest vorgegeben?

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Tom16092 schrieb:

    Ich könnte die heruntergeladenen Daten nacheinander in einem Objekt der Klasse "product" zusammenführen. Also immer sagen das der Wert "productName" auf dem Server dem "productName" in meiner Klasse entspricht und mit dem class.append(...) Befehl den Wert mithilfe der Klasse speichern. Dafür müsste sich der Vorgang dann aber so lange wiederholen bis die App sämtliche Daten vom Server heruntergeladen hat. Oder was meinst du?

    Tom
    Hallo Tom,

    das Datenmodel bzw. die Datenhaltung; Abfragen musst Du getrennt von der Datenverwaltung innerhalb der App betrachten.

    - Normalerweise verwendest Du SQL-Statements um auf dem Server bzw. innerhalb des DB-Systems die Daten aus den Tabellen abzufragen, zu aktualisieren usw..
    - Diese SQL-Anweisungen werden i. d. R. in PHP-Scripte eingebettet.
    - Innerhalb der PHP-Scripte kannst Du die Daten in das entsprechende Format einbetten. Gängige Formate welche zur Anwendung kommen sind XML und JSON.
    - Das PHP-Script übergibt die so aufbereiteten Daten wiederum dann Deiner App.
    - Innerhalb der App kannst du z.B. die Daten dann via JSONDecoder() in ein Array decodieren.
    - Wie dieses Array aufgebaut ist bleibt Dir überlassen. Jedoch würde ich es so anlegen, dass es dem Datenmodell der Tabellen entspricht bzw. günstig (Handhabung) für Deine weitere Verarbeitung ist.

    Dies ist nur eine von vielen Vorgehensweisen. Deshalb ist es anzuraten sich vorher in aller Ruhe ein schlüssiges Konzept zu überlegen und nicht gleich mit der Codierung zu beginnen.
  • Die Verbindung zwischen Xcode und dem Server besteht noch nicht da ich quasi erstmal "Trockenübungen" machen wollte. Aus einem älteren Projekt habe ich den Code einmal herausgesucht.

    Die "Query" hatte ich hier wie folgt umgeschrieben um die Daten aus der Tabelle herauszulösen und in den jeweiligen Arrays (bspw. AGusernames für die Vornamen der Nutzer) zu speichern. Hierbei brauchte ich jedoch keine Suchfunktion wodurch es möglich war die Arrays direkt weiter zu nutzen.

    Quellcode

    1. func retrieveJobs() {
    2. let query = PFQuery(className: "Jobs")
    3. query.whereKey("AGuser", notEqualTo: PFUser.current()?.objectId as Any)
    4. query.findObjectsInBackground { (objects, error) in
    5. if let users = objects {
    6. for job in users {
    7. self.objectsIds.append(job.objectId!)
    8. self.AGusers.append(job["AGuser"] as! String)
    9. self.AGusernames.append(job["AGusername"] as! String)
    10. self.AGlastnames.append(job["AGlastname"] as! String)
    11. self.jobNames.append(job["job"] as! String)
    12. self.regions.append(job["region"] as! String)
    13. //self.distances.append(user["distance"] as! String)
    14. self.hours.append(job["hour"] as! String)
    15. self.wages.append(job["wage"] as! String)
    16. self.totalWages.append(job["finalwage"] as! String)
    17. self.tableView.reloadData()
    18. }
    19. }
    20. }
    21. }
    Alles anzeigen

    So, oder so ähnlich würde ich das gerne wieder nutzen da es ziemlich gut funktioniert hat.

    Eine Idee wäre hier, dem Programm in der Query zu sagen, es soll die Daten aus der Tabelle in der bereits angesprochenen Klasse "products" in einzelne Objekte " aufteilen". Bsp:

    Quellcode

    1. productArray.append(product(name: productName, id: productID, price: productPrice, quantity: ProductQuantitiy))


    Ich vermute aber das es so direkt nicht funktionieren wird, da ich die Klasse mit Stings erstellt habe um die Tabelle besser füllen zu können. Zudem müssten man dann an der Stelle beim Download der Daten sagen, dass das Programm so lange in einer Schleife arbeiten muss bis es alle Daten zusammengesucht hat.


    OSXDev schrieb:

    - Normalerweise verwendest Du SQL-Statements um auf dem Server bzw. innerhalb des DB-Systems die Daten aus den Tabellen abzufragen, zu aktualisieren usw..
    - Diese SQL-Anweisungen werden i. d. R. in PHP-Scripte eingebettet.
    - Innerhalb der PHP-Scripte kannst Du die Daten in das entsprechende Format einbetten. Gängige Formate welche zur Anwendung kommen sind XML und JSON.
    - Das PHP-Script übergibt die so aufbereiteten Daten wiederum dann Deiner App.
    - Innerhalb der App kannst du z.B. die Daten dann via JSONDecoder() in ein Array decodieren.
    - Wie dieses Array aufgebaut ist bleibt Dir überlassen. Jedoch würde ich es so anlegen, dass es dem Datenmodell der Tabellen entspricht bzw. günstig (Handhabung) für Deine weitere Verarbeitung ist.

    Dies ist nur eine von vielen Vorgehensweisen. Deshalb ist es anzuraten sich vorher in aller Ruhe ein schlüssiges Konzept zu überlegen und nicht gleich mit der Codierung zu beginnen.
    Ich vermute mit SQL Statements sind die Befehle in Swift gemeint die in Verbindung mit dem SQL Dienst stehen? Bspw. die Quary oben?
    Von dem Part mit den unterschiedlichen Datenformaten habe ich ehrlich gesagt im Kontext mit meiner Swift Anwendung noch nie etwas gehört. Benötige ich das in meiner App?
    Tom
  • Tom16092 schrieb:

    Die Verbindung zwischen Xcode und dem Server besteht noch nicht da ich quasi erstmal "Trockenübungen" machen wollte. Aus einem älteren Projekt habe ich den Code einmal herausgesucht.

    ...

    Von dem Part mit den unterschiedlichen Datenformaten habe ich ehrlich gesagt im Kontext mit meiner Swift Anwendung noch nie etwas gehört. Benötige ich das in meiner App?
    Tom
    Es gibt mehrere Varianten wo bzw. wie die Datenhaltung stattfinden kann/soll.

    - Du verwendest den Begriff Server, unter dem ich folgendes verstehe. Dies ist ein Gerät mit eigenem Betriebssystem welches ein DB-System inkl. Management (wie auch immer dies konfiguriert ist) beherbergt. Verwaltung der Daten erfolgt dort i.d.R. mit SQL-Statements (-Befehlen). Diese Daten können aber auch zu Deiner App transportiert und in dieser weiter verarbeitet werden. Für den Transport werden die Daten i.d.R. in ein Format (gängige Formate hierfür sind XML bzw. JSON) eingebettet. Stichwort: Client-Server-Konzept. Ist etwas aufwendiger als ich dies hier in der Kürze beschreibe.

    - Nun kannst Du aber die Daten auch innerhalb einer App beherbergen und verwalten. Diese Tabellen, welche ebenfalls Deine Daten vorhalten können, verwenden hierzu dann SQL syntaktisch ähnliche Befehle. Diese Variante unterscheidet sich nicht nur konzeptionell von Datenbanksystem wie beispielsweise OCRACEL, MYSQL oder Maria.

    Die o.g. Möglichkeiten haben nicht viel Gemeinsamkeiten. Abhängig hiervon ist dann die Vorgehensweise zu wählen. Du musst Dir daher erst einmal ein Konzept überlegen bevor Du mit "Trockenübungen" beginnst. Wenn Deine Entscheidung gefallen ist, wäre es gut wenn Du Dein Konzept hier kurz erläuterst. Im Anschluss kann Dir dann gezielt geholfen werden.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von OSXDev ()

  • Ja, das sagt mir schon mehr. Ich glaube aber wir reden aneinander vorbei bzw. entfernen uns zu sehr vom eigentlich Problem. Ich hatte bisher die Daten in SQL in einer C2 Instanz bei AWS gespeichert und konnte diese dank der großartigen Unterstützung diverser Seiten sehr einfach und flexibel herunterladen. Das ganze ging über Parse, ich konnte also hier alles entnehmen: docs.parseplatform.org/ios/guide/#saving-objects

    Die Frage die ich persönlich habe ist, wie ich der App vermittle die Einzelnen Daten der Klasse zuzuordnen.

    Ich habe also ein Produkt zu dem immer die Werte Namen, Preis, ID und Quantity gehören. Diese Werte gehören in der Parse-Tabelle immer zusammen.

    Möglichkeit 1: Ich lade die Daten herunter und speichere in Arrays. Nun müsste ich die Daten in einer Klasse (wie oben) "products" wieder zusammenführen und den einzelnen Indikatoren zuordnen. Also Name des Produkts = productName.
    -> Hier weiß ich nicht wie ich das zuordnen in Swift erledige.

    Möglichkeit 2: Ich lade die Daten als Paket herunter. Also immer ein Produkt mit den oben genannten Werten. Dann das nächste. Diese lassen sich dann, wie auch immer, mithilfe der Klasse als Objekt zusammenführen und darstellen.
    -> Hier weiß ich weder wie ich die Daten gebündelt herunterlade (siehe Guide im Link), noch wie ich die Daten zusammenführe.


    Dementsprechend hatte ich mir überlegt den ersten Weg zu gehen da er mir deutlich leichter vorkommt. Ich lade die Daten also aus der Parse-Tabelle in Arrays... wie gehe ich nun weiter vor?

    Danke, Tom
  • Tom16092 schrieb:

    Möglichkeit 1: Ich lade die Daten herunter und speichere in Arrays. Nun müsste ich die Daten in einer Klasse (wie oben) "products" wieder zusammenführen und den einzelnen Indikatoren zuordnen. Also Name des Produkts = productName.
    -> Hier weiß ich nicht wie ich das zuordnen in Swift erledige.
    Ich verstehe ehrlich gesagt Dein Problem nicht:
    • In Deinem Code-Auszug oben mit PFQuery iterierst Du beim findObjectsInBackground über die Objekte aka User / Job, richtig? Hier ist Deine Benennung von Variablen übrigens sehr verwirrend: Warum nennst Du das von PMQuery gelieferte Array nicht direkt jobs?
    • Dass Du innerhalb dieser Schleife nicht x Arrays füllen müsstest, sondern stattdessen pro Objekt eine Instanz einer custom-Class mit entsprechenden Properties setzen und einem Array hinzufügen kannst, hatten wir ja schon.
    • Mit etwas Transferleistung könntest Du nun die User gedanklich durch ein Produkt ersetzen. Was hindert Dich, mit einer analogen Query alle Produkte abzufragen und diese in einem Array zu speichern?
    • Vollkommen unklar ist mir, was Du bei diesem Vorgang mit der "Zuordnung von Indikatoren" meinst.
    Du bist doch der Programmierer! Damit hast Du doch auch die Kontrolle, in welchen Strukturen Du Daten innerhalb Deiner App organisierst. Hierbei würde ich mich immer an der internen Verwendung orientieren: Bei Darstellung in einer TableView und Filter-Möglichkeiten bietet sich eben ein zentrales Array an. Oder bei größerem Umfang ein entsprechend gestaltetes Datenmodell in Core Data.

    Die Schnittstelle zu Deiner App ist ein ganz anderes Thema. Je nach Fragestellung / Umfang / Architektur kannst Du Daten en bloc aus einem Backend abfragen. Oder vielleicht asynchron im Hintergrund bei Bedarf (z. B. Blättern in der TableView) ... mit Caching oder ohne. Oder, oder oder...

    Ich habe - nimm' es mir nicht übel - den Eindruck, dass Du versuchst, zu große Schritte auf einmal zu machen. Solange Dir nicht die Grundzüge von Datenstrukturen klar sind, solltest Du vielleicht mit der Verwendung von fremden Klassen zur Backend-Anbindung etwas zurückhaltend sein: Einfach nur Code einer SDK-Dokumentation zu verwenden (ohne dessen Funktionsweise / Hintergrund verstanden zu haben), ist eher kontraproduktiv.

    Zurück zu meinem ursprünglichen Rat: Schieb die Tastatur beiseite, nimm' Papier und Bleistift und male Dir einmal auf:
    1. Wie sind die Daten im Backend strukturiert?
    2. Welche Schnittstelle verwende ich, in welcher/-en Struktur/-en sind die Daten abrufbar?
    3. Was möchte ich in der App mit den Daten machen, wie müssten sie dafür am besten strukturiert sein?
    Nun brauchst Du diese Aspekte "nur noch" gedanklich verbinden, dann weisst Du auch, wie die die Daten abrufen und ggfs. aggregieren / transformieren musst. Software-Entwicklung ist nur zu einem (vergleichsweise) kleinen Teil coden ... und gerade am Anfang stört dieser mehr als er nutzt.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von MyMattes () aus folgendem Grund: Verwirrung bzgl. PMQuery-Result geklärt.

  • Die Bezeichnungen habe ich verwendet um es leichter zu machen den Code zu verstehen. Wir haben verschiedene Kategorien von Jobs, deshalb die Kategorie-Abkürzung vor der Bezeichnung.

    Der zweite von dir angesprochene Punkt ist genau der, den ich nicht verstehe...also die Umsetzung in Swift...
    -> Das wir nicht mehr einzelne Arrays für die einzelnen Werte nehmen habe ich verstanden. Die Klasse, die wir brauchen um die Werte in Objects zu verwandeln habe ich bereits erstellt. Wie bekomme ich in der Quary jetzt die Wert in die Klasse?

    Mit den Indikatoren waren in dem Fall jetzt nur gemeint: Name, ID, Preis usw., etwas umständlich formuliert.

    Zu den letzten drei Punkten habe ich mal ein bisschen gemalt und bin auf folgende Ideen gekommen:

    1. Die Daten sind hier in Form einer Tabelle geordnet. Also zur Spalte 1 gehört ein Name, eine ID, ein Preis und eine Quantity. Das selbe gilt für x Spalten der Tabelle.

    2. Keine Ahnung...hier liegt das Problem wie oben genannt. -> Wie verändere ich den Code das ich die Werte mithilfe der Quary zusammenführen kann und dann in einem Array speichere? Die Darstellung im Table View ist bis dato kein Problem gewesen.

    3. Die Produkte sollten, um möglichst simpel den Table-View füllen zu können, in einem Array gespeichert werden. Hier kann man sie dann sehr gut abgreifen und in den Table View eintragen.

    Danke, Tom
  • Warum ersetzt Du bei Deinem Code-Beispiel oben nicht

    Quellcode

    1. self.objectsIds.append(job.objectId!)
    2. self.AGusers.append(job["AGuser"] as! String)
    3. [...]
    durch das Instanzieren des product-Objektes und fügst das am Ende dem Array hinzu?

    Einer von uns steht gerade ziemlich auf'm Schlauch ... vielleicht übersehe ich auch etwas oder wir reden komplett aneinander vorbei :)

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • MyMattes schrieb:

    ...

    Einer von uns steht gerade ziemlich auf'm Schlauch ... vielleicht übersehe ich auch etwas oder wir reden komplett aneinander vorbei :)
    @MyMattes: Das glaube ich nicht.

    Die Problematik welche bei den meisten Anfänger auftritt ist, dass man sich nicht wirklich die Zeit nimmt, um in aller Ruhe das Stoffgebiet zu studieren. In vielen Büchern werden Codebeispiele zur Erklärung herangezogen und leider nicht immer jede Zeile detailliert erläutert und hier liegt genau die Crux. Anfängern fällt es dann hin und wieder schwer, die einzelnen Schritte nachzuvollziehen. Da das Ergebnis meist vorweg detailliert erläutert wird, ist man geneigt den Prozess zum Ergebnis nicht weiter zu hinterfragen und genau hier treten dann die Herausforderungen bei der Eigenentwicklungen auf. Aus diesem Grund verwenden wir hier mehrere Bücher für ein Thema und dennoch bleiben Fragen offen. Diese stellen wir dann in diesem hilfreichem Forum zur Diskussion.

    @Tom16092: Mal so ins Grüne gefragt. Meinst Du nicht, Du wärst gut beraten, Dir ein Buch zuzulegen, welches die Grundlagen der Datenhandhabung erläutert? Jeder ist bemüht Dir hier helfend zur Seite zu stehen, jedoch wäre es ratsam, dass Du Dir das Basiswissen anliest. Autodidaktisch ermitteltes Wissen sitzt in der Regel tiefer im Gedächtnis. Mit größerem Wissen lässt sich ein Algorithmus auch effizienter gestalten. Der Einsatz von fremden Sourcecode verkürzt nur dann wirklich die Entwicklungszeit, wenn ausreichend Wissen vorhanden ist.
  • Hallo,
    ich hatte mir jetzt mal ein paar Tage darüber Gedanken gemacht und den Vorschlag von @MyMattes verstanden. Das war genau der Punkt den ich nicht verstanden hatte, dachte nicht dass man das einfach dort einsetzen kann. In Code übersetzte ich das etwa so:


    Quellcode

    1. func retrieveJobs() {
    2. let query = PFQuery(className:"products")
    3. query.findObjectsInBackground { (objects, error) in
    4. if let users = objects {
    5. for prod in users {
    6. self.productArray.append(product(name: prod["productname"] as! String, id: prod["productid"] as! String, price: prod["productprice"] as! String, quantity: prod["productquantity"] as! String))
    7. self.productTabelView.reloadData()
    8. }
    9. }
    10. }
    11. }
    Alles anzeigen
    Funktionieren tut das ganze zwar noch immer nicht so wirklich aber zumindest das integrieren der Funktion hat geklappt. Die App bekommt aktuell noch keine Daten...da muss ich mal schauen. Wenn da noch einer eine Idee oder einen Fehler sieht dann meldet euch bitte.

    Vielen Dank für Eure Hilfe!
    Tom