Ich versuche den Zielwert einer Aktion zu aktualisieren (HMCharacteristicWriteAction
), aber es stürzt immer mit EXC_BAD_ACCESS ab (Code = 1, Adresse = 0x50).swift - HomeKit updateTargetValue von HMCharacteristicWriteAction stürzt ab
Mein Code-Schnipsel:
print("\(action) --> \(action.dynamicType)") // <HMCharacteristicWriteAction: 0x14cf7ba20> --> HMCharacteristicWriteAction
print("current: \(action.targetValue)") // current: 1
print("next: \(value) --> \(value.dynamicType)") // next: 0 --> Int
action.updateTargetValue(value, completionHandler: { [weak self] error -> Void in
if let error = error {
// display some message
return
}
// do something else when succeeded
})
Wie Sie sehen, action
ist nicht gleich Null und der richtige Typ (HMCharacteristicWriteAction
). Ich kann seine targetValue
erfolgreich lesen.
Ich analysierte das Projekt mit Product - Analyze
, alles ist in Ordnung (keine Warnungen). Ich habe auch Zombie in Scheme - Diagnostics
aktiviert, aber immer noch kein Glück.
Nach updateTargetValue
Dokumentation:
/*!
* @brief This method is used to change target value for the characteristic.
*
* @param targetValue New target value for the characteristic.
*
* @param completion Block that is invoked once the request is processed.
* The NSError provides more information on the status of the request, error
* will be nil on success.
*/
public func updateTargetValue(targetValue: NSCopying, completionHandler completion: (NSError?) -> Void)
Was mich verwirrt ist targetValue: NSCopying
. Ist der Typ Int
von value
"NSCopying" konform? Ich habe value as NSCopying
für targetValue
versucht, aber es ist nicht besser.
Könnten Sie mir bitte zeigen, wie Sie dieses Problem lösen können? Ist es in Ordnung, eine Int
zu targetValue
zu übergeben? Was könnte diesen Absturz verursachen?
Vielen Dank.
hallo Maria, ich habe NSNumber versuchen verwenden zu konvertieren, aber die Dinge nicht verbessert. Mein Code ist 'let targetValue = NSNumber (integer: value)', dann 'actionSet.updateTargetValue (targetValue, ... '-> stürzt immer noch mit' EXC_BAD_ACCESS ab (code = 1, address = 0x50) '. – quanguyen