Swift 1.2:void 函数中出现意外的非 void 返回值

Posted

技术标签:

【中文标题】Swift 1.2:void 函数中出现意外的非 void 返回值【英文标题】:Swift 1.2: Unexpected non-void return value in void function 【发布时间】:2016-01-25 20:57:41 【问题描述】:

我编写了一个函数,它应该从页面返回某个值。我已经用 JSON 完成了这项工作,这样我就可以从我的网站中获得一定的价值。这是函数:

func getTimerData() 
    var currentUsername = PFUser.currentUser()!.username

    let url = NSURL(string: "http://dinges.informatica-dinges.nl/timerDataTransmitter.php?user=\(currentUsername!)&unique=85017438957")
    let request = NSMutableURLRequest(URL: url!)

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) 
        data, response, error in

        var parseError: NSError?
        if let json = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: &parseError) as? [String: String] 

            let rideTime = json["timerValue"]
            return rideTime

        
    

但是,它给了我错误:Unexpected non-void return value in void function。我已经尝试了很多,但我似乎无法找到解决此问题的方法。你知道我该如何解决吗?

【问题讨论】:

func getTimerData() -> NSTimeInterval,或任何rideTime的类型 你不能返回任何东西,因为dataTaskWithRequest 是异步工作的。使用完成块或通知。 @vadian 你能告诉我怎么做吗?我还没有真正使用过完成块或通知。 Related 列中有一些建议,例如***.com/questions/30279359/… 【参考方案1】:

根据需要使用返回数据类型声明您的函数 如:

fun getTimerData() -> String 
    var currentUsername = PFUser.currentUser()!.username
    let url = NSURL(string: “http://dinges.informatica-dinges.nl/timerDataTransmitter.php?user=\(currentUsername!)&unique=85017438957”)
let request = NSMutableURLRequest(URL: url!)

let task = NSURLSession.sharedSession().dataTaskWithRequest(request) 
    data, response, error in

    var parseError: NSError?
    if let json = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: &parseError) as? [String: String] 
        let rideTime = json["timerValue"]
        return rideTime
    
  

【讨论】:

以上是关于Swift 1.2:void 函数中出现意外的非 void 返回值的主要内容,如果未能解决你的问题,请参考以下文章

类理解:void函数中出现意外的非void返回值(swift 3)

void 函数中的意外非 void 返回值(swift)

如何停止返回导致“void函数中出现意外的非void返回值”?

void函数Swift3中的意外非void返回值

void函数Swift 4中的意外非void返回值

在嵌套函数中返回布尔值