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:
Alles anzeigen
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
- import UIKit
- class product {
- var productName = [""]
- var productID = [""]
- var productPrice = [""]
- var productQuantity = [""]
- init(name: Array<String>, id: Array<String>, price: Array<String>, quantity: Array<String>) {
- self.productName = name
- self.productID = id
- self.productPrice = price
- self.productQuantity = quantity
- }
- }
- struct auto {
- var name = [""]
- var id = [""]
- var price = [""]
- }
- class ProdukteController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate {
- var searchProduct = [String]()
- var searching = false
- var personalN13 = TransferN13.globalVariableN13.personalN13
- //Connections
- @IBOutlet var productSearchBar: UISearchBar!
- @IBOutlet weak var productTabelView: UITableView!
- override func viewDidLoad() {
- super.viewDidLoad()
- productTabelView.delegate = self
- productTabelView.dataSource = self
- productSearchBar.delegate = self
- if personalN13 != "" {
- productSearchBar.text = personalN13
- }else {
- productSearchBar.text = ""
- }
- }
- //Folgendes damit die Tastatur herunterfährt
- override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
- self.view.endEditing(true)
- }
- @objc func dismissKeyboard() {
- view.endEditing(true)
- }
- //Data
- //producer 1
- let products = ["Produkt 1", "Produkt 2", "Produkt 3", "Produkt 4", "Produkt 5", "Produkt 6", "Produkt 7", "Produkt 8", "Produkt 9", "Produkt 10"]
- let productIDs = ["8237464728346", "1647863429343", "934284763427", "36172831636", "7891273812354", "9783121041312", "9283645475349", "8762350981643", "0916254094756", "1827450982764"]
- let productPrices = ["14,99€", "5,79€", "4,99€", "9,59€", "29,89", "1,79€", "15,49€", "3,99€", "94,59€", "9,79"]
- let productQuantities = ["12", "34", "218", "8", "3", "98", "4", "18", "81", "14"]
- func numberOfSections(in tableView: UITableView) -> Int {
- return 1
- }
- func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- if searching {
- return searchProduct.count
- }else {
- return 10
- }
- }
- func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let productCell = tableView.dequeueReusableCell(withIdentifier: "productCell", for: indexPath) as? ProduktCell
- productCell?.selectionStyle = UITableViewCell.SelectionStyle.none
- if searching {
- productCell?.productID?.text = searchProduct[indexPath.row]
- }else {
- productCell?.productName.text = products[indexPath.row]
- productCell?.productID.text = productIDs[indexPath.row]
- productCell?.productPrice.text = productPrices[indexPath.row]
- productCell?.productQuantity.text = productQuantities[indexPath.row]
- }
- return productCell!
- }
- func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
- return 80
- }
- func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
- self.view.endEditing(true)
- }
- //Für die Suchfunktion
- func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
- searchProduct = productIDs.filter({$0.prefix(searchText.count) == searchText})
- searching = true
- productTabelView.reloadData()
- }
- func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
- searching = false
- searchBar.text = ""
- productTabelView.reloadData()
- }
- }