2016-03-27 5 views
4

Bundan dolayı saçlarımı çekiyorum. İlgili sayfalar ve çoklu öğreticilerle ilgili tüm sayfalara gidiyorum. Burada kodumda yanlış bir şey bulamıyorum, fakat bir şekilde değerleri basarsam (ki bu) çalışır ya da atamazsam başarısız olmaz! NSArray bana daha sonra boş bir dizi veriyor.Firebase with Swift belirsiz kullanımı observeEventType

snapshot.value bir baskı

(friend1, 
    friend2, 
    friend3 
) 

denedim snapshot.value.values ​​... nafile gösterir. Sarılmadan oyun oynamayı denedim ... zar yok. Yine bana belirsiz şeyi verir

friendsList = [String]() 

    ref.observeSingleEventOfType(.Value) { (snapshot) -> Void in 
     if snapshot.value is NSNull { 

     } else { 
      for child in snapshot { 
       self.friendsList.append(child.value) 
      } 
     } 
    } 

: ve bu benim son girişimdir.

cevap

12

Sadece bazı kodlama hataları

Kaldır: (enstantane) -> Void

Değişikliği: snapshot.children

ise anlık olarak anlık yılında çocuk, bir dizi olmadığı sana farz Arkadaş adının bir dize olarak saklanması ve adının adının yapınızdaki bir anahtar olduğunu belirtmek isteriz. Yani

let name = child.value["name"] as? String 
friendsList.append(name!) 

için self.friendsList.append (child.value) değiştirmek İşte düzeltilmiş kod: Benim için

var friendsList = [String]() 

ref.observeSingleEventOfType(.Value, withBlock: { snapshot in 

    if snapshot.value is NSNull { 

    } else { 
     for child in snapshot.children { 
      let name = child.value["name"] as? String 
      friendsList.append(name!) 
     } 
     print("\(friendsList)") 
    } 
}) 
+0

Yapıdaki tuşlar, dizi olarak diziyi ayarladığınızda varsayılan olarak 0, 1, 2, ... şeklindedir. Her çocuğun kendine özgü bir anahtarı vardır ve ben tüm değerlerle döngü yapmak istiyorum. Bunu nasıl yapabilirim? – Aylii

+0

Firebase, Array öğelerini desteklemesine rağmen, yapınız için başka, daha iyi yollar olduğu için genellikle önerilmez (kullanıcı ya da childByAutoId öğelerinin kazananlar). Onların kullanımı çok durumsal ve kolayca köşeye kodlanmış olsun. 0,1, 2 anahtardır, böylece bunları üzerinde yineleyebilir, hatta bunları bir Array'a yerleştirebilir ve üzerinde yineleyebilirsiniz. Ancak, bahsettiğim gibi, diğer yapılara bakmalısınız. Dizi dizisiyle çalışma konusunda ayrı bir soru varsa. Cevabım yardımcı olursa, lütfen kabul edin! – Jay

+0

Üzgünüm, aslında işe yaramadı. Yine de ne olduğunu anlatacağım. AnyObject öğesinden kaldırıldığında bir NSArray haline dönüştüğü türü bilmek için snapshot.value! .dynamicType yazdırdım. Sonra aşağı sustum! [String] daha sonra çalıştı. Yardım etmek için zaman ayırdığınız için gerçekten minnettarım :) – Aylii

0
ref.observeSingleEvent(of: .value, with: { (snapshot) -> Void in 

    }) 

İş, Xcode Eh 8.3.2