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