该文件说:
Swift编译器会自动将C和Objective-C源文件中定义的全局常量作为Swift全局常量导入。
但这并没有说相反的话。我需要定义一个全局swift常数,并且能够像全局c常数一样客观地看到它。如快速定义:
public let CARDS = ["card1", "card2"]
并在物镜c端使用它,例如
NSLog(@"Cards count: %d", [CARDS count])
我该怎么办?我已经导入了迅速自动生成的标题,例如:
#import "MyProject-Swift.h"
在Xcode中,如果我command-click使用它,它将带我到swift代码中的正确位置,但是在编译时,我得到:
command-click
'User of undeclared Identifier CARDS'
从我的客观角度来看。
这是关于它的文件
您可以访问标有@objc属性的类或协议中的任何内容,只要它们与Objective-C兼容即可。这不包括仅Swift的功能,例如此处列出的功能: 泛型 元组 在Swift中定义的枚举 Swift中定义的结构 Swift中定义的顶级函数 Swift中定义的全局变量 Swift中定义的Typealiases 斯威夫特风格的变数 嵌套类型 咖喱函数
您可以访问标有@objc属性的类或协议中的任何内容,只要它们与Objective-C兼容即可。这不包括仅Swift的功能,例如此处列出的功能:
不能从Objective-C访问全局变量(包括常量)。
相反,您必须声明一个具有全局常量访问器的类。
// Swift public let CARDS = ["card1", "card2"] @objc class AppConstant { private init() {} class func cards() -> [String] { return CARDS } } // Objective-C NSArray *cards = [AppConstant cards];