ฉันมีตัวแปรส่วนกลางที่ต้องแชร์ระหว่าง ViewControllers ของฉัน
ใน Objective-C ฉันสามารถกำหนดตัวแปรแบบคงที่ได้ แต่ฉันหาวิธีกำหนดตัวแปรส่วนกลางใน Swift ไม่ได้
คุณรู้วิธีการทำหรือไม่?
ฉันมีตัวแปรส่วนกลางที่ต้องแชร์ระหว่าง ViewControllers ของฉัน
ใน Objective-C ฉันสามารถกำหนดตัวแปรแบบคงที่ได้ แต่ฉันหาวิธีกำหนดตัวแปรส่วนกลางใน Swift ไม่ได้
คุณรู้วิธีการทำหรือไม่?
คำตอบ:
จากโปรแกรม Swift อย่างเป็นทางการ คู่มือ :
ตัวแปรส่วนกลางคือตัวแปรที่กำหนดไว้นอกฟังก์ชันวิธีการปิดหรือบริบทประเภทใด ๆ ค่าคงที่และตัวแปรทั่วโลกมักจะคำนวณอย่างเฉื่อยชา
คุณสามารถกำหนดเป็นไฟล์ใดก็ได้และสามารถเข้าถึงได้module
ทุกที่ในปัจจุบัน ดังนั้นคุณสามารถกำหนดไว้ที่ใดที่หนึ่งในไฟล์นอกขอบเขตใดก็ได้ ไม่จำเป็นต้องมีstatic
และตัวแปรทั่วโลกทั้งหมดถูกคำนวณอย่างเฉื่อยชา
var yourVariable = "someString"
คุณสามารถเข้าถึงได้จากทุกที่ในโมดูลปัจจุบัน
อย่างไรก็ตามคุณควรหลีกเลี่ยงสิ่งนี้เนื่องจากตัวแปร Global ไม่ดีต่อสถานะแอปพลิเคชันและสาเหตุหลักมาจากข้อบกพร่อง
ดังที่แสดงไว้ในคำตอบนี้ใน Swift คุณสามารถห่อหุ้มไว้struct
และเข้าถึงได้ทุกที่ คุณสามารถกำหนดตัวแปรคงที่หรือค่าคงที่ใน Swift ได้เช่นกัน ห่อหุ้มstruct
struct MyVariables {
static var yourVariable = "someString"
}
คุณสามารถใช้ตัวแปรนี้ในคลาสใดก็ได้หรือที่ใดก็ได้
let string = MyVariables.yourVariable
println("Global variable:\(string)")
//Changing value of it
MyVariables.yourVariable = "anotherString"
MyVariables
ดังนั้นMyViewState
ดูเหมือนข้อผิดพลาดในการคัดลอก / วางจากstackoverflow.com/a/24868789/1187415 :)
ตัวแปรส่วนกลางที่กำหนดไว้ภายนอกวิธีการหรือการปิดสามารถถูก จำกัด ขอบเขตได้โดยใช้คีย์เวิร์ดส่วนตัว
import UIKit
// MARK: Local Constants
private let changeSegueId = "MasterToChange"
private let bookSegueId = "MasterToBook"
หากคุณต้องการใช้ในทุกชั้นเรียนของคุณคุณสามารถใช้ได้:
public var yourVariable = "something"
หากคุณต้องการใช้ในคลาสเดียวคุณสามารถใช้ได้:
var yourVariable = "something"