[英]NSTask and NSPipe example to comunicate with the command line objective-c
有人可以展示一個關於如何結合使用 NSTask 和 NSPipe 來執行此操作的快速示例:
Charlie AI - 通過終端運行與 AI 通信
我想使用 xcode 和目標 c 為它創建一個很好的 GUI。 我想有 2 個 NSTextFields 用於 charlie 的響應和用戶輸入。 然后有一個發送按鈕將用戶輸入發送到命令行,然后獲取查理的響應並將其發布到 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];
還有 AMShellWrapper 示例代碼,它改進了moriarity。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.