开发者

NSData Behaving as a Consumable Data Stream. Possible?

I am currently doing a lot of data wrangling. I ingest a lloonngg NSData byte streams and then parse that d开发者_C百科ata. The parsing is trivial. However, I have to simulate consumption of the data as I parse via not particularly elegant bookkeeping. Here is what a typical method looks like in the category of NData I have implemented:

// Grab a little-endian 32-bit number - (uint32_t)getInt32OffsetIncrement:(NSUInteger *)offset {

uint32_t unused;
NSRange myRange = NSMakeRange(*offset, sizeof(unused));

[self getBytes:&unused range:myRange];

*offset += sizeof(unused);

return CFSwapInt32LittleToHost(unused);

}

As you can see, I retrieve the data and then advance to NSRange "pointer" into the data stream. When I'm done I have consumed the entire data stream.

Have I overlooked any methods on NSData that can simultaneously retrieve data and advance a pointer along the length of the data stream?

Cheers, Doug


I just wrote code very similar to this. I don't believe there is any built-in NSData method to help with this. It looks like you're already doing this as an NSData category. I think that's the best you can do unless you want to subclass and keep the offset in a member.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜