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 moduleher yerden erişebilirsiniz . Böylece, herhangi bir kapsam dışında dosyada bir yerde tanımlayabilirsiniz. Gerek yoktur staticve 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 structalabilir 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"
MyVariablesböylece, MyViewStatebir 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"