我試圖讓我的數據從套接字檢索到一個nsmutablearray。然而我發現的例子和教程顯示它首先進入字符串。這很好,我可以從那裏解析出來。但我甚至不能得到這個字符串的東西工作。使用nsmutabledata初始化字符串
case NSStreamEventHasBytesAvailable:
{
if(!rawData) {
rawData = [[NSMutableData data] retain];
}
uint8_t buf[1024];
unsigned int len = 0;
len = [(NSInputStream *)theStream read:buf maxLength:1024];
if(len) {
[rawData initWithBytes:buf length:len];
int bytesRead;
bytesRead += len;
[self messageReceived:rawData];
} else {
NSLog(@"no buffer!");
}
NSString *str = [[NSString alloc] initWithData:rawData
encoding:NSUTF8StringEncoding];
NSLog(@"data buffer: %@ |~|string buffer%@",rawData,str);
[str release];
break;
}
,但是你會從字符串下面的輸出中看到從來沒有得到任何數據(當然實際上我認爲它的編碼問題,所以我認爲它只是看起來是空的)
2011 -09-27 13:14:06.356卡默萊昂[30095:207]數據緩衝器:< 0f000102> |〜|字符串緩衝區
2011-09-27 13:14:06.359卡默萊昂[30095:207]的數據緩衝區中 000003> |〜|字符串緩衝區
2011-09-27 13:14:06.458卡默萊昂[30095:207]數據緩衝器: 00020300> |〜|字符串緩衝區
2011-09-27 13:14:06.659卡默萊昂[30095: 207]數據緩衝器:< 05000b00 0008080e 13163809 2711> |〜|字符串緩衝區
2011-09-27 13:14:06.663卡默萊昂[30095:207]數據緩衝器: 00040101 005A> |〜|串緩衝區
我想要
case NSStreamEventHasBytesAvailable:
{
if(!rawData) {
rawData = [[NSMutableData data] retain];
}
uint8_t buf[1024];
unsigned int len = 0;
len = [(NSInputStream *)theStream read:buf maxLength:1024];
if(len) {
[rawData initWithBytes:buf length:len];
} else {
NSLog(@"no buffer!");
}
const uint8_t *bytes = [rawData bytes];
NSMutableArray *mutableBuffer = [[NSMutableArray alloc] initWithCapacity:len];
for (int i =0; i < [rawData length]; i++) {
[mutableBuffer addObject:[NSString stringWithFormat:@"%02X", bytes[i]]];
}
[self gateKeeper:mutableBuffer];
[mutableBuffer release];
break;
bytesread的東西,並保留選項從我正在閱讀的教程(保留我可以發誓我從蘋果開發網站獲得)在任何情況下,我需要將NSDATA放入NSARRAY或NSMUTABLEARRAY,所以我可以與它一起工作(解析它)。 –
我需要能夠操作/解析個別字節 –
這裏是使用保留的鏈接。 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Streams/Articles/ReadingInputStreams.html#//apple_ref/doc/uid/20002273-BCIJHAGD即時通訊不會這樣說,我的權利,但有點說爲什麼;他們使用保留? (但不像主要問題那麼重要) –