Cocoa NSTextView中的Shell命令输出
谢谢你的帮助。此执行命令的结果显示在我的Xcode控制台中。在NSTextView中显示命令结果的最佳方式是什么Cocoa NSTextView中的Shell命令输出,cocoa,nstextview,nstask,Cocoa,Nstextview,Nstask,谢谢你的帮助。此执行命令的结果显示在我的Xcode控制台中。在NSTextView中显示命令结果的最佳方式是什么 NSString *commandToRun = @"~/Library/webREF/ffmpeg -nostats -i ~/Desktop/input.wav - filter_complex ebur128 -f null -"; NSTask *task; task = [[NSTask alloc] init]; [task setLaun
NSString *commandToRun = @"~/Library/webREF/ffmpeg -nostats -i ~/Desktop/input.wav - filter_complex ebur128 -f null -";
NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/sh"];
NSArray *arguments = [NSArray arrayWithObjects:
@"-c" ,
[NSString stringWithFormat:@"%@", commandToRun],
nil];
NSLog(@"run command: %@",commandToRun);
[task setArguments: arguments];
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
[task launch];
添加如下内容:
…
NSFileHandle *file;
file = [pipe fileHandleForReading];
NSMutableData *data = [[NSMutableData alloc] init];
NSData *inData = nil;
[task setStandardOutput:pipe];
[task launch];
[task waitUntilExit];
while ((inData = [file availableData]) && [inData length]) {
[data appendData:inData];
}
[file closeFile];
[task release];
[pipe release];
NSString *result = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
[data release];
// somewhere we have an NSTextView textView
[textView setString: result];
谢谢,但我没法用。此外,该项目设置为使用ARC。我没有
ffmpg
,因此无法测试您的确切命令,但其他输出到stdOut的命令对我有效。再次感谢。命令按预期运行。控制台输出证实了这一点。我在文本视图中没有得到任何输出-我一直在回答这个问题,没有任何实际的代码,但最终做了一个小项目来测试它。我以为我也遇到了同样的问题,但我不小心弄坏了我的textView
的“线路”。一旦连接正确,这确实对我有效(使用不同的shell命令)。嗨@Paul,我想你对我答案的编辑被拒绝了。也许可以尝试更新你的问题?在任何情况下,我认为如果您可以测试结果
字符串是否实际包含所需的结果,那么您可以将问题缩小到文本视图的某种连接或设置问题。