从parse.com获取信息时无法调用非函数类型[PFObject]的值

问题描述:

我是Swift的新手,我正在学习如何使用parse.com存储数据并对其进行修改。我下载从parse PFObjects的数组,然后我需要把它变成一个结构,所以我创造了这个功能:从parse.com获取信息时无法调用非函数类型[PFObject]的值

func queryDownload (user : PFUser) { 

    let objects: [PFObject] 
    let query = PFQuery(className: "Gluc") 
    query.whereKey("user", equalTo: user) 
    do { 
     objects = try query.findObjects() as [PFObject] 

    } catch { 
     print("ERROR") 

    } 
    let returnedObjects = objects { 
     let elements = self.returnedObjects.count 
     for i in 0...elements-1 { 
      self.dataArray.append(MyData(gluc: Int(self.returnedObjects[i]["meassure"] as! String)!, fec: self.returnedObjects[i]["fec"] as! Date, alimento: self.returnedObjects[i]["alim"] as! Int, comentarios: self.returnedObjects[i]["notes"] as! String)) 

     } 
    } 

    self.dataArrayOrdered = self.dataArray.sorted(by: { $0.fec.compare($1.fec) == .orderedAscending}) 

    print(self.dataArrayOrdered) 
} 

但我不能,因为在此行中运行:

let returnedObjects = objects { 

它最高审计机关“不能调用非功能型的值PFObject]”

我不知道如何避免这个问题,所以任何帮助,将不胜感激

感谢

let returnedObjects = objects { ... } 

是一个语法错误,你可能想可选绑定

if let returnedObjects = objects { ... } 

objects是不可选的,可选的结合是不可能的。


只需将该值赋给变量并取下牙套

do { 
    let objects = try query.findObjects() as [PFObject] 
    let returnedObjects = objects 
    let elements = self.returnedObjects.count 
    for i in 0...elements-1 { 
     self.dataArray.append(MyData(gluc: Int(self.returnedObjects[i]["meassure"] as! String)!, fec: self.returnedObjects[i]["fec"] as! Date, alimento: self.returnedObjects[i]["alim"] as! Int, comentarios: self.returnedObjects[i]["notes"] as! String)) 
    } 
    self.dataArrayOrdered = self.dataArray.sorted(by: { $0.fec.compare($1.fec) == .orderedAscending}) 
    print(self.dataArrayOrdered) 
} catch { 
    print("ERROR", error) 
} 

它把所有代码在do块和打印实际的错误,而不是简单的文字是非常重要的字符串"ERROR"

但是,这是Swift,有一个更聪明,更方便的方式使用map功能

do { 
    let objects = try query.findObjects() as [PFObject] 
    self.dataArray = objects.map { MyData(gluc: Int($0["meassure"] as! String)!, fec: $0["fec"] as! Date, alimento: $0["alim"] as! Int, comentarios: $0["notes"] as! String) } 
    self.dataArrayOrdered = self.dataArray.sorted(by: { $0.fec.compare($1.fec) == .orderedAscending}) 
    print(self.dataArrayOrdered) 
} catch { 
    print("ERROR", error) 
}