繁体   English   中英

在Parse可以返回值之前,Swift在func中返回值

[英]Swift returning a value in func before Parse can return a value

我试图弄清楚为什么swift会返回我在函数开头声明的0,而不是从Parse返回我将其设置为的数字。

func getPhotosSubmitted(quest: String) -> Int{
   var num = 0
   var query = PFQuery(className:"Quest")

    query.whereKey("questName", equalTo:quest)

    query.findObjectsInBackgroundWithBlock {

        (objects: [AnyObject]!, error: NSError!) -> Void in

        if error == nil {

            // The find succeeded.

          //  NSLog("Successfully retrieved \(objects.count) scores.")

            // Do something with the found objects

            for object in objects {

               num = (object["numOfSubmittedPhotos"] as Int)

                println("---\(num)")
            }
        } else {
            // Log details of the failure
            //NSLog("Error: %@ %@", error, error.userInfo!)
        }
    }

   return num
}

此函数每次都将返回0,就好像它没有在等待: num = (object["numOfSubmittedPhotos"] as Int)当我尝试返回(object["numOfSubmittedPhotos"] as Int)它抛出一个错误,指出Int是不能转换为void我打印测试行以查看从Parse中得到的值,它是不为0的正确值。有人在此代码中看到问题吗?

query.findObjects ...创建一个将有效运行的块。 之后,您将返回num。 现在发生了。

由于getNumberOfPhotos要返回一个仅在将来可用的值,因此它也必须是一个异步调用。 这意味着返回必须是将来要执行的某个块或类似的东西。

就像有人说的那样,花一天的时间在iOS中读取异步信息,专注于块而不是其他方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM