2014-07-08 3 views
3

NSMutableData 맨 앞에 바이트를 삽입하려면 어떻게해야합니까? replaceBytesInRange: 메서드가 있다는 것을 알고 있지만 바이트 만 대체합니다. insertXAtIndex: 개의 메소드가 있지만 바이트는 없습니다. 어떻게해야합니까? 내가 이것을 생각할 수있는 한 가지 방법은 다음과 같습니다.앞에 NSMutableData 바이트를 삽입하십시오.

NSMutableData *theData = [NSMutableData dataWithBytes:myByte]; 
[theData appendData:myOriginalData]; 
myOriginalData = nil; 

그러나 더 좋은 방법이 있어야합니다.

나는 또한이 시도했지만 작동하지 않았다 :

char *sec = "Second!"; 
char *fir = "First!"; 

NSMutableData *theData = [NSMutableData dataWithBytes:(const void *)sec length:7]; 
[theData replaceBytesInRange:NSMakeRange(0, 0) withBytes:(const void *)fir]; 

NSString *str1 = [[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding]; 
NSLog(@"%@", str1); //Prints "Second!" 
+0

나는 replaceBytesInRange : withBytes :'를 사용했지만 길이가 0 인 범위를 지정하려고하지 않았습니까? – rmaddy

+0

@rmaddy 나는 그것을 시도했지만 역시 작동하지 않았다. 내 편집 내용을보고 내가 의미 한 바를 알고 있는지 확인하십시오. – Milo

+0

나는 그것이 작동하지 않을 것 같아요. 'withBytes :'매개 변수에서 가져올 바이트 수를 알기 위해서는 범위 길이를 조사해야합니다. – rmaddy

답변

5
[theData replaceBytesInRange:NSMakeRange(0, 0) withBytes:(const void *)fir length:strlen(fir)]; 

트릭을 할해야한다.

+0

아니요. 두 번째를 바꿉니다! First!와 함께. – Milo

+0

아, strlen에 잘못된 문자열이 있습니다. 이제 "First! Second!"가 인쇄됩니다. 나를 위해. –

+0

고맙습니다. – Milo