为 Objective-C 命令行应用程序指定参数

specifying arguments to an Objective-C commandline app

我制作了一个 Objective-C 命令行应用程序,它接受用户输入的字符串。 目前我创建它的方式是在命令提示符下询问用户

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        printf("Enter your string: ");
        char str[11];
        scanf("%s", str);
        printf("Your string is %s\n", str);
        NSString *lastName = [NSString stringWithUTF8String:str];

        NSLog(@"lastName=%@", lastName);
    }
    return 0;
}

因此,当我通过键入 programName 从终端运行此程序时,我将得到以下信息:

Enter your string:

相反,我想在终端 programName StringThatNeedsToBeneterd 上输入类似的内容,它应该会给出相同的输出。

您可以使用 argcargv 参数。它们提供对命令行参数的访问。很多 C 的介绍都会描述它们是如何工作的。

但是,由于您使用的是 Objective-C 和 Foundation 框架,您可以使用 the arguments property of NSProcessInfo:

NSLog(@"arguments: %@", NSProcessInfo.processInfo.arguments);

// NSProcessInfo.processInfo.arguments[0] is the executable's name.

if (NSProcessInfo.processInfo.arguments.count > 1) {
    NSString *lastName = NSProcessInfo.processInfo.arguments[1];
}

这比使用 argcargv 更好,因为您可以使用基础类型 NSArrayNSString