2016-03-24 4 views
0

У меня есть небольшая проблема, которую я не понимаю.NSData length - Неявное преобразование теряет целую точность

Я смотрел в Интернете, но я не вижу, где моя ошибка.

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' (он же 'неподписанных долгое') к 'межд'

+0

Прочитать сообщение об ошибке. Решение прямо перед вашими глазами. Компилятор рассказал вам, что делать. – gnasher729

ответ

1

Обратите внимание, что тип вашей 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]; 
} 
Смежные вопросы