Ios 如何使用respondsToSelector验证Swift 4中HomeKit中的值的方法字节
下面是我要转换成Swift 4的代码, 我可以看到响应选择器:在Swift 4中不可用 下面是运行正常的Objective-c代码: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
-(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())
}
}