アクションのターゲット値(HMCharacteristicWriteAction
)を更新しようとしていますが、EXC_BAD_ACCESS(コード= 1、アドレス= 0x50)で常にクラッシュします。swift - HomeKit update HMCharacteristicWriteActionのターゲット値がクラッシュする
マイコードスニペット:
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
})
見ての通り、action
がnilと正しいタイプ(HMCharacteristicWriteAction
)ではありません。私はそのtargetValue
を正常に読むことができます。
私はProduct - Analyze
を使用してプロジェクトを分析しましたが、すべてがOKです(警告はありません)。私もScheme - Diagnostics
でゾンビを有効にしましたが、まだ運がありません。
updateTargetValue
ドキュメントによると:私を混乱させる何
/*!
* @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)
がtargetValue: NSCopying
です。 Int
のタイプはvalue
で、「NSCopying」に適合していますか?私はのためにvalue as NSCopying
を試しましたが、それは良くありません。
この問題の解決方法を教えてください。 Int
をtargetValue
に渡してもよろしいですか?何がこのクラッシュを引き起こす可能性がありますか?
ありがとうございます。
を使用マリア、私がするNSNumberを試しましたが、物事が改善されていません。私のコードは 'let targetValue = NSNumber(integer:value)'です。その後、 'actionSet.updateTargetValue(targetValue、...' - > 'EXC_BAD_ACCESS(code = 1、address = 0x50)'でクラッシュします。 – quanguyen