티스토리 뷰

iOS

iOS ) firebase에서 value로 검색하기

Zedd0202 2017. 11. 9. 18:19
반응형

안녕하세요 :) Zedd입니다.

오늘은..어떤분 질문을 도와주다가 글쓰면 좋을 것 같아서...XD

firebase를 어떻게 프로젝트에 적용시켜야 하는지 모르겠다!! 라는 분들은 <왕초보를 위한 firebase사용법>를 읽어주세요 :)


아무튼 제가 제목을......맞게 썼는지 모르겠지만...

firebase데이터베이스가 이런식으로 생겼어요.

근데 나는 저 name이 zedd인거를 찾아서 그 안에 있는 content랑 location을 가지고 오고 싶어요.

그러니까, "내용"과 "서울"을 가지고 오고 싶은거죠.

ref = Database.database().reference()

ref.observeSingleEvent(of: .value, with: { (snapshot) in

            for child in snapshot.children {

                let snap = child as! DataSnapshot

                if dictionary["name"] as! String == "zedd"{

                    print(snap.key)///zedd 들어있는 상위 디렉토리 이름, 예제에서는 1111

                    print(dictionary["content"] as? String)

                    print(dictionary["location"] as? String)

                    print(dictionary["name"] as? String)

                }

                

            }

        })


이렇게 해주면 된답니다. 

일단 observeSingleEvent메소드는 데이터베이스에 있는 값들을 한번 쫙 읽는 기능을 가지고 있어요.

snapshot은 현재 데이터베이스의 상태를 찰칵하고 찍은 상태라고 볼 수 있어요.

for문 밑에 있는 snap은



위와 같은 걸 담고 있답니다.(for문 한번 돌때 저 snap이 하나씩 나오는거에요.)

1111과 2222는 snap의 key에요. 

snap의 Value들은 content와 뭐 이런것들이겠죠?

snap의 Value들을 Foundation객체로 만들어주고, 제가 찾을 이름을 넣어주면 되는거에요.

저렇게 하면..!



이렇게 값을 가져올 수 있죠.

찾으면 break를 통해 for문을 빠져나온다던가 그러면 되겠죠?


데이터스냅샷이라던가..이런게 어려우신분들은 이렇게 해도 됩니다 :)

사실 위 코드랑 정말 똑같은거에요!!!


ref = Database.database().reference()

ref.observeSingleEvent(of: .value, with: { (snapshot) in

            let values = snapshot.value

            let dic = values as! [String: [String:Any]]

            for index in dic{

               if (index.value["name"] as! String == "zedd"){

                print(index.key)

                print(index.value["content"])

                print(index.value["name"])

                print(index.value["location"])

                }

            }

        })

하지만 저 values를 Foundation객체화 시켜주는 과정에서. 캐스팅타입을 정확하게 줘야겠죠?!?!?!?!

주의해주세요 :)

firebase가 처음엔 정말 어려운데, 익숙해지면 정말 좋아요bb

도움이 되었으면 좋겠습니다...!😘



반응형