NSTask,NSPipe - 无法连接返回的字符串

时间:2012-07-30 14:36:34

标签: python objective-c macos cocoa nstask

在我的Mac OS应用程序中,我有NSTask调用Python脚本,然后通过NSPipe返回“connected”。然后我读取了我的Obj-C类中的数据,并将其放在一个字符串中:

NSMutableData *data = [[NSMutableData alloc] init];
NSData *readData;

while ((readData = [readHandle availableData])
       && [readData length]) {
    [data appendData: readData];
}

NSString *aString;
aString = [[NSString alloc]
                  initWithData: data
                  encoding: NSASCIIStringEncoding];

NSLog(@"append%@me",aString);

稍后当我尝试将输出与另一个字符串连接时,我不能 - 它在另一行打印:

appendconnected
me

而且,我无法用:

测试字符串
if ([string isEqualToString:@"connected"]) {
    NSLog(@"yes");
} else {
    NSLog(@"no");
}

它表明它们并不相同,尽管它们是!

为什么?

1 个答案:

答案 0 :(得分:0)

流中有换行符。

你如何在python端打印数据?

如果您使用print "connected",它也会输出换行符。

请注意, not 输出换行符可能会导致数据在管道关闭(或写入更多数据)之前不被读取,因为系统可能会稍微缓冲一些内容。