नामस्थान के रूप में संरचनाएं
IMO उस प्रकार के स्थिरांक से निपटने का सबसे अच्छा तरीका एक संरचना बनाना है।
struct Constants {
static let someNotification = "TEST"
}
फिर, उदाहरण के लिए, इसे अपने कोड में इस तरह से कॉल करें:
print(Constants.someNotification)
घोंसला करने की क्रिया
यदि आप एक बेहतर संगठन चाहते हैं, तो मैं आपको खंडित उप-संरचनाओं का उपयोग करने की सलाह देता हूं
struct K {
struct NotificationKey {
static let Welcome = "kWelcomeNotif"
}
struct Path {
static let Documents = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
static let Tmp = NSTemporaryDirectory()
}
}
तब आप सिर्फ उदाहरण के लिए उपयोग कर सकते हैं K.Path.Tmp
वास्तविक विश्व उदाहरण
यह सिर्फ एक तकनीकी समाधान है, मेरे कोड में वास्तविक कार्यान्वयन अधिक दिखता है:
struct GraphicColors {
static let grayDark = UIColor(0.2)
static let grayUltraDark = UIColor(0.1)
static let brown = UIColor(rgb: 126, 99, 89)
// etc.
}
तथा
enum Env: String {
case debug
case testFlight
case appStore
}
struct App {
struct Folders {
static let documents: NSString = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString
static let temporary: NSString = NSTemporaryDirectory() as NSString
}
static let version: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
static let build: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String
// This is private because the use of 'appConfiguration' is preferred.
private static let isTestFlight = Bundle.main.appStoreReceiptURL?.lastPathComponent == "sandboxReceipt"
// This can be used to add debug statements.
static var isDebug: Bool {
#if DEBUG
return true
#else
return false
#endif
}
static var env: Env {
if isDebug {
return .debug
} else if isTestFlight {
return .testFlight
} else {
return .appStore
}
}
}