Ios 如何使用respondsToSelector验证Swift 4中HomeKit中的值的方法字节

Ios 如何使用respondsToSelector验证Swift 4中HomeKit中的值的方法字节,ios,swift,swift3,swift4,homekit,Ios,Swift,Swift3,Swift4,Homekit,下面是我要转换成Swift 4的代码, 我可以看到响应选择器:在Swift 4中不可用 下面是运行正常的Objective-c代码: -(id)getValueFromHomeKitValue:(id)homeKitValue{ if ( [homeKitValue respondsToSelector:@selector(bytes)] ){ NSData * data = (NSData *) homeKitValue; uint64_t value = *(u

下面是我要转换成Swift 4的代码, 我可以看到响应选择器:在Swift 4中不可用

下面是运行正常的Objective-c代码:

-(id)getValueFromHomeKitValue:(id)homeKitValue{
 if ( [homeKitValue respondsToSelector:@selector(bytes)] ){
       NSData * data = (NSData *) homeKitValue;
       uint64_t value = *(uint8_t*)[homeKitValue bytes];
       return value;
   }
}

我相信在swift 4中,“Any”类型的值没有成员“responses”。尝试使用您的解决方案出现错误您能解释一下您的使用案例吗?我将尝试根据您的解决方案进行操作。在家庭套件配对时,我将从家庭套件代表那里获得价值。1.需要检查值是否具有字节方法2。如果是,则转换为数据类型并分配给uint64_t value=(uint8_t)[homeKitValue字节];在Swift4中,从字节到UInt64的转换是不同的,这是我无法实现的
  func getValueFromHomeKitValue(_ homeKitValue: Any?) -> Any? {
    if homeKitValue?.responds(to: #selector(self.bytes)) ?? false {
      let data = homeKitValue as? Data
      return UInt8(homeKitValue?.bytes())
    }
  }