Tôi có một biến toàn cục cần được chia sẻ giữa các ViewControllers của tôi.
Trong Objective-C, tôi có thể định nghĩa một biến tĩnh, nhưng tôi không thể tìm thấy cách xác định một biến toàn cục trong Swift.
Bạn có biết một cách để làm điều đó?
Tôi có một biến toàn cục cần được chia sẻ giữa các ViewControllers của tôi.
Trong Objective-C, tôi có thể định nghĩa một biến tĩnh, nhưng tôi không thể tìm thấy cách xác định một biến toàn cục trong Swift.
Bạn có biết một cách để làm điều đó?
Câu trả lời:
Từ hướng dẫn lập trình Swift chính thức :
Biến toàn cục là những biến được định nghĩa bên ngoài bất kỳ ngữ cảnh hàm, phương thức, bao đóng hoặc kiểu nào. Các hằng và biến toàn cục luôn được tính toán một cách lười biếng.
Bạn có thể xác định nó trong bất kỳ tệp nào và có thể truy cập nó hiện tại ở module
bất kỳ đâu. Vì vậy, bạn có thể xác định nó ở đâu đó trong tệp bên ngoài phạm vi bất kỳ. Không cần thiết static
và tất cả các biến toàn cục được tính toán một cách lười biếng.
var yourVariable = "someString"
Bạn có thể truy cập điều này từ bất kỳ đâu trong mô-đun hiện tại.
Tuy nhiên, bạn nên tránh điều này vì các biến Toàn cục không tốt cho trạng thái ứng dụng và chủ yếu là lý do lỗi.
Như được hiển thị trong câu trả lời này , trong Swift, bạn có thể gói gọn chúng trong struct
và có thể truy cập ở bất cứ đâu. Bạn cũng có thể xác định các biến tĩnh hoặc hằng số trong Swift. Gói gọn trongstruct
struct MyVariables {
static var yourVariable = "someString"
}
Bạn có thể sử dụng biến này trong bất kỳ lớp nào hoặc bất kỳ đâu
let string = MyVariables.yourVariable
println("Global variable:\(string)")
//Changing value of it
MyVariables.yourVariable = "anotherString"
MyVariables
, vì vậy MyViewState
trông giống như một sao chép / dán lỗi từ stackoverflow.com/a/24868789/1187415 :)
Các biến toàn cục được xác định bên ngoài bất kỳ phương thức hoặc sự đóng nào có thể bị hạn chế phạm vi bằng cách sử dụng từ khóa private.
import UIKit
// MARK: Local Constants
private let changeSegueId = "MasterToChange"
private let bookSegueId = "MasterToBook"
nếu bạn muốn sử dụng nó trong tất cả các lớp học của mình, bạn có thể sử dụng:
public var yourVariable = "something"
nếu bạn chỉ muốn sử dụng trong một lớp, bạn có thể sử dụng:
var yourVariable = "something"