2014-10-04 20 views
83

Tôi có một biến toàn cầu cần được chia sẻ giữa ViewControllers của tôi.Cách tạo biến toàn cầu?

Trong mục tiêu-C, tôi có thể định nghĩa một biến tĩnh, nhưng tôi không thể tìm cách xác định biến toàn cầu trong Swift.

Bạn có biết cách để làm điều đó không?

+0

một câu trả lời trên đây http://stackoverflow.com/questions/24868120/how-to-create-global-variable-in-swift –

+0

trùng lặp có thể xảy ra của [Làm thế nào để tạo biến toàn cầu trong Swift?] (https://stackoverflow.com/questions/24868120/how-to-create-global-variable-in-swift) –

Trả lời

139

Từ lập trình nhanh chóng guide

biến toàn cầu là các biến được định nghĩa bên ngoài của bất kỳ chức năng, phương pháp, đóng cửa, hoặc loại ngữ cảnh. hằng số toàn cầu và biến luôn tính lười biếng

Bạn có thể định nghĩa nó trong bất kỳ tập tin và có thể truy cập nó trong hiện tại module bất cứ nơi nào. 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 static và tất cả các biến toàn cầu được tính toán một cách lười biếng.

var yourVariable = "someString" 

và bạn có thể truy cập từ bất cứ nơi nào trong mô-đun hiện hành.

Tuy nhiên, bạn nên tránh điều đó vì các biến toàn cầu 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 số answer Nhanh chóng, bạn có thể đóng gói chúng trong struct và có thể truy cập ở mọi nơi. Bạn có thể xác định các biến tĩnh hoặc hằng số nhanh chóng. Đóng gói trong struct

struct MyVariables { 
    static var yourVariable = "someString" 
} 

Bạn có thể sử dụng biến này trong bất kỳ lớp hoặc bất cứ nơi nào

biến
let string = MyVariables.yourVariable 
println("Global variable:\(string)") 

//Changing value of it 
MyVariables.yourVariable = "anotherString" 
+3

* Cấu trúc * của bạn được gọi là 'MyVariables', vì vậy' MyViewState' trông giống như lỗi sao chép/dán từ http : //stackoverflow.com/a/24868789/1187415 :) –

+0

Cảm ơn Martin R. vâng tôi đã sao chép mã từ nó – codester

+6

Nếu bạn sao chép mã từ một câu trả lời khác thì bạn nên nêu rõ ràng (với một liên kết đến câu trả lời gốc) . So sánh http://stackoverflow.com/help/referencing. –

13

toàn cầu được định nghĩa bên ngoài của bất kỳ phương pháp hay đóng cửa có thể được phạm vi hạn chế bằng cách sử dụng các từ khóa riêng.

import UIKit 

// MARK: Local Constants 

private let changeSegueId = "MasterToChange" 
private let bookSegueId = "MasterToBook" 
+14

Một hằng số ("let") không phải là một biến. –