2017-07-27 43 views
0

我是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]」

我不知道如何避免這個問題,所以任何幫助,將不勝感激

感謝

回答

0
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) 
} 
相關問題