ViewControllers'ım arasında paylaşılması gereken global bir değişkenim var.
Objective-C'de, statik bir değişken tanımlayabilirim, ancak Swift'de global bir değişkeni tanımlamanın bir yolunu bulamıyorum.
Bunu yapmanın bir yolunu biliyor musun?
ViewControllers'ım arasında paylaşılması gereken global bir değişkenim var.
Objective-C'de, statik bir değişken tanımlayabilirim, ancak Swift'de global bir değişkeni tanımlamanın bir yolunu bulamıyorum.
Bunu yapmanın bir yolunu biliyor musun?
Yanıtlar:
Resmi Swift programlama kılavuzundan :
Global değişkenler, herhangi bir işlev, yöntem, kapanış veya tür bağlamının dışında tanımlanan değişkenlerdir. Global sabitler ve değişkenler her zaman tembel hesaplanır.
Herhangi bir dosyada tanımlayabilir ve mevcut module
her yerden erişebilirsiniz . Böylece, herhangi bir kapsam dışında dosyada bir yerde tanımlayabilirsiniz. Gerek yoktur static
ve tüm global değişkenler tembel hesaplanır.
var yourVariable = "someString"
Buna mevcut modülün herhangi bir yerinden erişebilirsiniz.
Ancak, Global değişkenler uygulama durumu için iyi olmadığından ve esas olarak hataların nedeni olduğundan bundan kaçınmalısınız.
Bu cevapta gösterildiği gibi , Swift'de onları içine struct
alabilir ve her yerden erişebilirsiniz. Statik değişkenleri veya sabiti Swift'de de tanımlayabilirsiniz. Kapsüllemestruct
struct MyVariables {
static var yourVariable = "someString"
}
Bu değişkeni herhangi bir sınıfta veya herhangi bir yerde kullanabilirsiniz
let string = MyVariables.yourVariable
println("Global variable:\(string)")
//Changing value of it
MyVariables.yourVariable = "anotherString"
MyVariables
böylece, MyViewState
bir kopyası gibi görünüyor / dan hatayı yapıştırmak stackoverflow.com/a/24868789/1187415 :)
Herhangi bir yöntemin veya kapanışın dışında tanımlanan global değişkenler, private anahtar sözcüğü kullanılarak kapsam sınırlandırılabilir.
import UIKit
// MARK: Local Constants
private let changeSegueId = "MasterToChange"
private let bookSegueId = "MasterToBook"
tüm sınıflarınızda kullanmak istiyorsanız kullanabilirsiniz:
public var yourVariable = "something"
sadece bir sınıfta kullanmak istiyorsanız, kullanabilirsiniz:
var yourVariable = "something"