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

标签 swift parse-platform pfobject

我是 Swift 新手,正在学习如何使用 parse.com 来存储和检索数据。我正在从 PARSE 下载 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 { ... }

是一个语法错误,您可能想要可选绑定(bind)该值

if let returnedObjects = objects { ... }

但是objects是非可选的,并且可选绑定(bind)是不可能的。

<小时/>

只需将值赋给变量并删除大括号

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 block 中并打印实际错误而不是简单的文字字符串“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)
}

关于swift - 从 parse.com 检索信息时无法调用非函数类型 [PFObject] 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45355561/

相关文章:

swift - parse.com 排序嵌套查询

ios - 哪个对象的数组具有最多的特定对象

ios - 更新 PFObject 时出错

ios - 注销 ios 应用程序并返回到 RootViewController

iOS MapBox map 滞后

arrays - 根据数组中的值按键对字典进行排序

ios - 按下按钮时呈现新 ViewController 时如何显示 tabBarController

ios - 在没有互联网连接的情况下创建 Parse 用户

ios - 使用解析来检索并在 TableView 中显示用户的对象,但 TableView 不会更新

swift - 将 tableview 单元格信息链接到 View Controller