Ich habe derzeit eine Funktion, die eine Uhrzeit aus einer Datenbank sammelt und für andere Funktionen zurückgibt. Es benötigt einen Parameter, der in einem anderen Teil der App gespeichert wird, um den Wert aus der Datenbank zu sammeln.Mehrere Parameter für eine IBAction-Funktion
Mein Problem kommt, wenn ich diese Funktion innerhalb einer IBAction-Funktion aufrufen möchte.
Hier ist mein Code für die Funktion:
func getDBValue(place: GMSPlace) -> Int {
var expectedValue = 0
databaseRef.child("values").child(place.placeID).observe(.value, with: { (snapshot) in
let currentValue = snapshot.value as? [Int]
if currentValue == nil {
self.noValue()
expectedValue = 0
} else {
let sumValue = currentValue?.reduce(0, +)
let avgValue = sumValue!/(currentValue?.count)!
print("The current value is \(String(describing: avgValue))")
expectedValue = avgValue
self.valueLabel.text = String(describing: avgValue)
}
})
print("This is the expected WT: \(expectedWaitTime)")
return expectedValue
}
Und hier ist mein Code für meine IBAction Funktion, die Probleme mit mehreren Parametern mit:
@IBAction func addValuePressed(_ sender: Any, place: GMSPlace) {
print("This is the place ID: \(place.placeID)")
var expectedValue = getDBValue(place: place)
expectedValue = expectedValue + 1
print("The expectedValue is now: \(expectedValue)")
self.valueLabel.text = String(describing: expectedValue)
}
Das gibt mir einen libc++abi.dylib: terminating with uncaught exception of type NSException (lldb)
Fehler. Nach einigen Tests scheint der Fehler durch den hinzugefügten Parameter place: GMSPlace
in meiner IBAction-Funktion verursacht worden zu sein. Irgendwelche Gedanken darüber, wie das zu beheben ist?
Sie können einer IBAction keine Parameter hinzufügen. Zeitraum. Die üblichen Problemumgehungen sind je nach Ihren Bedürfnissen: (1) Verwenden Sie die Tag-Eigenschaft (es ist ein "Int"), um anzugeben, welcher Absender aufgerufen wurde, oder (2) machen Sie Ihre "GMSPlace" -Instanz in der IBAction verfügbar. – dfd