簡體   English   中英

從Objective-C文件中以swift訪問常量

[英]Access constant in swift from Objective-C file

我對Swift很新。 我有一個混合項目,其中一些類在Objective-C中,一些是Swift。 我有一個基於Objective-C文件的Constant.h文件。 在這個頭文件中提到了一些常常像波紋管

#define mainViewBgColor [UIColor colorWithRed:248.0/255.0 green:247.0/255.0 blue:247.0/255.0 alpha:1.0]

但問題是我無法在Swift類中訪問此常量。 請參閱下面的Swift代碼

override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = mainViewBgColor //Want to access liek this but this line gives me an error.
        self.loadNavigation();
    }

請建議正確訪問常量的正確方法,特別是Objective-C中的常量寫入。

注意:請考慮我有Bridging-Header.h文件,我已經將常量文件導入到該橋文件中。 即使我可以成功訪問簡單的字符串常量。

編輯的替代解決方案 :我發現在swift中使用常量的替代解決方案是創建新的swift常量文件,讓我們說SwiftConstant.swift並在此文件中定義類似於下面的常量。

let  mainViewBgColor = UIColor(red: 248.0/255.0, green: 247.0/255.0, blue: 247.0/255.0, alpha: 1.0)

現在沒有導入SwiftConstant.swift文件我可以使用常量。 我不知道這是正確的方式,也不希望等待好的答案。

這取決於。

從文檔中

簡單的宏

在通常使用#define指令在C和Objective-C中定義基本常量的地方,在Swift中使用全局常量。 例如,常量定義#define FADE_ANIMATION_DURATION 0.35可以在Swift中更好地表達,讓FADE_ANIMATION_DURATION = 0.35。 因為簡單的類似常量的宏直接映射到Swift全局變量,所以編譯器會自動導入在C和Objective-C源文件中定義的簡單宏。

復雜的宏

復雜的宏在C和Objective-C中使用,但在Swift中沒有對應的。 復雜的宏是不定義常量的宏,包括帶括號的,類似函數的宏。 您可以在C和Objective-C中使用復雜的宏來避免類型檢查約束或避免重新輸入大量的樣板代碼。 但是,宏可能使調試和重構變得困難。 在Swift中,您可以使用函數和泛型來實現相同的結果,而不會有任何妥協。 因此,C和Objective-C源文件中的復雜宏不可用於Swift代碼。

來源: 使用Swift與Cocoa和Objective-C

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM