gpt4 book ai didi

objective-c - NSTask 和 NSPipe 示例与命令行 objective-c 通信

转载 作者:搜寻专家 更新时间:2023-10-30 19:40:48 26 4
gpt4 key购买 nike

有人可以展示一个简单的例子来说明如何结合使用 NSTask 和 NSPipe 来做到这一点:

Charlie AI - 通过终端运行与 AI 通信

我想使用 xcode 和 objective c 为它创建一个漂亮的 GUI。我想要 2 个 NSTextFields 用于查理的响应和用户输入。然后有一个发送按钮将用户输入发送到命令行,然后获取查理的响应并将其发布到 NSTextField 中。

我可以处理 GUI 的东西(NSTextField 等),但我需要 objective-c 编码部分的帮助。

谢谢!

以利亚

最佳答案

Apple 有一些很好的示例代码,展示了如何完成其​​中的大部分工作。

TaskWrapper.m 包含所有聪明的东西,但由于您希望能够将数据发送到任务,因此您需要对其进行一些扩展,如下所示:

[task setStandardInput: [NSPipe pipe]];

要向任务发送输入,您可以执行以下操作:

[[[task standardInput] fileHandleForWriting] writeData: ...];

要将 NSTextField 的值转换为数据,您可以这样做:

NSData *data = [[inputTextField stringValue] 
dataUsingEncoding:NSUTF8StringEncoding];

...并为您的子任务设置当前工作目录,使用 [NSTask setCurrentDirectoryPath:]

例如

[task setCurrentDirectoryPath: @"/blah/blah"];
[task setLaunchPath: @"/blah/blah/server.sh"];

.... (other setup code)

[task launch];

关于objective-c - NSTask 和 NSPipe 示例与命令行 objective-c 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3208696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com