@ Джастин, я тебя понял! Обновил мой ответ, чтобы также считывать данные обратно в массив. Если этот ответ помог, обязательно примите его, чтобы он мог помочь другим.

оя структура JSON (игнорируйте имя пользователя для отправки по электронной почте, то есть для теста)

{
  "Username" : {
    "Username" : {
      "email" : "[email protected]"
    }
  },
  "uid_0" : {
    "Song List" : [ "The National Anthem" ]
  }
}

Я делаю очень упрощенное приложение, используя Swift и Xcode. По сути, пользователь входит в свою учетную запись после регистрации. Оттуда пользователь может выбрать свои любимые песни из дискографии группы в пустой массив. Затем пользователь может нажать кнопку, которая сегментирует их на контроллере табличного представления, который содержит добавленные песни. Пользователь добавляет песни через контроллер представления, который содержит метки с названиями песен и кнопками рядом с названием каждой песни. Когда пользователь нажимает кнопку, метка добавляется в массив.

Я хочу иметь возможность сохранить массив в firebase, чтобы у каждого пользователя были свои любимые песни. Я провел приличное количество исследований и не могу найти ничего, что могло бы направить меня в правильном направлении, поскольку это невероятно просто. Метки не имеют ключей и буквально являются просто метками, добавляемыми в массив.

У меня также установлены модули хранения и базы данных Firebase, и я могу загружать изображения в базу Fire, и пользователь может сохранить это изображение в своей учетной записи, но как сделать то же самое для массива? Вот мой код для массива, чтобы вы могли понять, как он работает.

import UIKit
import Firebase
import FirebaseStorage
import FirebaseAuth
import LocalAuthentication
import FirebaseDatabase

//var refSongs: DatabaseReference! {
//  return Database.database().reference()

//}

var list = [String]()
class SongsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    var ref: DatabaseReference!

    override func viewDidLoad() {
        super.viewDidLoad()
        self.ref = Database.database().reference()
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return list.count
    }

    @IBAction func saveSongs(_ sender: Any) {
        //upload array to firebase storage
        //let defaults = UserDefaults.standard.set(list, forKey: "KeySave")
        //addSongs()

        // create add list reference in fire database
        // let addListRef = refSongs.child("Song List").childByAutoId()

        // let addList1 = list

        // addListRef.setValue(addList1)

        let ref = self.ref.child("uid_0").child("Song List")
        // let songArray = [list] *** Removed this
        ref.setValue(list) //changed to list
        retriveList()
    }

    func retriveList() {
        let ref = self.ref.child("uid_0").child("Song List")
        ref.observeSingleEvent(of: .value, with: {snapshot in
            var mySongArray = [String]()
            for child in snapshot.children {
                let snap = child as! DataSnapshot
                let song = snap.value as! String //!! Program crashes here!!
                mySongArray.append(song)
            }
            print(mySongArray)
        })
    }

    // add labels to array
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell")
        cell.textLabel?.text = list[indexPath.row]
        return (cell)
    }

    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
        if editingStyle == UITableViewCellEditingStyle.delete
        {
            list.remove(at: indexPath.row)
            myTableView.reloadData()
        }
    }

    override func viewDidAppear(_ animated: Bool) {
        myTableView.reloadData()
    }

    @IBOutlet weak var, myTableView: UITableView!
}

Ответы на вопрос(1)

Ваш ответ на вопрос