2016-09-29 2 views
0

저는 Swype 2.2 버전에서 완전히 작동했던 몇 달 전에 구입 한 Udemy 코스 코드를 업데이트하려고합니다. 그러나, 나는이 특정 기능에 문제가 있습니다. 실제로는 최근 채팅 내용을 정렬하고 표시합니다 (미리보기 기능 포함). 내가 여기에 오류 얻을업데이트 날짜 정렬 대체

func loadRecents() { 
     firebase.child("Recent").queryOrderedByChild("userId").queryEqualToValue(backendless.userService.currentUser.objectId).observeEventType(.Value, withBlock: { 
      snapshot in 

      self.recents.removeAll() 

      if snapshot.exists() { 

       let sorted = (snapshot.value!.allValues as NSArray).sortedArrayUsingDescriptors([NSSortDescriptor(key: "date", ascending: false)]) 

       for recent in sorted { 

        self.recents.append(recent as! NSDictionary) 
        firebase.child("Recent").queryOrderedByChild("chatRoomID").queryEqualToValue(recent["chatRoomID"]).observeEventType(.Value, withBlock: { 
         snapshot in 
        }) 

       } 

      } 

      self.tableView.reloadData() 
     }) 

    } 

: 여기

코드입니다
let sorted = (snapshot.value!.allValues as NSArray).sortedArrayUsingDescriptors([NSSortDescriptor(key: "date", ascending: false)]) 

내가 sortedArrayUsingDescriptors가되지 않습니다 믿습니다,하지만 난 아직 확실하지 않다. 이 현재 코드를 대체 할 수있는 것은 무엇입니까?

미리 감사드립니다.

업데이트 :

이 내가 점점 오전 오류는 다음과 같습니다

THread 1: EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP, subcode=0x0) 
+0

에 내 대답을 참조하십시오. – torinpitchers

+0

@torinpitchers 답변이 업데이트되었습니다. 이 오류가 발생합니다 : EXC_BAD_INSTRUCTION (코드 = EXC_I386_INVOP, subcode = 0x0) – askaale

답변

0

질문에 대한 구체적인 답변 : 또한

let sorted = ((snapshot!.value! as AnyObject).allValues as NSArray) 
     .sortedArray(using: [NSSortDescriptor(key: "date", ascending: false)]) 

: (스위프트 3) 대체가 무엇인지 , 게시 된 코드는 기본적으로 작동합니다 - 최근 섹션의 섹션의 코드가 Swift 3 용으로 잘못 구성되었지만

의 데이터는 의 데이터가 문자열 일 수 있으므로 해당 섹션의 최근 [ "chatRoomID"]가 사전 일 수 있습니다. Firebase 구조에 따라 다릅니다.

마지막으로 NSSortDescriptors 등에 대한 종속성을 줄이고 더 좋은 방법으로 수행하는 것이 좋습니다. 당신이 컴파일러에서 수신하고있는 정확한 오류, 이것은 정확한 답을 얻기의 기회를 증가시킬 것입니다 추가 할 수 있다면

은 이전 질문

Swift 3 Firebase update code convertion - sorting

+0

흠, 알겠습니다. 그러나 코드는 현재 실행중인 것처럼 보입니다. 동일한 값을 가진 여러 개의 '최근'셀을 표시합니다. 스냅 샷의 구조가 [String : AnyObject]이므로 이전 게시물에 대한 귀하의 대답은 약간 벗어난 것처럼 보입니다. '최근'에 대한 코드를 어떻게 조작 할 수 있는지에 대한 아이디어가 있습니까? – askaale

+0

@askaale 실제로 답변에 게시 된 구조는 게시 된대로 [String : AnyObject] 또는 [String : [String : String]] 일 수 있습니다. Firebase 구조로 작업하기 때문에 AnyObject는 글자 그대로 문자열, 배열, 사전 또는 사전 사전 일 수 있습니다. 구조 게시는 항상 도움이됩니다. 질문을 업데이트하고 FireBase 구조를 포함 할 수 있습니까? – Jay