2017-12-10 1 views
0

이미지 값을 검색하고 싶습니다. 노드는 이렇게 보입니다. url1, url2, url3을 검색하고 싶습니다.Firebase가 신속하게 autoId 값을 검색합니다.

"Post": { 
    "uid": { 
     "Text": "some text", 
     "images": { 
     autoID1: url1, 
     autoID2: url2, 
     autoID3: url3 
     } 
    } 
    } 

문제는 키가 자동으로 생성된다는 것입니다. 그래서, 저는 보통 이런 식으로 캐스팅합니다.

if let dictionary = snapshot.value as? [String:Anyobject] 
let text = dictionary["text"] as? String 

이 경우에는 autoID 키를 캐스팅하고 값을 얻는 방법을 알지 못합니다. 나는 아래의 코드를 시도했지만 오류가

유형의 값을 캐스팅 할 수 없습니다 말했다 __NSDictionaryM '(0x10af491c8) '는 NSString '(0x10a0bad68)에. 나는 루프 for snap in snapshot.children 같은 세 가지 URL이 있습니다 또한 경우

func fetchImages() { 
    ref.child("Post").child(uid!).child("images").observe(.value, with: { (snapshot) in 

      let downloadUrl = snapshot.value as! String 
      let stoRef = Storage.storage().reference(forURL: downloadUrl) 

      stoRef.getData(maxSize: 1*1024*1024, completion: { (data, error) in 
       let pic = UIImage(data: data!) 
       self.imagesArray.append(pic!) 
      }) 

    }, withCancel: nil) 
} 

을 통해 사용해야합니까? 어떻게 그 URL을 통해 반복하고 imagesArray에 넣어야합니까? 미리 감사드립니다.

답변

1

아주 가까이 있습니다. 키가 "이미지"입니다 값 쌍 : 기억해야 할 것은 당신이

.child("images") 

을받을 때 어린이

"images": { 
    autoID1: url1, 
    autoID2: url2, 
    autoID3: url3 

을 포함하는 문자열하지만 다른 키가 아닌 노드가 실제로 있다는 것입니다 값은 자식 노드입니다.

는, 아이들을 얻을 스냅 샷으로 각각 캐스팅, 스냅 샷에 자식 노드를 반복하려면 autoID1 등 인 키에 (다른 키 값 쌍을)과 값 (문자열)

URL입니다 심판 클래스 VAR이 경우 귀하의 질문에 나타나는
let imagesRef = self.ref.child("Post").child("uid_0").child("images") 
imagesRef.observeSingleEvent(of: .value, with: { snapshot in 
    for child in snapshot.children { 
     let snap = child as! DataSnapshot 
     //let key = snap.key //autoID1, autoID2 etc 
     let downloadUrl = snap.value as! String 
     let stoRef = Storage.storage().reference(forURL: downloadUrl) 
     //get your pic 
    } 
}) 

,이 참조되어야 또한

self.ref 

로, 당신은 당신이 변경을 통보 할 수 있도록 노드에서 관찰자를 마칠 경우, .observe를 사용하십시오. 제 경우에는 단지 한 번만 읽고 싶었 기 때문에 observeSingleEvent를 사용했습니다.

+0

정말 고마워요. Jay 완벽하게 작동했습니다! 자세한 설명을 주셔서 감사합니다 :) – Daibaku

관련 문제