为 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
上输入类似的内容,它应该会给出相同的输出。
您可以使用 argc
和 argv
参数。它们提供对命令行参数的访问。很多 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];
}
这比使用 argc
和 argv
更好,因为您可以使用基础类型 NSArray
和 NSString
。
我制作了一个 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
上输入类似的内容,它应该会给出相同的输出。
您可以使用 argc
和 argv
参数。它们提供对命令行参数的访问。很多 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];
}
这比使用 argc
和 argv
更好,因为您可以使用基础类型 NSArray
和 NSString
。