有人可以快速举例说明如何结合使用NSTask和NSPipe来实现这一目标:
Charlie AI - 通过终端与AI进行交流
我想使用xcode和objective c为它创建一个漂亮的GUI。我想为查理的响应和用户输入提供2个NSTextField。然后有一个发送按钮将用户输入发送到命令行,然后获取charlie的响应并将其发布到NSTextField中。
我可以处理GUI内容(NSTextField等)但我需要有关objective-c编码部分的帮助。
谢谢!
利亚
答案 0 :(得分:4)
Apple提供了一些很好的示例代码,展示了如何完成大部分工作... http://developer.apple.com/mac/library/samplecode/Moriarity/
TaskWrapper.m 包含所有聪明的东西,但由于您希望能够将数据发送到任务,您需要将其扩展一点,如下所示:
[task setStandardInput: [NSPipe pipe]];
要将输入发送到任务,您可以执行以下操作:
[[[task standardInput] fileHandleForWriting] writeData: ...];
要将NSTextField的值转换为数据,您可以执行以下操作:
NSData *data = [[inputTextField stringValue] dataUsingEncoding:NSUTF8StringEncoding];
...并设置子任务的当前工作目录,使用[NSTask setCurrentDirectoryPath:]
e.g。
[task setCurrentDirectoryPath:@"/blah/blah"];
[task setLaunchPath:@"/blah/blah/server.sh"];
.... (other setup code)
[task launch];
答案 1 :(得分:1)
还有一个AMShellWrapper示例代码可以改善生活方式。