我有应用程序,我从套接字消息接收到:"\r\nIDLE|03/17/2013 19:48\n"。我将此消息转换为带有代码的 UTF8 字符串:
NSString* newStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
然后我尝试从这个字符串中分离命令和时间:
NSArray *nums = [command componentsSeparatedByString:[NSString stringWithFormat:@"%c", (char)13]];
NSLog(@"First separate = %@", nums);
if ([nums count] == 3)
{
NSArray *nums1 = [[nums objectAtIndex:1] componentsSeparatedByString:@"|"];
NSLog(@"second separate = %@", nums1);
if ([nums1 count] == 2)
{
NSString* strState = [(NSString *)[nums1 objectAtIndex:0] description];
NSLog(@"State = %@", strState);
...
}
}
在我接下来看到的日志中:
First separate = (
"IDLE|03/17/2013 19:48",
"\n"
second separate = (
"IDLE",
"03/17/2013 19:48"
State = I
在 0 元素中第二次分离后,我有文本IDLE,但是当我尝试获取此文本时,我 strState变量,我只看到此文本的第一个字符。任何人都可以帮助我完全掌握这个元素吗?
谢谢你。
UPDATE1 正如我之前所说,我从套接字消息中得到:“\r\nIDLE|03/17/2013 19:48\n” 我确信服务器会向我发送此消息。在 Socket 读取回调中,我使用下一个代码来读取此消息:
int result = CFReadStreamRead(_inputStream, (UInt8*)[data mutableBytes], length);
NSString* newStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
这里应用程序读取了 50 个字节,这是否适合此消息?您可以在下一张图片中看到我的调试器:
但在newStr成员中,我只看到\r。然后我发送尝试将这条消息与我上面编写的代码分开。当我尝试单独的消息记录器时,显示所有消息而不是\r: 谢谢