2017-03-04 4 views
-3

Ich versuche eine App zu erstellen, mit der potenzielle Krankheiten anhand von Symptomen identifiziert werden können. Es gibt eine Liste von Symptomen, die der App-Benutzer auswählt, indem er ein Häkchen neben jedes Symptom setzt, das er gerade erlebt.SWIFT 3 - Filtern von Wörterbuchwerten mit myUserSelectedArray

myDictionary wird repräsentieren zwanzig verschiedenen Krankheiten (Schlüssel) mit assoziierten Symptomen (Werte)

myUserSelectedArray werden die Symptome, die der Benutzer auswählt.

Die Liste der den Benutzer präsentierten Symptome zur Auswahl sind die Kombination von allen Symptomen (Werte) von den verschiedenen Krankheiten (Schlüssel) von myDictionary

Die App dem Benutzer der Top-5-Erkrankungen zeigen, dass Sie können möglicherweise basierend auf ihren Symptomen haben und es zeigt den Prozentsatz der Symptome für jede Krankheit angepasst. Beispielsweise könnte die App dem Benutzer Folgendes anzeigen: 1) Grippe: 50% Symptomübereinstimmung; 2) Sinus-Infektion: 40% Symptom-Übereinstimmung; 3) Strep Throat: 20% Symptomübereinstimmung; 4) Ohrinfektion: 10% Symptomübereinstimmung; 5) Kehlkopfkrebs: 5% Symptomübereinstimmung

Wie würde ich richtig myDictionary mit myUserSelectedArray filtern, um diese Ergebnisse zu erzielen?

Alle Code Vorschläge würden sehr geschätzt werden. Ich bin neu in der Entwicklung von Apps, aber ich habe viele verschiedene Ideen.

Antwort

0

Ich würde empfehlen, ein zusätzliches Wörterbuch für die Auflistung aller Symptome für eine bestimmte Krankheit einzustellen und myDictionary umzukehren. Sie hätten also insgesamt drei Datenstrukturen: illnessesToSymptoms, symptomsToIllnesses, userSymptoms.

Zum Beispiel:

let illnessesToSymptoms = [ 
    "flu" : ["fever", "runny nose", "chills"], 
    "strep throat" : ["fever", "aches", "sore throat"], 
    "ear infection" : ["ear pain"] 
] 

let symptomsToIllnesses = [ 
    "fever" : ["flu", "strep throat"], 
    "runny nose" : ["flu"], 
    "aches" : ["strep throat"], 
    "ear pain" : ["ear infection"] 
] 

let userSymptoms = ["fever", "runny nose"] 

diese Weise können Sie ein neues Wörterbuch mit Informationen erzeugen können, die verwendet werden können, diese Wahrscheinlichkeiten zu berechnen.

var possibleIllnesses = [String : Int]() 

for userSymp in userSymptoms { 
    guard let ills = symptomsToIllnesses[userSymp] else { continue } 
    for ill in ills { 
     guard let _ = possibleIllnesses[ill] else { 
      possibleIllnesses[ill] = 1 
      continue 
     } 
     possibleIllnesses[ill]! += 1 
    } 
} 

Und von dort ist es einfach, die Chancen zu finden.

for (illness, count) in possibleIllnesses { 
    let chance = Double(count)/Double(illnessesToSymptoms[illness]!.count) * 100 
    print("There is a \(chance)% they have \(illness)") 
} 

Für das obige Beispiel, diese Drucke:

There is a 33.3333333333333% they have strep throat 
There is a 66.6666666666667% they have flu 
+0

Hallo Stephan, vielen Dank für die Hilfe. Empfiehlst du irgendwelche Lernprogramme, die dir geholfen haben Swift und/oder Android Code für mobile Apps zu lernen? – salanthonyc

+0

@salanthonyc Es gibt einige spezielle Anleitungen da draußen, aber ich würde empfehlen, selbst zu springen. Versuchen Sie, einige kleine Apps anzugehen, die Sie verwenden möchten. Sie werden auf dem Weg Herausforderungen begegnen, aber ich denke, es ist der beste Weg zu lernen. – Stephen