"Mehrdeutiger Verweis auf member map" beim Versuch, append/replace array element
Mehrere SO Beiträge wie diese befassen sich mit der gleichen Fehlermeldung, aber keine dieser Lösungen funktionieren. Es scheint, wie dies ein Fall einer irreführenden Fehlermeldung.
Den code unten erzeugt ein "Mehrdeutiger Verweis auf member map" - Fehler für die Karte nennen.
Wer weiß, warum?
func saveUser(user: User) {
var userDicts = masterDict["users"] as! [[String:AnyObject]]
let newDict = user.getDict()
//Replace matching element with <newDict>
let replaced = false
masterDict["users"] = userDicts.map {
if ($0["id"] as String! == user.getId()) {
replaced = true
return newDict
} else {
return $0 as [String:AnyObject]
}
}
//If no match found, means must add new user
if (!replaced) {
userDicts.append(newDict)
}
}
Wie es scheint, swift ist eine harte Zeit Herleitung geben für die Karte. versuchen
Auch, welche version von Xcode verwenden Sie, ich kann nicht scheinen, um zu replizieren, die Ihre genauen Fehler, und der erste Fehler den ich sehe, ist "change ersetzt werden, um eine var", so dass Sie vielleicht brauchen, zu aktualisieren Xcode. Ich bin derzeit auf 7,2
Es ist nicht das wichtigste problem, aber
sorry, du hast Recht. dies war eine bereinigte version und vergessen, zu ersetzen, die
userDicts.map {val -> [String:AnyObject] in
- und swap-out $0
für val
Auch, welche version von Xcode verwenden Sie, ich kann nicht scheinen, um zu replizieren, die Ihre genauen Fehler, und der erste Fehler den ich sehe, ist "change ersetzt werden, um eine var", so dass Sie vielleicht brauchen, zu aktualisieren Xcode. Ich bin derzeit auf 7,2
Es ist nicht das wichtigste problem, aber
replaced
sollte ein var
kein let
sorry, du hast Recht. dies war eine bereinigte version und vergessen, zu ersetzen, die
let
für replaced
aber sonst ist alles das gleiche. Mit Xcode 7.2.
InformationsquelleAutor Crashalot | 2015-12-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider, swift ist nicht perfekt und kann sich nicht entnehmen Arten zu allen Zeiten, das ist, warum Sie immer die mehrdeutigen Verweis. Versuchen
userDicts.map {val -> [String:AnyObject] in
- und swap-out$0
fürval
Dies explizit mitzuteilen, die anzeigen, dass die Werte kommen in[String:AnyObject]
, und sollte in der Lage sein, um zurückzukehren, sagte der TypInformationsquelleAutor Knight0fDragon
Niemals isoliert die Ursache des Fehlers, so wechselte mit einem
for
Schleife, erstellen Sie ein neues array innerhalb der Schleife, und ruftmasterDict["users"] = newArray
nach der Schleife. Nicht das sauberste, aber es behebt die Fehler.Oh sorry, wusste nicht, siehe den Kommentar. Versuchen Sie es und lassen Sie wissen.
Ja, dass scheint zu funktionieren. Könnten Sie die post wie eine Antwort, so können Sie den Kredit erhalten?
InformationsquelleAutor Crashalot