Flatmap für Suchfunktion verwenden

128K

Ich habe ein Array, das in eine TableView geladen wird.

var sections = [

        Section(sec: "One",
                subSec: ["A", "B", "C", "D", "E"],
                expanded: false),

        Section(sec: "Two",
                subSec: ["A", "B", "C", "D", "E"],
                expanded: false),

        Section(sec: "Three",
                subSec: ["A", "B", "C", "D", "E"],
                expanded: false),

Hier ist die Definition für die Abschnitte:

struct Section {
    var sec: String!
    var subSec: [String]! // [ ] = Array of Strings
    var expanded: Bool!

    init(sec: String, subSec: [String], expanded: Bool) {
        self.sec = sec
        self.subSec = subSec
        self.expanded = expanded
    }
}

Ich versuche eine Suchfunktion aufzubauen. Es funktioniert für ein Standard-Array, aber nicht für meine Variable, da es komplexer ist. Ich habe (mit Hilfe) den Code mit Flatmap angepasst, weiß aber nicht, wie ich ihn den subSec-Strings zuordnen soll.

func filterContentForSearchText(_ searchText: String, scope: String = "All") {
        filtered = sections.flatMap{ return $0.subSec.lowercased().contains(searchText.lowercased()) ? $0.subSec : nil }

        tableView.reloadData()
    }

Der Fehler, den ich derzeit erhalte, ist: Value type [String] has no value lowercased

Zusatzcode:

var filtered = [Section]()
let searchController = UISearchController(searchResultsController: nil)
Adrian Bobrowski

Überprüfen Sie, ob eine Zeichenfolge eine andere Zeichenfolge enthält, ohne die Groß-/Kleinschreibung

baseText.range(
    of: searchText, options: .caseInsensitive, range: nil, locale: nil
) != nil

Code

Wenn Sie den gesamten Abschnitt erhalten möchten, müssen Sie nicht verwenden flatMap, verwenden Sie einfach afilter

var filtered: [Section] = []

func filterContentForSearchText(_ searchText: String, scope: String = "All") {
    filtered = sections.filter { section in
        section.subSec.contains { 
            $0.range(
                of: searchText, options: .caseInsensitive, range: nil, locale: nil
            ) != nil 
        }
    }
}

Aber wenn Sie in dem Abschnitt nur die Unterabschnitte haben möchten, die den gesuchten Text enthalten, dann

var filtered: [Section] = []

func filterContentForSearchText(_ searchText: String, scope: String = "All") {
    filtered = sections.map { section in
        var section = section
        section.subSec = section.subSec.filter {
            $0.range(
                of: searchText, options: .caseInsensitive, range: nil, locale: nil
            ) != nil
        }
        return section
    }
}

Aber wenn Sie nur Unterabschnitte wollen, dann

var filtered: [String] = []

func filterContentForSearchText(_ searchText: String, scope: String = "All") {
    filtered = sections.flatMap { section in
        section.subSec.filter {
            $0.range(
                of: searchText, options: .caseInsensitive, range: nil, locale: nil
            ) != nil
        }
    }
}

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

PDF.js - Verwenden der Suchfunktion für eingebettetes PDF

Verwenden von GET und POST für eine Suchfunktion in PHP

Suchfunktion für eine Laravel-Sammlung von Objekten verwenden, um den Schlüssel zurückzugeben?

Verwenden Sie eine Alternative für Flatmap in Javascript

Verwenden einer Suchfunktion in eckigen js

Suchfunktion für Mutation in Daten

Suchfunktion für json api

Suchfunktion für dynamische Eingabefelder

Suchfunktion in R.

Verwenden von R zum Herunterladen von URLs nach Linkname in einer Suchfunktion

Verwenden der Suchfunktion in Thymeleaf mit Anforderungsparametern

C # Verwenden der Excel-Suchfunktion

Wie kann ich die Suchfunktion in Laravel verwenden?

Suchfunktion für wiederholte Elemente in einem Array

Excel-Suchfunktion für Text

Suchfunktion für mehrere Felder mit SQL

Suchfunktion für doppelt verknüpfte Liste

Reagieren Sie Suchfunktion für Tabelle

Suchfunktion in der Aktionsleiste für Listenansicht

Ändern Sie die Suchfunktion für Datentabellen

JQuery Suchfunktion für div-Container

Können wir die scala flatMap-Methode nicht für die Liste der Ganzzahlen (dh) List [Int] verwenden?

Verwenden Sie die Suchfunktion, um Werte in Formeln zu suchen

Verwenden des Filters zum Ersetzen der Suchfunktion in Python

Verwenden von Python zur Verwendung der Suchfunktion einer Website

Fehler 91 bei Verwendung der Suchfunktion, Verwenden von ActiveCell?

Verwenden der Suchfunktion im Google-Skript-Array

Implementieren Sie die Suchfunktion für JPA und Spring Boot

Erstellen einer Suchfunktion mit React Native für Zomato API

TOP Liste

  1. 1

    Modbus Python Schneider PM5300

  2. 2

    Wie schließe ich mehrere Ordner mit der Variablen EXTRA_ARGS aus?

  3. 3

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

  4. 4

    Elasticsearch startet nicht nach dem Laden in viele Daten

  5. 5

    ElasticSearch - Knotensperren konnten nicht abgerufen werden

  6. 6

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  7. 7

    Eclipse Oxygen - Projekte verschwinden

  8. 8

    Wie kann ich den Kaskadenmodus global einstellen?

  9. 9

    ElasticSeach Auto Complete mit dem Vervollständigungsvorschlag, um das vollständige Dokument zurückzugeben

  10. 10

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  11. 11

    Bester Crawler, um festzustellen, ob er mit Technologien gebaut wurde?

  12. 12

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  13. 13

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  14. 14

    Wie füge ich eine Spalte in einer Zeile in der Ansible Jinja2-Vorlage mit der for-Schleife hinzu?

  15. 15

    Wie Verwenden von Httpclient mit jedem SSL-Zertifikat, egal wie „schlecht“ es ist

  16. 16

    Wie kann man eine Multi-Container-Anwendung in Steuerkarten erstellen?

  17. 17

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  18. 18

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  19. 19

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  20. 20

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  21. 21

    So erstellen Sie ein langes Etikett inline mit einem Eingabefeld

heißlabel

Archiv