Примечание: этот ответ для Swift 2
Свифт языка программирования состояний:
Swift обеспечивает три уровня доступа для объектов в рамках кода. Эти уровни доступа относятся к исходному файлу, в котором определен объект , а также относительно модуля, к которому принадлежит исходный файл .
Если вы не прошли тест private
уровня доступа с помощью Swift, это поможет вам шаг за шагом.
1/Создать новый проект Xcode.
2/Создать файл, MyPrivateVar.swift, и добавьте в него следующий код:
class MyPrivateVar {
private var priv: String? = nil
}
3/Создать второй файл, MySecondClass.скор, и добавьте в него следующий код:
class MySecondClass {
init() {
var myPrivateVar = MyPrivateVar()
myPrivateVar.priv = "some string"
}
}
Xcode будет немедленно дать вам Swift сообщение об ошибке компилятора:
«MyPrivateVar» не имеет элемент с именем «собств»
4/Теперь удалите два предыдущих файла из вашего проекта и создайте один файл TwoClassesInAFile.swift со следующим кодом:
class MyPrivateVar {
private var priv : String? = nil
}
class MySecondClass {
init() {
var myPrivateVar = MyPrivateVar()
myPrivateVar.priv = "some string"
}
}
На этот раз, вы не получите сообщение об ошибке Swift компилятора, и вы будете иметь возможность получить доступ к MyPrivateVar
«S priv
частной собственности от MySecondClass
потому что priv
и MySecondClass
находятся в одном файле (ваш TwoClassesInAFile.swift файла) ,
Кроме того, уровни доступа также работают для глобальных переменных. Например, Xcode не будет давать какие-либо ошибки компилятора, если следующий код является частью того же ViewController.swift файла:
import UIKit
private var globalPrivate : String? = nil
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
globalPrivate = "some string"
println(globalPrivate)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Однако, если определить globalPrivate
вне ViewController.swift, Xcode будет сообщение об ошибке:
использование неразрешенного идентификатора
добавления тегов swift2 «globalPrivate», так как это уже не верно swift3 –