2016-10-19 9 views
0

전적으로이 문제를 해결할 수는 없지만 적절하고 부적절한 방법이 있으며 결함있는 방법을 사용하고 싶지는 않습니다. 나는 중포 기지에서이 스냅 샷을 가지고 있고, 그래서 같이있는 NSDictionary로 선언 : 나는 commentDict를 인쇄 할 때NSDictionaries에서 값을 개별 변수로 가져 오는 올바른 방법은 무엇입니까

let commentDict = commentsDictionary.value as? NSDictionary 

그것은 다음과 같습니다

commentText = Fififgkffy; 
    postedBy = USXhV0QYkpbSzAmXgfeteXHuoqg2; 
    commentText = Fhzifigh; 
    postedBy = USXhV0QYkpbSzAmXgfeteXHuoqg2; 

CommentDict 항상 같이 표시됩니다. 항상 2 개의 항목이 있습니다. 항목을 잡고 변수에 할당하는 올바른 방법을 알고 싶습니다. 내가 전에 사용하지만, 단 하나 개의 항목에있는 한 가지 방법은 for 루프에서 이러는 것입니다 :

if name as! String == "postedBy" { 

는 다음 나는 "postedBy"사전 항목의 값을 얻는다. 그래도 2 개의 항목이 있으면 commentText 및 postedBY에 대해 배열을 좀 작게 만들고 각 항목에 2 개의 배열이 있어야합니까? 또 다른 중요한 점은 이들이 자신의 그룹에 있어야한다는 것입니다. 나는 어떤 "commentText"가 첫 번째 그룹이고 두 번째 그룹이 "postedBy"인지를 추적해야합니다.

장기간에 걸쳐 나는 commentText1, postedBy1, commentText2, postedBy2를 모두 별도의 String 변수로 끝내야합니다.

+0

NSDictionary의 배열에 캐스트 할 수 있습니까? 'commentDict' 인쇄 값은'[]'이어야합니다 – xmhafiz

+0

firdatasnapshot이나 w/e를 nsdictionary로 변환하면 2 개의 별도 사전이나 이상한 것을 모르는 것 같아요 –

+0

You 당신이 그것을 하나의 큰 사전으로 취급 할 수있는 것을 아십시오. commentDict에서 for (name, value)와 같은 for 루프를 사용하면 값을 출력하므로 모든 값을 출력하므로 값이 4가됩니다. 나는 그 중 4 개를 모두 문자열 배열에 넣을 수 있습니다. tbh 나는 이것이 어떻게 순서가 어긋나 질지를 보지 못한다는 것을 의미합니다. –

답변

0

이것은 내가 끝내었지만 더 나은 "적절한"방법이 있는지 알고 싶습니다. 배열에 제대로 채워지는지 확인하기 위해 if 문을이 메서드에 넣어야 할 수도 있습니다.

if let commentDict = commentsDictionary.value as? NSDictionary { 
    for(name, value) in commentDict { 
      commentInfoArray.append(value as! String) 
    } 
    let comment1Text = commentInfoArray[0] 
    let comment1User = commentInfoArray[1] 
    let comment2Text = commentInfoArray[2] 
    let comment2User = commentInfoArray[3] 
} 
0

당신이 당신의 구조로이를 사용하여 시도 찾고있는 유일한 postedBycommentText 관계의 경우 : - 그런 다음 검색에에 데이터를 추가 할 사전을 사용

USXhV0QYkpbSzAmXgfeteXHuoqg2 : comment1 : true, 
            comment2 : true, 
    //postedById : [postText] 

가 : -

db_Ref.child(userID).observeSingleEvent(of: .value, with: {(snap) in 

     if let commentDict = snap.value as? [String:AnyObject]{ 

      for each in commentDict{ 

       print(each.key) // Append your key here 

      } 
     } 
    }) 
+0

촬영 해 봤어? – Dravidian