task.arguments 中的 Swift 参数

Posted

技术标签:

【中文标题】task.arguments 中的 Swift 参数【英文标题】:Swift Arguments in task.arguments 【发布时间】:2018-10-30 09:09:48 【问题描述】:

在 Swift 4 中,我尝试启动命令行来了解视频的帧速率。我使用 mediainfo 工具。

要执行的命令是(在终端测试)

"/Users/Lorenzo/mediainfo  --Inform="Video;%FrameRate%" /Users/Lorenzo/Desktop/1.mov"

为此,我的快速代码是:

        let taskfindfps = Process()

        taskfindfps.launchPath = "/Users/Lorenzo/mediainfo"
        taskfindfps.arguments = ["--Inform=\"Video;%FrameRate%\"", myVideo]

        let pipefindfps = Pipe()
        taskfindfps.standardOutput = pipefindfps

但第一个参数无效,我不知道为什么...... 我得到的结果就像没有可选参数的命令的结果:

"/Users/Lorenzo/mediainfo /Users/Lorenzo/Desktop/1.mov"

"--Inform=\"Video;%FrameRate%\""有什么问题吗?

【问题讨论】:

【参考方案1】:

如果不确切了解 Swift,我会尝试不使用转义引号,例如,引号用于命令行仅用于强制命令不将半列作为命令行处理(命令行在处理过程中将其删除。Process.arguments 是一个列表,该语言应正确处理自身字符以进行转义,如果它转义引号(而不是像在命令行上那样处理它们)MediaInfo 将无法理解该命令。

Jérôme,MediaInfo 的开发人员。

【讨论】:

【参考方案2】:

你说得对,我有我的 fps 数! 附上代码:

taskfindfps.arguments = [ "--Inform=Video;%FrameRate%", myVideo]

感谢您的帮助。 感谢强大的 MediaInfo 工具。

【讨论】:

以上是关于task.arguments 中的 Swift 参数的主要内容,如果未能解决你的问题,请参考以下文章

iOS中的重载和重写

iOS中的重载和重写

Swift 中的动态 UITableView

iOS Swift 中的 firebase 实时数据库推送等价物是啥?

Swift进阶六——函数和闭包

接收后台通知iOS Swift 5(无正文和标题)