База данных Swift Firebase получить данные - PullRequest
0 голосов
/ 28 мая 2018

У меня есть облачная структура Firebase:

enter image description here

Как мне узнать имена firstBook и secondBook и записать в массив

И создать еще один массив с кавычками (Quote1 + Qoute2 + Quote3) из firstbook

Я пытаюсь это:

var array: [String] = []

override func viewDidLoad() {
    super.viewDidLoad()
    Database.database().reference().ref?.child("category").child("book").observe(.value, with: { (snapshot) in
        let valueCat = snapshot.value as! NSDictionary

        let username = valueCat["name"] as? String ?? ""
        print(username)
        self.array.append(username)
    }
}

В другой массив:

var quotAarray: [String] = []

override func viewDidLoad() {
    super.viewDidLoad()
    Database.database().reference().ref?.child("category").child("book").child("firstBook").observe(.value, with: { (snapshot) in
        let valueCat = snapshot.value as! NSDictionary

        let quote = valueCat["Quotes"] as? String ?? ""
        print(quote)
        self.quotAarray.append(quote)
    }
}

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

Проверьте, поможет ли это вам. Я создал образец словаря согласно полученному вами ответу

Используемый код:

/// Sample Data on Base of your Output SHown
var DBData = [["firstBook":["Quotes": ["Quote1":111, "Quote2":222, "Quote3":333 ], "name":"first_Book"]], ["SecondBook":["Quotes":["Quote1":111,"Quote2":222,"Quote3":333],"name":"Second_Book"]]]

/// Names Array - In which book names need to be added
var nameArray = [String]()

/// For loop on base of DBData as it Array of Array Data
for i in 0..<DBData.count {
    /// Assumed You have only one Main key in each array
    /// Can be known before .
    /// if you do not know Let's get keys here in Array at index i
    let keysArray : [String] = Array(DBData[i].keys)

    /// Now get the current dict value on base of key retrieved as in
    /// first case its - firstBook
    /// Second case its - SecondBook
    let currentDictValue = DBData[i][keysArray[0]]

    /// Now get Names of books
    /// name is the key used in your DB its generic and its fixed
    /// Now get value and add in Array
    nameArray.append(currentDictValue!["name"] as! String)
}

/// Output
print("Name Array:\(nameArray)")

Окончательный результат:

enter image description here

Примечание используйте либо кавычки, либо кавычки, ключи должны совпадать в DB

0 голосов
/ 28 мая 2018

@ iOS Geek, а как ваш код может работать с Firebase?

0 голосов
/ 28 мая 2018

Попробуйте это:

 let valueCat = snapshot.value as! NSDictionary
 if let firstBook = valueCat["firstBook"] as? NSDictionary {
     print(firstBook["name"])
 }

Чтобы получить все названия книг, вам нужно пройти через дочерние элементы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...