Как установить и получить данные в классе модели?

Я хочу установить данные в классе модели и получить данные из класса модели. Я плохо разбираюсь в MVC, но хочу изучить его. Когда я получаю данные в этот раз, он отображается пустым. как я могу получить доступ к данным? Пожалуйста, дайте мне какое-нибудь решение для этого.

Ниже моя модель:

  class Model: NSObject {
        var RTC_minute:String!
        var RTC_hour:String!
        var RTC_day:String!
        var RTC_year:String!
        var Flag:String!

        init(RTC_minute:String, RTC_hour:String, RTC_day:String, RTC_year:String, Flag:String) {
            self.RTC_minute = RTC_minute
            self.RTC_hour = RTC_hour
            self.RTC_day = RTC_day
            self.RTC_year = RTC_year
            self.Flag = Flag
        }
    }

Ниже мой набор данных viewController:

    class viewController:UIViewControoler {
    var holidayData: Model = Model(RTC_minute:"", RTC_hour:"", RTC_day:"", RTC_year:"", Flag:"")          
    override func viewDidLoad() {
                super.viewDidLoad()
                holidayData?.RTC_minute = "0x55"
                holidayData?.RTC_hour = "0x21"
                holidayData?.RTC_day = "0x13"
                holidayData?.RTC_year = "0x20"
                print(holidayData?.RTC_minute as Any)
            }
        }

Ниже приведен мой контроллер просмотра данных для получения данных.

       class ViewController:UIViewController {
           var holidayData: Model = Model(RTC_minute:"", RTC_hour:"", RTC_day:"", RTC_year:"", Flag:"")
       override func viewDidLoad() {
            super.viewDidLoad()
            print(holidayData?.RTC_minute)
            print(holidayData?.RTC_hour)
            print(holidayData?.RTC_day)
            print(holidayData?.RTC_year)
        }
    }
Никогда никогда никогда объявляет свойства как неявно развернутые необязательные, которые инициализируются необязательными значениями в методе init. Необязательные значения никогда не вызывают сбоя. Удалите восклицательные знаки. И в большинстве случаев вам не нужно наследование от NSObject и часто даже не класса. И, пожалуйста, соблюдайте соглашение об именах, что имена переменных - lowerCamelCased
vadian 26.10.2018 08:17
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
1 151
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Поскольку модель содержит множество параметров, вам не нужно инициализировать класс модели со всеми свойствами в методе init (: _).

Измените вашу модель на этот формат.

class Model: NSObject {

    var RTC_minute:String!
    var RTC_hour:String!
    var RTC_day:String!
    var RTC_year:String!
    var Flag:String!

    override init() {

        self.RTC_minute = ""
        self.RTC_hour = ""
        self.RTC_day = ""
        self.RTC_year = ""
        self.Flag = ""
    }

    init(_ dict: [String: Any]?) {
        self.RTC_minute = dict?["RTC_minute"] as? String ?? ""
        self.RTC_hour = dict?["RTC_hour"] as? String ?? ""
        self.RTC_day = dict?["RTC_day"] as? String ?? ""
        self.RTC_year = dict?["RTC_year"] as? String ?? ""
        self.Flag = dict?["Flag"] as? String ?? ""
    }
}

Теперь вы можете инициализировать модель с помощью

let apiResponseData = //Data from API Response and formatted with JSONSerialization
let model = Model(apiResponseData)

//For dummy model with empty values, here we no need to worry about nil values
let model = Model()

//Accessing the model
print("RTC_ minute: \(model.RTC_minute)")
Ответ принят как подходящий

Вы можете использовать одноэлементный дизайн для назначения и доступа к вашей модели в любом месте вашего модуля.

Приведенный ниже код может вам помочь

final class MainDataStore {
    static let sharedInstance = MainDataStore()

    var RTC_minute:String!
    var RTC_hour:String!
    var RTC_day:String!
    var RTC_year:String!
}

используйте приведенные ниже методы для присвоения значений

MainDataStore.sharedInstance.holidayData?.RTC_minute = "0x55"

и получить значения

var value = MainDataStore.sharedInstance.holidayData?.RTC_minute

Примечание. Приведенный выше код соответствует требованию @vikas.

Другие вопросы по теме