2013-07-15 64 views
0

我有一個是給我一些麻煩NSMutableData對象,我想從對象中刪除的最後6個字節這樣如何從NSMutableData對象的結尾處,刪除字節

NSMutableData *reducedDataPacket = [[NSMutableData alloc] init]; 
     reducedDataPacket = [myCompressedData copy]; 

NSRange range = NSMakeRange([reducedDataPacket length]-6, 6); 
     [reducedDataPacket replaceBytesInRange:range withBytes:NULL length:0]; 

然而,一旦最後行執行我的應用程序崩潰,我留下了下面的這個錯誤。

-[NSConcreteData replaceBytesInRange:withBytes:length:]: unrecognized selector sent to instance 0x1f037870 
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteData replaceBytesInRange:withBytes:length:]: unrecognized selector sent to instance 0x1f037870 

我從來沒有嘗試過這樣做的,已經快要斷供其他answeres我已經調查了,但我不能得到這個工作...任何幫助將不勝感激。

回答

2

您的第一行無用,因爲您在第二行重新定義了reducedDataPacket,因此應刪除第一行。我猜測,myCompressedData是NSData的,而不是NSMutableData,因此更改第二行:你需要一個可變實例

NSMutableData *reducedDataPacket = [myCompressedData mutableCopy]; 
+0

GAAAAA!幾乎已經.. ..大聲笑感謝您的快速答案將標記爲正確的時間限制約9分鐘後:P – HurkNburkS

0

首先,爲什麼你創建一個,然後將其複製,目前尚不清楚。你應該只是做:

NSMutableData *reducedDataPacket = [myCompressedData mutableCopy]; 

然後要減少長度,而不是試圖以填補沒有數據的一部分:

[reducedDataPacket setLength:(reducedDataPacket.length - 6)]; 
相關問題