2016-03-24 1 views
0

私には分かりませんが少し問題があります。NSDataの長さ - 暗黙の変換で整数精度が失われる

私はインターネットで見ましたが、どこが間違っているのかわかりません。

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]; 

暗黙的な変換は整数精度を失う:(別名 'unsigned long型') 'NSUInteger' 'int型

+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]; 
} 
関連する問題