有没有办法将命令行选项从Xcode传递到我的iOS应用程序?

Cha*_*all 17 xcode uiapplicationdelegate ios

我希望在测试期间启动它时找到一种方法将某些信息传递到我的应用程序,以便我可以执行特殊的调试任务.Xcode有一个部分"在启动时传递的参数",我假设它们将显示在我的UIApplicationDelegate的应用程序中:didFinishLaunchingWithOptions:但是传入的字典总是为零.

我是以错误的方式来做这件事的吗?

Dee*_*olu 21

你可以使用这样的NSProcessInfo对象访问它们,

NSArray * arguments = [[NSProcessInfo processInfo] arguments];
Run Code Online (Sandbox Code Playgroud)


小智 11

另一种更简单的方法是使用NSUserDefaults.

http://perspx.com/archives/parsing-command-line-arguments-nsuserdefaults/

来自文章:

可以解析和使用的命令行参数 NSArgumentDomain必须采用以下格式:

-name value
Run Code Online (Sandbox Code Playgroud)

参数存储为默认值,键值为name,值为 value.此时,访问命令行传入的值与访问任何其他默认值的过程相同.

例如,运行应用程序:

MyApplication -aString "Hello, World" -anInteger 10
Run Code Online (Sandbox Code Playgroud)

允许检索命令行参数:

NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
NSString *aString = [standardDefaults stringForKey:@"aString"];
NSInteger anInteger = [standardDefaults integerForKey:@"anInteger"];
Run Code Online (Sandbox Code Playgroud)