Swift: переменная доступа из других классов

Вопрос:

Im пытается получить доступ к переменной, определенной в одном классе, из двух других viewControllers. В java я бы установил переменную как статическую, тогда я мог бы получить доступ к ней как variables.varOne. Поскольку переменные класса в Swift в настоящее время не работают, есть ли способ сделать это?

(Пример кода)

class variables
{
var varOne = 1
}

class viewController1
{
func addTwo() //Linked to a button
{
variables.varOne += 2
}
}

class viewController2
{
func addThree //Linked to a button
{
variables.varOne += 3
}
}

Заранее спасибо за помощь!

Ответ №1

Да, переменные класса не поддерживаются. Вы можете использовать свойство типа в структуре.

Определите свои “переменные” как структуру, а не класс.

struct variables {
static var varOne: Int = 1
}

Ответ №2

Поскольку нет переменной класса, доступной еще одним вариантом, вы можете сделать это, чтобы сделать singleton и получить доступ к этим переменным через singleton. Синглоты имеют поточно-безопасную реализацию. Другой альтернативой является определение struct со static переменной

class variables {
//Singleton specific implementation
class var sharedInstance: variables {
struct Static {
static var instance: variables?
static var token: dispatch_once_t = 0
}

dispatch_once(&Static.token) {
Static.instance = variables()
}

return Static.instance!
}



var varone = 1

}
class viewController1
{
func addTwo() //Linked to a button
{
variables.sharedInstance.varOne += 2
}
}

class viewController2
{
func addThree //Linked to a button
{
variables.sharedInstance.varOne += 3
}
}

Теперь вы можете получить доступ к своей переменной в любой класс с теми же состояниями, которые были изменены другими классами. Реализация проекта

    struct variables {
static var varone = 1
}

При этом вы можете получить доступ из других классов

Оцените статью
TechArks.Ru
Добавить комментарий