2017-05-14 5 views
0

Swiftにクエリを設定して、特定の列から値を取得しています。私は、クエリに従っているオブジェクトの量を返すしようとしているし、平均を得るために、注文の量で後で分割するために、顧客の評価列の評価番号を合計します。私はStackOverflowで、私は配列内の異なる評価値を格納することによってこれを行うことができますが、何らかの理由で、配列に格納されている値が1つだけなので、エラーが発生し続けます。コードは次のとおりです。SwiftでParseから列の値を合計する方法

var ordersArray: [Int]! 

let query = PFQuery(className: "Orders") 
query.whereKey("customer", equalTo: customerLet) 
query.findObjectsInBackgroundWithBlock({(objects, error) -> Void in 
    if objects!.count == 0{ 
     self.ratingLabel.text = ("5.0") 
    }else{ 
     if let objects = objects{ 
      for object in objects{ 
      let ordersAmount = objects!.count    
      self.ordersArray.append((Int(object.objectForKey("rating") as! String))! 
      let totalOrders = self.ordersArray.reduce(0, combine: +) 
      let ratingAverage = (totalOrders/ordersAmount) 
           } 
           } 
         } 
      }) 
+0

このメソッドに完全なコードを共有できますか?ループ外のratingAverageを計算する必要があります。 –

+0

@Shabirjanは本質的に完全なコードですが、私はif文の最初のブロックをスキップしました。なぜなら、この質問には関係がないからです。 – Dups

+0

実際には、閉じ括弧がないので、なぜこのメソッドの完全なコードを共有するように頼んだのですか? –

答えて

1

また、問題は、配列が正しく初期化されていないことです。それはそうでなければなりません:

var ordersArray: [Int] = []() 

これを試してください。

for object in objects{   
    self.ordersArray.append((Int(object.objectForKey("rating") as! String))! 
} 


let ordersAmount = objects!.count 
let totalOrders = self.ordersArray.reduce(0, combine: +) 
let ratingAverage = (totalOrders/ordersAmount) 
+0

ありがとうございます。それはまだself.ordersArray.appendで作業を停止します... "rating ="は、 'objects = 3 values'といっても、3つではなく1つの行からその値を返します。それに加えて、配列はゼロであると言います。 – Dups

+0

どの配列がnilですか? totalOrdersにブレークポイントを追加しようとすると、ordersAmount、totalOrders、およびself.ordersArrayの値が何であるかを確認してください。 –

+0

可能であれば、小さなチームビューアのセッションでバグを見つけ出すことができます –

関連する問題