Скрытие установщиков свойств по классам в Swift - PullRequest
0 голосов
/ 07 июня 2019

Я хотел бы скрыть некоторые установщики и инициализаторы свойств в моих объектах модели Swift.Это справочные данные, которые предоставляет сервер, и ни при каких обстоятельствах они не должны создаваться или изменяться приложением.Это достаточно просто в Swift.

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

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

1 Ответ

0 голосов
/ 07 июня 2019

Если вы объявите свойство с ключевым словом let.Тогда его можно установить только в init типа.

Вы также можете объявить частный установщик, чтобы сделать свойство доступным только для чтения из вызывающего типа, но для чтения / записи внутри типа

struct Foo {
  private(set) var bar: Bool = true

  func toggle() {
    bar.toggle()
  }
}

var foo = Foo()

let barState = foo.bar // This works
foo.toggle() // This works too
foo.bar.toggle() // This will make a compile time error

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