我是Cocoa和Xcode的新手,但我确实想学习。问题是我花了很多时间在PHP,perl,python和shell脚本等脚本语言上工作,而Cocoa比在OS X上的Terminal中运行shell脚本要强大得多,它也是一个有点难以进入。
我有一个假设:如果我可以开始使用Cocoa和Xcode来实际做一些事情,那么我会更加熟悉它并逐渐开始解锁它的潜力。
这就是我希望StackOverflow进来的地方。看,我习惯于编写以参数(通常是文件名)作为输入的脚本,并对它们采取行动 - 调度其他程序或读取和写入基于文本的内容。所以考虑到这一点,如何编写一个简单的Cocoa应用程序来接受输入,将该输入保存到文件中,然后启动系统命令?
期望的输入:
open -a MyApp.app --args "hello world"
期望的输出:
/tmp/test.txt
已创建,现在包含文字hello world
/usr/bin/php -v
检查php版本,然后将输出附加到/tmp/test.txt
(只是想调用一些系统命令)我知道这种事情很容易用1-2行像bash脚本一样,但我真的很想看看我是否可以在Cocoa应用程序中实现这一点。我提前道歉,因为我意识到这是一个非常小的问题 - 只是试着以一种熟悉的方式开始。
答案 0 :(得分:1)
如果您正在编写一个没有UI的纯输入/输出类型的应用程序,只需在C / C ++ / Objective-C中编写一个直接的Unix风格的应用程序(无论您喜欢哪个)。您的程序的参数将显示在传递给argc
函数的argv
和main
参数中:
int main(int argc, char **argv)
{
// argc is the total number of arguments (including the program name)
// argv[0] is the first argument (the program name)
// argv[1] is the second argument (first real argument)
// ...
// argv[argc-1] is the last argument
}
如果你有一个真正的用户界面,通常{X}会自动生成main
函数并将其放在名为main.m
的文件中 - 它是一个使用自动释放池调用NSApplicationMain
的存根函数周围。您可以修改此项以保存argc
和argv
和/或直接处理它们。
答案 1 :(得分:1)
如果您想处理命令行参数并拥有GUI,那么您肯定希望查看NSProcessInfo。除此之外,它还有一个名为arguments
的方法,它将命令行参数作为NSArray
返回。
它还可以从NSDictionary
方法为您提供environment
个环境变量,这些变量也非常有用。
编辑:我忘了提及,如果你想将字符串的内容保存到文件,NSString
已经有了一个方法!查看writeToFile:atomically:encoding:error:
的文档。