我有一个我不明白的小问题。
我在互联网上看过,但看不到我的错误在哪里。
id manufacturerData = [advertisementData objectForKey:CBAdvertisementDataManufacturerDataKey];
if (manufacturerData) {
const uint8_t *bytes = [manufacturerData bytes];
int len = [manufacturerData length];
// skip manufacturer uuid
NSData *data = [NSData dataWithBytes:bytes+2 length:len-2];
隐式转换将失去整数精度:将'NSUInteger'(aka'unsigned long')转换为'int'
最佳答案
请注意,您的manufacturerData
变量的类型应为NSData
,而不是id
。
查看NSData
的文档。 length
属性的返回类型是什么?现在查看您使用的类型。看到不同?
始终使用正确的数据类型。
您也可以使用subdataWithRange:
方法而不是字节。
NSData *manufacturerData = [advertisementData objectForKey:CBAdvertisementDataManufacturerDataKey];
if (manufacturerData) {
NSUInteger len = [manufacturerData length];
// skip manufacturer uuid
NSRange *dataRange = NSMakeRange(2, len - 2);
NSData *data = [manufacturerData subdataWithRange:dataRange];
}
关于ios - NSData长度-隐式转换失去整数精度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36202366/