2016-04-28 3 views
0

Я пытаюсь восстановить каждый объект, хранящийся в Firebase. Не знаете, как идти дальше. Ниже приведен мой код и snap.value. Мне нужно восстановить String «cbc» и «cp24», а также значения для datasaved и url. «cbc» и «cp24» - это имена, которые я ввел при сохранении.Как получить данные из Firebase?

Ref_UsersBase.observeEventType(.Value, withBlock: { snapshot in 

if let snapshots = snapshot.children.allObjects as? [FDataSnapshot] { 

      for snap in snapshots { 

       print(snap.value) 


      }    
     } 
    }) 

{ 

// Здесь snap.value напечатал:

{ 
"-KGOzXm1lLtyS23cOR-G" =  { 
    cp24 =   { 
     datesaved = "Apr 27, 2016"; 
     url = "https://www.google.ca/search?site=&source=hp&ei=H0chV6pfhKeOBJChpqAN&q=cp24+weather&oq=&gs_l=mobile-gws-hp.1.0.41l2.0.0.0.13343.1.1.0.1.1.0.368.368.3-1.1.0....0...1..64.mobile-gws-hp..0.1.6.2.JC6OI95nuYc"; 
    }; 
}; 
"-KGOznhRN0J2OVlIogZ0" =  { 
    cbc =   { 
     datesaved = "Apr 27, 2016"; 
     url = "http://www.cbc.ca/beta/news/canada/toronto"; 
    }; 
}; 

}

ответ

1

Вот что я сделал в подобной ситуации, я надеюсь, что это поможет вам.

Я объявляю переменную для хранения моментального снимка snapshot.value, первого массива для хранения ключей на первом уровне («-KGOzXm1lLtyS23cOR-G») и второго массива для хранения ключей второго уровня («cp24»).

var receivedData = [String:[String:[String:String]]]() 
var firstKeyArray = [String]() 
var secondKeyArray = [String]() 

Я хранил весь снимок.значения в полученныхData.

Ref_UsersBase.observeEventType(.Value, withBlock: { snapshot in 
    self.receivedData = snapshot.value  
}) 

Заполните firstKeyArray и secondKeyArray

var i = 0 

for(key,_) in receivedData{ 
    firstKeyArray.append(key) 
    for(key,_) in receivedData[firstKeyArray[i]]!{ 
     secondKeyArray.append(key) 
    } 
    i += 1 
} 

Наконец, вы бы получить доступ к datesaved и URL-адрес значения, как этого

print(receivedData[firstKeyArray[0]]![secondKeyArray[0]]!["datesaved"]!) 

//prints Apr 27 
+0

Спасибо, человек. Метод firstKeyArray работает. for (key, _) in receivedData [firstKeyArray [i]] { secondKeyArray.append (ключ) } не работает. Ошибка: не может подстроить значение типа '[String: [String: [String: String]]]' с индексом типа 'ArraySlice ' – Mike

+0

Извините, у меня было несколько ошибок и отредактировал мой ответ, я сделал игру, имитирующую моментальный снимок, который вы получаете от firebase и успешно распечатываете «даты». Дайте мне знать, если это сработает для вас. – valencieu

+0

Спасибо человек. Я замечаю эти ошибки, когда я кодировал и модифицировал его. У меня такая же ошибка. Я предполагаю, что «cbc» и «cp24» - это имена, которые я ввел при сохранении, поэтому не могу получить это как ключ. Иногда работа на игровой площадке не означает, что она будет работать в реальном приложении. – Mike

Смежные вопросы