2016-10-05 5 views
0
@IBAction func one_2(sender: AnyObject) { 
    if un_1.textColor == UIColor.blueColor() { 
     if aac == false { 


      var aa = [FIRDataSnapshot]() 
      DataService.ds.REF_ISSUELIKES.observeEventType(.Value, withBlock: { (snapshot) in 
       if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] { 
        for snap in snapshots { 
         aa.append(snap) 
        } 
        print(aa[0]) 

        var aaUpvotes = String() 
        var aaDownvotes = String() 
        let a = Array(String(aa[0]).characters) 
        if a.count == 55 { 
         aaUpvotes = String(a[51]) 
         aaDownvotes = String(a[34]) 
        } else if a.count == 57 { 
         aaDownvotes = String("\(a[34])\(a[35])") 
         aaUpvotes = String("\(a[52])\(a[53])") 
        } else if a.count == 59 { 
         aaDownvotes = String("\(a[34])\(a[35])\(a[36])") 
         aaUpvotes = String("\(a[53])\(a[54])\(a[55])") 
        } 

        self.ref.child("IssueLikes").child("Abortion").child("Upvotes").setValue(Int(aaUpvotes)! + 1) 
        self.ref.child("IssueLikes").child("Abortion").child("Downvotes").setValue(Int(aaDownvotes)! - 1) 
       } 
      }) 

      aab = false 
      un_1.text = String(Int(un_1.text!)!-1) 
      un_2.text = String(Int(un_2.text!)!+1) 
      un_1.textColor = UIColor.whiteColor() 
      un_2.textColor = UIColor.blueColor() 
      aac = true 

     } else { 
      print("AAC") 
     } 
    } else if un_1.textColor == UIColor.whiteColor() { 
     if aac == false { 


      var aa = [FIRDataSnapshot]() 
      DataService.ds.REF_ISSUELIKES.observeEventType(.Value, withBlock: { (snapshot) in 
       if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] { 
        for snap in snapshots { 
         aa.append(snap) 
        } 
        print(aa[0]) 

        var aaUpvotes = String() 
        var aaDownvotes = String() 
        let a = Array(String(aa[0]).characters) 
        if a.count == 55 { 
         aaUpvotes = String(a[51]) 
         aaDownvotes = String(a[34]) 
        } else if a.count == 57 { 
         aaDownvotes = String("\(a[34])\(a[35])") 
         aaUpvotes = String("\(a[52])\(a[53])") 
        } else if a.count == 59 { 
         aaDownvotes = String("\(a[34])\(a[35])\(a[36])") 
         aaUpvotes = String("\(a[53])\(a[54])\(a[55])") 
        } 

        self.ref.child("IssueLikes").child("Abortion").child("Upvotes").setValue(Int(aaUpvotes)! + 1) 
       } 
      }) 

      aab = false 
      un_2.textColor = UIColor.blueColor() 
      un_2.text = String(Int(un_2.text!)!+1) 
      aac = true 

     } else { 
      print("AAC") 
     } 
    } else { 
     if aac == false { 


      var aa = [FIRDataSnapshot]() 
      DataService.ds.REF_ISSUELIKES.observeEventType(.Value, withBlock: { (snapshot) in 
       if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] { 
        for snap in snapshots { 
         aa.append(snap) 
        } 
        print(aa[0]) 

        var aaUpvotes = String() 
        var aaDownvotes = String() 
        let a = Array(String(aa[0]).characters) 
        if a.count == 55 { 
         aaUpvotes = String(a[51]) 
         aaDownvotes = String(a[34]) 
        } else if a.count == 57 { 
         aaDownvotes = String("\(a[34])\(a[35])") 
         aaUpvotes = String("\(a[52])\(a[53])") 
        } else if a.count == 59 { 
         aaDownvotes = String("\(a[34])\(a[35])\(a[36])") 
         aaUpvotes = String("\(a[53])\(a[54])\(a[55])") 
        } 

        self.ref.child("IssueLikes").child("Abortion").child("Upvotes").setValue(Int(aaUpvotes)! + 1) 
       } 
      }) 

      aab = false 
      un_1.textColor = UIColor.whiteColor() 
      un_2.textColor = UIColor.whiteColor() 
      un_2.text = String(Int(un_2.text!)!+1) 
      un_2.textColor = UIColor.blueColor() 
      aac = true 

     } else { 
      print("AAC") 
     } 
    } 
} 

내 코드에서 알 수 있듯이 버튼을 클릭하면 Firebase를 새로운 값으로 업데이트하려고합니다. 그러나 이러한 버튼을 클릭하면 데이터베이스의 Firebase 값이 1 밀리 초마다 1에서 0으로 변경됩니다.Firebase 빠른 데이터로 데이터 가져 오기

나는 여러 번 내 코드를 검사 한 결과 아무 것도 잘못 찾을 수 없습니다. 어떤 도움이라도 대단히 감사합니다.

답변

0

옵저버 초기화는 @IBAction 처리기에 속하지 않습니다.

일단 설정되면 부모 UIViewController의 수명 기간 동안, 또는 전체 App-check 문서의 유효 기간 동안 유효합니다. 따라서 이벤트에 등록 된 옵저버가 많습니다. 모든 복제본 - 버튼을 클릭 할 때마다 추가 복제본이 생성됩니다.

관찰자 viewDidLoad()에 설정된 제거 deinit로, 또는 반대로 viewWillAppear에서와 viewDidDisappear에서 제거되어야한다.

귀하의 식별자 이름을 제외하고는 거의 의도적으로 난독 화하도록 선택한 것처럼 완전히 암호입니다. 이렇게하면 자신의 정신적 절차가 지연 될뿐만 아니라 코드를 보거나 도움을 얻는 모든 사람이 느려집니다.

+0

아, 그건 도움이됩니다. 비밀 식별자 이름에 관해서는 큰 응용 프로그램입니다. 실제로 모든 것을 말하면 체계적인 방법입니다. 고마워. –

관련 문제