How do I access program arguments in Swift?

后端 未结 5 794
别跟我提以往
别跟我提以往 2020-12-01 03:11

C and derivatives have argc and argv (and envp) parameters to their entry point functions, but Swift doesn\'t have one proper: top-lev

5条回答
  •  旧巷少年郎
    2020-12-01 03:15

    For Swift 3 you can use this code:

    let argc = CommandLine.argc
    let argv = UnsafeMutableRawPointer(CommandLine.unsafeArgv).bindMemory(to: UnsafeMutablePointer.self, capacity: Int(CommandLine.argc))
    

    which is equivalent of argc and argv parameters used in Objective-C main function:

    int main(int argc, char *argv[])
    

    For older versions of Swift, you can use Process.argc and Process.unsafeArgv or C_ARGC and C_ARGV.

    You can pass this variables to UIApplicationMain function in iOS app:

    Swift 3:

    let argc = CommandLine.argc
    let argv = UnsafeMutableRawPointer(CommandLine.unsafeArgv).bindMemory(to: UnsafeMutablePointer.self, capacity: Int(CommandLine.argc))
    UIApplicationMain(argc, argv, nil, NSStringFromClass(AppDelegate.self))
    

    previous Swift versions:

    UIApplicationMain(Process.argc, Process.unsafeArgv, nil, NSStringFromClass(AppDelegate.self))
    

    or:

    UIApplicationMain(C_ARGC, C_ARGC, nil, NSStringFromClass(AppDelegate.self))
    

    Objective-C:

    int main(int argc, char *argv[])
    {
        @autoreleasepool {
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
    }
    

提交回复
热议问题