【问题标题】:Unix Command Execution from Button - XCode Objective - C从按钮执行 Unix 命令 - XCode Objective - C
【发布时间】:2012-11-20 11:35:05
【问题描述】:

您好,我在从按钮执行 Unix 命令时遇到问题。

这是我目前所拥有的:

> #import <Cocoa/Cocoa.h>
> 
> @interface  PUPController : NSWindow { }
> - (IBAction)OpenPUP:(id)PUPC;
> - (IBAction)DestinationFolder:(id)PUPC;
> - (IBAction)Exit:(id)PUPC;
> - (IBAction)Unpack:(id)PUPC;
> 
> @end
> 
> #import "OPDFPUE.h"
> 
> @implementation PUPController
> 
> - (IBAction)OpenPUP:(id)PUPC; {
>     NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"PUP", nil];
>     NSOpenPanel* openDlg = [NSOpenPanel openPanel];
>     [openDlg setCanChooseFiles:YES];
>     [openDlg setCanChooseDirectories:NO];
>     [openDlg setAllowsMultipleSelection:NO];
>     [openDlg setMessage:@"Select Playsation 3 System Software Update (PUP) File for Extraction"];
>     if ( [openDlg runModalForTypes:fileTypes] == NSOKButton )
>     {
>         NSArray* files = [openDlg filenames];
>     }
>     NSString * tvarDirectory = [openDlg directory];
>     NSString * tvarFilename = [openDlg filename]; }
> 
> - (IBAction)DestinationFolder:(id)PUPC; {
>     NSSavePanel *saveDlg  = [NSSavePanel savePanel];
>     [saveDlg setMessage:@"Select folder to save extracted contents of the Playsation 3 System Software Update (PUP) File selected"];
>     int tvarInt   = [saveDlg runModal];
>   
>     if(tvarInt == NSOKButton){
>     }
>     else if(tvarInt == NSCancelButton) {
>     return;
>     }
>     else {
>     return;
>     }
>     NSString * tvarDirectory = [saveDlg directory];
>     NSString * tvarFilename = [saveDlg filename]; }
> 
> - (IBAction)Exit:(id)PUPC; {
>     exit(0); } NSTask *pupunpack;
> 
> - (IBAction)Unpack:(id)PUPC {
>     
>     pupunpack=[[NSTask alloc] init];
>     [pupunpack setLaunchPath:@"/usr/bin/pupunpack"];
>     [pupunpack launch];
>      }
>      
>      - (id)init {
>     
>      } @end

如果有人可以提供帮助,那就太好了。基本上我正在做的是插入一个文件,设置目标然后程序将解压缩该文件。我有一个打开的对话框来选择一个 pup 文件,然后是一个保存对话框来选择保存目标。然后我有一个解压按钮,它目前什么都不做。解压按钮需要参数。如果有人可以提供帮助,那就太好了。

我是 Objective-C 的新手,我试图找到尽可能多的信息,但我似乎无法让它发挥作用。这是我正在使用的 unix 应用程序。

https://dl.dropbox.com/u/43729201/pupunpack.zip

【问题讨论】:

    标签: xcode unix button command execution


    【解决方案1】:

    您可能需要添加文件名和目标目录作为命令参数:

    [pupunpack setArguments:[NSArray arrayWithObjects:tVarFilename, tvarDirectory, nil]];
    

    【讨论】:

    • 好的,我试过了,但我收到一个错误提示“预期标识符”
    • 现在它说:使用未声明的标识符 tvarFilename; tvarDirectory 也一样
    • 我从设置目录中得到了它:NSTask *pupunpack; - (IBAction)Unpack:(id)PUPC { pupunpack=[[NSTask alloc] init]; [pupunpack setLaunchPath:@"/usr/bin/pupunpack"]; [pupunpack setCurrentDirectoryPath:@"/Users/Hamish/PS3/OFW/"]; [pupunpack setArguments:[NSArray arrayWithObjects: @"PS3UPDAT355.PUP", @"PS3UPDATE355", nil]]; [pupunpack launch]; } 现在只是实现通过打开对话框和保存对话框设置的目录。
    • 我想你只是对来自 NSOpenPanel 的文件名和来自 NSSavePanel 的目录感兴趣。在头文件中定义 2 个属性 tvarFilename 和 tvarDirectory,然后使用它们,删除当前的本地声明。
    • 啊,是的,我想把我的代码放进去,但不知道如何放入 cmets。我还有其他一些问题。
    猜你喜欢
    • 2013-01-13
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多