簡體   English   中英

如何從NSMutableData對象的末尾刪除字節

[英]How to remove bytes from the end of NSMutableData object

我有一個NSMutableData對象,給我一些麻煩,我試圖從這個對象中刪除最后6個字節

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

我之前從未嘗試過這樣做,並且已經離開了我調查過的其他回答,但是我無法讓這個工作......任何幫助將不勝感激。

您的第一行是無用的,因為您在第二行重新定義reducedDataPacket,因此應刪除第一行。 我猜測myCompressedData是NSData而不是NSMutableData,所以將第二行更改為:

NSMutableData *reducedDataPacket = [myCompressedData mutableCopy];

首先,您需要一個可變實例,不清楚為什么要創建一個然后復制它。 你應該這樣做:

NSMutableData *reducedDataPacket = [myCompressedData mutableCopy];

然后你想減少長度,而不是試圖填充部分數據:

[reducedDataPacket setLength:(reducedDataPacket.length - 6)];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM