2016-04-21 47 views
-3

我是一个完整的快速noob。在xcode中使用这个代码,我得到了我需要的结果。我创建了一个需要几个参数的命令行二进制“菜单栏”。我通常在终端“/ bin/menubar getip”,“/ bin/menubar/getuser”中运行它。我想根据以下工作代码创建一个函数。斯威夫特NStask函数

import Cocoa 
import Foundation 

var task:NSTask = NSTask() 
var pipe:NSPipe = NSPipe() 

task.launchPath = "/bin/menubar" 
task.arguments = ["getip"] 
task.standardOutput = pipe 
task.launch() 

var handle = pipe.fileHandleForReading 
var data = handle.readDataToEndOfFile() 
var result_s = NSString(data: data, encoding: NSUTF8StringEncoding) 
print(result_s) 

我想将其转换为函数。

func commmand (argument: String) -> String 
{ 

let task:NSTask = NSTask() 
let pipe:NSPipe = NSPipe() 

task.launchPath = "/bin/menubar" 
task.arguments = ["argument"] 
task.standardOutput = pipe 
task.launch() 

let handle = pipe.fileHandleForReading 
let data = handle.readDataToEndOfFile() 
let result_s = NSString(data: data, encoding: NSUTF8StringEncoding) 
return result_s 
} 
commmand getip 
+0

SOOOO什么问题呢? – Slayter

+0

“我得到了我需要的结果”听起来不错。问题是什么? – matt

+0

对不起,我没有说清楚。我试图将其转换为可重用的函数。所以我可以通过不同的论点。 – nyitguy

回答

1

试试这个:

func commmand(argument: String) -> String 
{ 

    let task:NSTask = NSTask() 
    let pipe:NSPipe = NSPipe() 

    task.launchPath = "/bin/menubar" 
    task.arguments = [argument] 
    task.standardOutput = pipe 
    task.launch() 

    let handle = pipe.fileHandleForReading 
    let data = handle.readDataToEndOfFile() 
    let result_s = String(data: data, encoding: NSUTF8StringEncoding)! 
    return result_s 
} 

print(commmand("getip")) 
+0

我收到“return result_s”的异常无法转换类型为“NSString?”的返回表达式?返回类型“字符串” – nyitguy

+0

编辑函数 – Slayter

+0

谢谢你的作品。 – nyitguy