0

私の Mac OS アプリでは、NSPipe経由で「接続済み」を返す Python スクリプトを呼び出す NSTask があります。次に、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");
}

等しいにもかかわらず、等しくないことを示しています。

それはなぜです?

4

1 に答える 1

0

ストリームに改行があります。

Python側でデータをどのように印刷していますか?

を使用している場合はprint "connected"、改行も出力されます。

改行を出力しないと、パイプが閉じられる (またはさらにデータが書き込まれる) までデータが読み取られない可能性があることに注意してください。

于 2012-07-30T15:41:54.617 に答える