【问题标题】:How can I return my string in swift by using parse?如何使用解析快速返回我的字符串?
【发布时间】:2015-04-27 03:38:54
【问题描述】:
func getParse (className:String,key:String,dataName:AnyObject) -> (String)
{
    var result = String()
    var query = PFQuery(className: className)
    query.whereKey(key, equalTo: dataName)
    query.findObjectsInBackgroundWithBlock{
        (objects, error) -> Void in
        if error == nil {
            println("Found")
            if let objects = objects as? [PFObject] {
                for object in objects {
                    result = object[key] as! String
                }
            }
        } else {
            println("Error  \(error) \(error!.userInfo!)")
        }
    }
   return result

}

这是我的函数,它可以从解析数据库中的类中获取数据。我想在 String 中返回该数据,但是当我尝试打印它时它什么也没返回。

感谢每一位cmets。

【问题讨论】:

  • 那是一个异步调用。 result 在完成块执行之前不会被设置。也许findObjects 的版本不是inBackground
  • 谢谢,我试试新版本吧。

标签: swift parse-platform xcode6


【解决方案1】:

您正在使用异步调用。您需要使用 findObjects(),但这将保留在主线程上。为什么需要返回一个字符串?您可以从完成块中设置一个变量,该变量可以更新视图上的标签或类似的东西。

编辑:由于您尝试设置标签,因此不需要返回字符串,您应该只在完成块中设置标签。这将修改你的代码如下:

func getParse (className:String,key:String,dataName:AnyObject)
{
  var result = String()
  var query = PFQuery(className: className)
  query.whereKey(key, equalTo: dataName)
  query.findObjectsInBackgroundWithBlock{
    (objects, error) -> Void in
    if error == nil {
        println("Found")
        if let objects = objects as? [PFObject] {
            for object in objects {
               // result = object[key] as! String
               self.textLabel.text = result // NEW CODE HERE
            }
        }
    } else {
        println("Error  \(error) \(error!.userInfo!)")
    }
  }
}

【讨论】:

  • 我必须从解析数据库中获取字符串并将其显示在我的标签上。对不起,如果我的回答不清楚。我是这个领域的新手。
  • 如果你做 self.label.text = result,那可能会设置你的标签
猜你喜欢
  • 2020-02-28
  • 2023-02-22
  • 2010-09-24
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
相关资源
最近更新 更多