Ich habe ein Array von Objekten namens array
und sein Typ ist votes
. In den Objekten des Arrays gibt es ein Feld namens nameSubject
, das ein String ist. Wie kann ich mein Array und die Zeichenfolge übergeben, die ich mit dem Namen des Betreffs vergleichen möchte? Dies ist meine Funktion:Binäre Suche: Fehler beim Übergeben des Arrays
static func binarySearch(inputArr: [votes], searchItem: String)->Int?{
var lowerIndex = 0;
var upperIndex = inputArr.count - 1
while (true) {
var currentIndex = (lowerIndex + upperIndex)/2
if(inputArr[currentIndex] == searchItem) {
return currentIndex
} else if (lowerIndex > upperIndex) {
return nil
} else {
if (inputArr[currentIndex] > searchItem) {
upperIndex = currentIndex - 1
} else {
lowerIndex = currentIndex + 1
}
}
}
}
Der Fehler ist in der ersten und in der zweiten if
und sagt dies: Binary Operator ‚==‘ kann nicht auf Operanden vom Typ ‚Stimmen‘ und ‚String‘“angewendet werden
Was möchten Sie in der zweiten else-Anweisung tun? –
Wenn Sie das oft machen, ist es besser, ein Dictionary Mapping 'nameSubject' zu' votes' Objekten zu machen – Alexander
Nebenbei bemerkt, Swifts Konvention besteht aus UpperCamelCase, singulären Typen wie 'Vote' – Alexander