有没有人可以给出一个简单的例子,说明如何结合使用NSTask和NSPipe来实现这一点:
查理·AI-通过终端与AI通信
我想使用xcode和objective c为它创建一个不错的图形用户界面。我想有2个NSTextFields用于charlie的响应和用户输入。然后使用send按钮将用户输入发送到命令行,然后获取charlie的响应并将其发布到NSTextField中。
我可以处理图形用户界面的东西(NSTextField等)。但我需要在objective-c编码部分得到帮助。
谢谢!
以利亚
发布于 2010-07-10 17:37:48
苹果公司有一些很好的示例代码,展示了如何做到这一点。
TaskWrapper.m包含了所有聪明的东西,但由于您希望能够向任务发送数据,因此需要对其进行一点扩展,如下所示:
[task setStandardInput: [NSPipe pipe]];要将输入发送到任务,您可以执行以下操作:
[[[task standardInput] fileHandleForWriting] writeData: ...];要将NSTextField的值转换为数据,可以执行以下操作:
NSData *data = [[inputTextField stringValue]
dataUsingEncoding:NSUTF8StringEncoding];...and要设置子任务的当前工作目录,请使用[NSTask setCurrentDirectoryPath:]
例如:
[task setCurrentDirectoryPath: @"/blah/blah"];
[task setLaunchPath: @"/blah/blah/server.sh"];
.... (other setup code)
[task launch];发布于 2010-08-17 19:44:10
还有AMShellWrapper示例代码,它改进了莫里亚性。
http://www.harmless.de/cocoa-code.php
https://stackoverflow.com/questions/3208696
复制相似问题