2016-07-05 4 views
0

현재 firebase에서 테이블 뷰 정렬과 관련하여 몇 가지 문제가 있습니다. 내가 달성하고자하는 것은 테이블 뷰에 5 가지 가격 등급을 나열하는 것이며, 모두 이름이 지정된 (tier1, tier5, tier12, tier24, tierPermanent) - 각각은 값 (가격)을 포함합니다.스위프트/파이어베이스 정렬

그러나 데이터베이스에서이 값을 가져 오는 동안 텍스트 (시간)와 가격 계층을 모두 포함하는 테이블보기에서 이러한 값을 표시하는 것이 다소 어렵다는 것을 알았습니다. 지금 내가하고있는 일은 observeEventType을 사용하여 모든 값을 표시 한 다음 각 값을 사전에 저장한다는 것입니다. 그런 다음 [[String : String]] 유형의 사전 배열에 추가합니다.

내가 고민하고있는 것은 이것을 테이블 뷰에서 내림차순으로 표시하는 것입니다. 이 5 가지 값은 모두 선택 사항이므로 값이 포함되어 있지 않을 수도 있습니다. 첫 번째 행에 값을 표시하는 대신 두 번째 행에 빈 셀을 넣은 다음 세 번째 행에 새 값을 표시하는 대신 - 값에 비해 내림차순으로 표시하고 싶습니다. (영구 값은 값이 포함되어 있으면 항상 맨 위에 놓이게됩니다. 그렇지 않으면 tier24가 위에오고 그렇지 않으면 tier12가됩니다.) 각 셀에 대해.

cell.nameLabel.text = cell [index tier .. row] [ "tier .."]로 고유 한 값에 액세스 할 수 있습니다. String - 문제는 어떤 종류의 정렬이 필요하고 데이터가 두 번 표시되지 않도록하는 것입니다. (키와 값을 모두 사용하여 정렬 - 동일한 셀에 키와 값을 모두 표시).

어떻게 접근 할 것입니까?

미리 감사드립니다.

+0

코드를 설명하는 대신 [문제를 재현하는 최소한의 완전한 코드] (http://stackoverflow.com/help/mcve)를 게시하십시오. –

답변

1

정말 충분하지 않은 데이터가 완전히 이것에 대해 질문하지만 방법을 해결하기 위해있다 :

중포 기지 구조 :

tiers 
    -Y0998uas9j 
    tier_type: tier_24 
    time: 20160705130100 
    sort_order: 1 
    -Ykja9s9js9 
    tier_type: tier_05 
    time: 20160705130300 
    sort_order: 3 
    -Yukl9jh8sj 
    tier_type: tier_permanent 
    time: 20160705130500 
    sort_order: 0 

계층이 올바른 순서로 유지하는 정렬 순서를 가지고있다.

tier_permanent = 0 
tier_24 = 1 
tier_12 = 2 
tier_05 = 3 
tier_01 = 4 

과 그들을 읽고 분류, 하강을해야 할 몇 가지 코드 :

var myArray = [[String:String]]() 
    let tiersRef = self.myRootRef.child("tiers") 
    tiersRef.observeSingleEventOfType(.Value, withBlock: { snapshot in 

     for child in snapshot.children { 
      var dict = [String: String]() 
      dict["fbKey"] = child.key as String 
      dict["tier_type"] = child.value["tier_type"] as? String 
      dict["timestam"] = child.value["time"] as? String 
      dict["sort_order"] = child.value["sort_order"] as? String 
      myArray.append(dict) 
     } 

     myArray.sortInPlace({$0["sort_order"] < $1["sort_order"]}) 

     self.mySuperTableView.reloadData() 

     for dict in myArray { //meh, print them so show they are sorted 
      print(dict) 
     } 
    }) 

이 주소 : 그들 내림차순, 분류하고, 타이어가 데이터베이스에 존재하지 않는 경우, 그들은 것입니다 유지 분명히 읽을 수는 없습니다.

문제는 무엇입니까? 그는 티어 이름과 값 (시간?) 사이의 상관 관계에 의문을 제기합니다. 더 많은 정보가 제시되면 다시 한 번 업데이트 할 것입니다.

+0

아주 잘 쓰고 설명해 주신 답변을 주셔서 감사합니다. 그러나 5 개의 개별 테이블보기 셀 클래스를 만들어 문제를 해결했습니다. 그러나 다시 한번, 대단히 감사합니다! – askaale