相关疑难解决方法(0)

如何在Swift中访问程序参数?

C和衍生物具有argcargv(和envp)参数到它们的入口点函数,但是Swift没有一个正确的:顶级代码只是代码,它没有参数.

一个人怎么可以访问相当于argcargv在斯威夫特程序?

command-line command-line-arguments swift

36
推荐指数
4
解决办法
1万
查看次数

Swift命令行工具中的多个工作人员

在Swift中编写命令行工具(CLT)时,我想处理大量数据.我已经确定我的代码是CPU限制的,性能可以从使用多个内核中受益.因此,我想并行化部分代码.说我想实现以下伪代码:

Fetch items from database
Divide items in X chunks
Process chunks in parallel
Wait for chunks to finish
Do some other processing (single-thread)
Run Code Online (Sandbox Code Playgroud)

现在我一直在使用GCD,一个天真的方法看起来像这样:

let group = dispatch_group_create()
let queue = dispatch_queue_create("", DISPATCH_QUEUE_CONCURRENT)
for chunk in chunks {
    dispatch_group_async(group, queue) {
        worker(chunk)
    }
}
dispatch_group_wait(group, DISPATCH_TIME_FOREVER)
Run Code Online (Sandbox Code Playgroud)

但是GCD需要一个运行循环,因此代码将在组永远不会执行时挂起.runloop可以启动dispatch_main(),但它永远不会退出.也可以运行NSRunLoop几秒钟,但这不是一个坚实的解决方案.无论GCD如何,使用Swift如何实现?

swift

4
推荐指数
3
解决办法
2814
查看次数

如何在Swift 3中使用带有命令行参数的getopt?

我正在尝试在Swift 3中使用带有命令行参数的getopt.我有来自Michele Dall'Agata的很好的stackoverflow贡献:

let pattern = "abc:"
var buffer = Array( pattern.utf8 ).map { Int8($0) }
Run Code Online (Sandbox Code Playgroud)

当我然后使用此代码时:

let option = Int( getopt( CommandLine.argc, CommandLine.arguments, buffer ) )
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

无法将'[String]'类型的值转换为预期的参数类型'UnsafePointer <UnsafeMutablePointer <Int8>?>!'

对于我正在尝试使用的CommandLine.arguments argv.有谁知道第二个参数的正确语法getopt?提前致谢!

command-line swift swift3

3
推荐指数
2
解决办法
1099
查看次数