代码之家  ›  专栏  ›  技术社区  ›  Enrique

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

  •  0
  • Enrique  · 技术社区  · 7 年前

    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]的值”

    1 回复  |  直到 7 年前
        1
  •  0
  •   vadian    7 年前
    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"

    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)
    }