В Swift 4.0 частное теперь доступно в расширении, но в пределах одного и того же файла. Если вы объявляете/определить расширение в другом файле, то ваша переменная не будет доступна для внутреннего абонента **
Файл Private
File-частный доступ ограничивает использование объекта для его собственного определяющего исходного файла. Используйте файл-частный доступ, чтобы скрыть детали реализации определенной функциональности, когда эти данные используются во всем файле.
Синтаксис:fileprivate <var type> <variable name>
Пример:fileprivate class SomeFilePrivateClass {}
Частный
Частный доступ ограничивает использование объекта к декларации ограждающей и расширений этой декларации, которые находятся в той же файл. Используйте частный доступ, чтобы скрыть детали реализации определенной функциональности, когда эти данные используются только в рамках одной декларации.
Синтаксис:private <var type> <variable name>
Пример:private class SomePrivateClass {}
Здесь более подробно обо всех уровней доступа: Swift - Access Levels
Посмотрите на это изображения:
Файл: ViewController.swift
Здесь контроллер расширения и просмотра находится в одном и том же файл, следовательно, приватная переменная testPrivateAccessLevel
доступна в расширении
![enter image description here](https://i.stack.imgur.com/gMFT4.png)
Файл: TestFile.swift
Здесь расширение и вид контроллера оба находятся в разных файлах, поэтому приватная переменная testPrivateAccessLevel
не доступна в расширении.
![enter image description here](https://i.stack.imgur.com/vl5Pf.png)
![enter image description here](https://i.stack.imgur.com/imr3Y.png)
Здесь класс ViewController2
подкласс ViewController
и оба находятся в одном файле. Здесь частная переменная testPrivateAccessLevel
недоступна в подклассе, но fileprivate доступен в подклассе.
![enter image description here](https://i.stack.imgur.com/3EVz4.png)
Если вы автоматически конвертируете код из Swift 2 в 3, Xcode превратит 'private' в' fileprivate'. Однако, если у вас есть роскошь делать это вручную, вы можете часто получать выгоду от того, чтобы оставить 'private' как' private' ... если он компилируется, все хорошо. –