Использование substringFromIndex: с NSData - PullRequest
2 голосов
/ 23 августа 2011

Я работаю над объектом NSData, который составляет 4840 байтов, и хочу опустить первые 20 байтов и получить остальные. Методы подстроки substringFromIndex: / substringToIndex: применимы к NSData?

Ответы [ 3 ]

5 голосов
/ 23 августа 2011

Вы близки, NSData имеет метод subdataWithRange:.Вы можете создать диапазон с помощью функции NSMakeRange, а затем использовать этот диапазон для получения NSData обрезки по своему усмотрению.

Пример:

// Create NSData
NSString* myString = @"Lorem ipsum dolor sit amet, consectetur cras amet.";
NSData*   myData   = [myString dataUsingEncoding:NSUTF8StringEncoding];
if (myData != nil && myData.length > 20) {

  // Create trimmed NSData
  NSData* newData = [myData subdataWithRange:NSMakeRange(20, myData.length - 20)];
  if (newData != nil) {

    // Test
    NSString* newString = [[NSString alloc] initWithData: newData 
                                                encoding: NSUTF8StringEncoding];
    NSLog(@"%@", newString);
    // -> "t amet, consectetur cras amet."
  }
}
3 голосов
/ 23 августа 2011

Читая документацию для NSData, там есть метод, который позволит вам указать диапазон байтов: -getBytes:range:. Используйте NSMakeRange() для установки диапазона.

2 голосов
/ 23 августа 2011
- (NSData *)subdataWithRange:(NSRange)range;
...