首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Swift中访问命令行参数?

如何在Swift中访问命令行参数?
EN

Stack Overflow用户
提问于 2014-06-04 13:23:49
回答 3查看 47K关注 0票数 135

如何在Swift中访问命令行应用程序的命令行参数?

EN

回答 3

Stack Overflow用户

发布于 2016-08-27 23:52:54

在Swift 3中,使用CommandLine枚举而不是Process

所以:

代码语言:javascript
复制
let arguments = CommandLine.arguments
票数 63
EN

Stack Overflow用户

发布于 2014-06-04 13:26:10

使用顶级常量C_ARGCC_ARGV

代码语言:javascript
复制
for i in 1..C_ARGC {
    let index = Int(i);

    let arg = String.fromCString(C_ARGV[index])
    switch arg {
    case "this":
        println("this yo");

    case "that":
        println("that yo")

    default:
        println("dunno bro")
    }
}

注意,我使用的范围是1..C_ARGC,因为C_ARGV“数组”的第一个元素是应用程序的路径。

C_ARGV变量实际上不是一个数组,但可以像数组一样使用子脚本化。

票数 47
EN

Stack Overflow用户

发布于 2014-11-24 23:59:45

任何想要使用旧的"getopt“(在Swift中可用)的人都可以将其作为参考。我用C编写了GNU示例的Swift移植,可以在以下位置找到:

http://www.gnu.org/software/libc/manual/html_node/Example-of-Getopt.html

以及完整的描述。它已经过测试,功能齐全。它也不需要Foundation。

代码语言:javascript
复制
var aFlag   = 0
var bFlag   = 0
var cValue  = String()

let pattern = "abc:"
var buffer = Array(pattern.utf8).map { Int8($0) }

while  true {
    let option = Int(getopt(C_ARGC, C_ARGV, buffer))
    if option == -1 {
        break
    }
    switch "\(UnicodeScalar(option))"
    {
    case "a":
        aFlag = 1
        println("Option -a")
    case "b":
        bFlag = 1
        println("Option -b")
    case "c":
        cValue = String.fromCString(optarg)!
        println("Option -c \(cValue)")
    case "?":
        let charOption = "\(UnicodeScalar(Int(optopt)))"
        if charOption == "c" {
            println("Option '\(charOption)' requires an argument.")
        } else {
            println("Unknown option '\(charOption)'.")
        }
        exit(1)
    default:
        abort()
    }
}
println("aflag ='\(aFlag)', bflag = '\(bFlag)' cvalue = '\(cValue)'")

for index in optind..<C_ARGC {
    println("Non-option argument '\(String.fromCString(C_ARGV[Int(index)])!)'")
}
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24029633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档