Приложение как Instagram

swift
ios

#1

Всем привет! Я делаю приложение на подобие Instagram. Короче говоря я закончил верстку, теперь надо связать с бэкендом (Firebase), с чего начать? Не могу понять, классы вроде создал, что дальше, а может структурами сделать? Самую простую, это получение списка городов я сделал. Вроде БД не нужна, все в кэше будет храниться. Или надо будет хранить авторизованного юзера хранить в БД? Что дальше теперь делать? Как посты отобразить?
Создал такой класс. Как скачивать посты?

class Post {
  var postID: Int?
  var postCategory: String?
  var postLabel: String?
  var postFullText: String?
  var postDate: NSDate?
  var postImage: String?
  var postAdmin: Company?
  var postCity: String?
  var postAdress: String?
  var postStartTime: NSDate?
  var postEndTime: NSDate?
  var postLikeCount: Int?
}

Вот тут я скачиваю города

func getCities() {
    
    childReference.child("countries").observe(.childAdded, with: { (snapshot) in

        //print("This is SNAPSHOT: \(snapshot)")
        let countries = LocationClass()
        countries.id = snapshot.key
        
        if let dictionary = snapshot.value as? [String : AnyObject] {
            countries.contryName = dictionary["countryName"] as? String
            self.countryArray.append(countries)
        }
        
        if let regions = snapshot.childSnapshot(forPath: "regions").value as? [String : AnyObject] {
            for items in regions {
                let regionsObject = Region()
                regionsObject.id = items.key
                regionsObject.cityName = items.value["name"] as? String
                regionsObject.latitude = items.value["latitude"] as? Double
                regionsObject.longitude = items.value["longitude"] as? Double
                self.regionArray.append(regionsObject)
                self.regionArray.sort(by: {$0.cityName! < $1.cityName!})
            }
        }
        
        DispatchQueue.main.async {
            self.tableView.reloadData()
        }
        
    }) { (error) in
        print(error.localizedDescription)
    }
}

Может метод скачивания поста в классе реализовать? У меня ступор. ПОМОГИТЕ. Не знаю с чего начать.


#2

Мой совет: Вначале продумай архитектуру! Можешь использовать MVC или MVVM ну или что душа пожелает!
Потом определись с зоной ответсвенности каждого класса или слоя ( если например MVC, то нужно помнить что View отображает, Модель это вся логика работы с данными, а контроллер осуществляет их взаимосвязь). Уже после этого начинает реализовывать!


#3

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#4

Примерное ТЗ:
Сперва будет незарегистрированный юзер ему показываются только посты и экран для регистрации.
После регистрации уже доступен весь функционал. Подписаться, лайкнуть, посмотреть посты, посмотреть на карте, посмотреть по датам.