2016-03-21 6 views
0

アクションのターゲット値(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を試しましたが、それは良くありません。

この問題の解決方法を教えてください。 InttargetValueに渡してもよろしいですか?何がこのクラッシュを引き起こす可能性がありますか?

ありがとうございます。

答えて

0

IntがNSCopyingに準拠していない場合は、代わりにNSCopyingに準拠するNSNumberを使用します。 NSNumberへのIntに変換するために

がhi

[NSNumber numberWithInt:(int)]; 

または

SWIFT 
    init(int value: Int32) 
OBJECTIVE-C 
- (NSNumber *)initWithInt:(int)value 
+0

を使用マリア、私がするNSNumberを試しましたが、物事が改善されていません。私のコードは 'let targetValue = NSNumber(integer:value)'です。その後、 'actionSet.updateTargetValue(targetValue、...' - > 'EXC_BAD_ACCESS(code = 1、address = 0x50)'でクラッシュします。 – quanguyen

関連する問題