Проблемы с пониманием файлов Xcode Swift и объявлений класса Struct - PullRequest
0 голосов
/ 21 октября 2019

Я изучаю Swift и SwiftUI одновременно. У меня есть некоторый опыт программирования, но мой опыт - функциональное программирование, поэтому ООП для меня все еще ново. Я смотрел и следил за несколькими видео от разработчиков на SwiftUI, и я чувствую, что использование элементов управления и модификаторов имеет смысл. Однако, когда я готовился к созданию приложения, я подумал, что имеет смысл построить мою структуру данных в свой собственный файл Swift (как структуру), а затем создать его экземпляр и передать эти «тестовые данные» в мой ContentView, чтобы я мог работать нади посмотреть, как построить вид так, как я хотел. В настоящее время пытается понять путаницу: ГДЕ я должен определить свою модель данных и ГДЕ создать ее экземпляр и заполнить ее данными, а затем как передать ее в мое представление контента. Я надеюсь, что это имеет смысл. Если у меня есть отдельный файл PlayerView.swift, и я определяю свою структуру для «Player», а затем объявляю переменную testdata = PlayerView (), а затем заполняю testdata.name = «Stephen», например, testdata GLOBAL для остальной части swiftокружающая обстановка. Опять же, наличие его в виде отдельного файла сбивает меня с толку, так как я не понимаю глобальную / переменную область действия.

Ответы [ 3 ]

0 голосов
/ 21 октября 2019

Структуры и классы являются хорошим выбором для хранения данных и моделирования поведения в ваших приложениях, но их сходство может затруднить выбор одного из другого.

при добавлении нового типа данных в ваше приложение:

  • Использовать структуры по умолчанию.
  • Использовать классы, когда вам нужна совместимость с Objective-C.
  • Использовать классы, когда вам нужно контролировать идентичность данных, которые вы используете. моделирование.
  • Используйте структуры вместе с протоколами для принятия поведения путем совместного использования реализаций.

Структуры могут включать в себя хранимые свойства, вычисляемые свойства и методы. Более того, структуры Swift могут принимать протоколы, чтобы получить поведение посредством реализаций по умолчанию. Стандартная библиотека Swift и Foundation используют структуры для часто используемых типов, таких как числа, строки, массивы и словари.

Когда нам нужно использовать Class

Если вы используете Objective-C API, который должен обрабатывать ваши данные, или вам нужно вписать вашу модель данных в существующую иерархию классов, определенную в Objective-C, вам может потребоваться использовать классы и наследование классов для моделированияданные. Например, во многих средах Objective C предоставляются классы, которые, как вы ожидаете, должны быть подклассами.

или когда нам нужно контролировать идентичность, мы используем класс для моделирования данных. классы по-прежнему считаются различными с помощью оператора тождества (===). Это также означает, что когда вы делитесь экземпляром класса со своим приложением, изменения, которые вы вносите в этот экземпляр, видны для каждой части кода, содержащей ссылку на этот экземпляр.
Например, если у вас есть тип, представляющийподключение к локальной базе данных, код, который управляет доступом к этой базе данных, требует полного контроля над состоянием базы данных, как видно из вашего приложения. В этом случае целесообразно использовать класс, но не забудьте ограничить, какие части вашего приложения получают доступ к общему объекту базы данных.

Когда нам нужно использовать Struct

  • Используйте структуры при моделировании данных, которые содержат информацию о сущности с идентичностью, которой вы не управляете.
  • Использование структур и протоколов для наследования модели и совместного использования поведения

    Структуры и протоколы могут принимать только протоколы, они не могут наследоваться от классов.

относится Выбор между структурами и классами

0 голосов
/ 21 октября 2019

В SwiftUI обычный подход состоит в том, чтобы написать класс данных модели в виде ObservableObject и внедрить его в среду вашего приложения, чтобы он был доступен для всех структур представления.

0 голосов
/ 21 октября 2019

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

MVC - Pattern Controller Pattern

View - PlayerView - здесь у вас должны быть все методы, связанные с view

Модель: make PlayerModel - создайте свою структуру "Player"

Controller - инициируйте вашу модель или своими словами "объявите переменную testdata = PlayerView ()"

После того, как вы полностьюпонять эту модель, а затем попробуйте узнать о MVVM.

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