NSData 长度 - 隐式转换会丢失整数精度
NSData length - Implicit conversion loses integer precision
有个小问题没看懂
我上网查了一下,没看出我哪里错了。
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];
Implicit conversion loses integer precision: 'NSUInteger' (aka 'unsigned long') to 'int'
请注意,您的 manufacturerData
变量的类型应该是 NSData
,而不是 id
。
查看 NSData
的文档。 length
属性 的 return 类型是什么?现在看看你使用的类型。看出区别了吗?
始终使用正确的数据类型。
您也可以使用 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];
}
有个小问题没看懂
我上网查了一下,没看出我哪里错了。
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];
Implicit conversion loses integer precision: 'NSUInteger' (aka 'unsigned long') to 'int'
请注意,您的 manufacturerData
变量的类型应该是 NSData
,而不是 id
。
查看 NSData
的文档。 length
属性 的 return 类型是什么?现在看看你使用的类型。看出区别了吗?
始终使用正确的数据类型。
您也可以使用 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];
}