2017-05-14 3 views
0

Swift에서 특정 열의 값을 가져 오는 쿼리가 있습니다. 나는 쿼리와 일치하는 객체의 양을 반환하고 고객의 등급 열의 등급 번호를 합산하여 나중에 평균값을 얻기 위해 주문량으로 나눕니다. StackOverflow에서 여러 등급 값을 배열에 저장하여이 작업을 수행 할 수 있지만 몇 가지 이유로 하나의 값만 배열에 저장되므로 오류가 계속 발생합니다. 코드는 다음과 같습니다.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 대신에 한 행에서 값을 반환합니다. 그 외에도 배열은 제로라고합니다. – Dups

+0

배열이 nil입니까? totalOrders에 중단 점을 추가하려고하면 ordersAmount, totalOrders 및 self.ordersArray의 값이 무엇인지 확인하십시오. –

+0

가능한 한 작은 팀 뷰어 세션을 통해 버그를 발견 할 수 있습니다 –

관련 문제