iOS:Objective C代码如何在Swift中读取静态变量?

iOS:Objective C代码如何在Swift中读取静态变量?,ios,objective-c,swift,Ios,Objective C,Swift,例如,假设我有一个这样的类,带有一个静态变量pi let pi: Double = 3.1415926 class MyClass { // ... } 如何允许目标C代码使用静态变量pi? projectName Swift.h类将自动生成这样的代码(只是一个小示例,并非100%准确) 所以pi没有被添加到projectName Swift.h中。这是一个关于我的项目正在发生什么的小例子,也许它应该生成静态变量,而我遗漏了一些东西。任何提示或建议,以解决这个或使这项工作将不胜感激 您无

例如,假设我有一个这样的类,带有一个静态变量pi

let pi: Double = 3.1415926

 class MyClass {
// ...
 }
如何允许目标C代码使用静态变量pi? projectName Swift.h类将自动生成这样的代码(只是一个小示例,并非100%准确)


所以pi没有被添加到projectName Swift.h中。这是一个关于我的项目正在发生什么的小例子,也许它应该生成静态变量,而我遗漏了一些东西。任何提示或建议,以解决这个或使这项工作将不胜感激

您无法访问目标C上的Swift全局变量

您可以访问类或协议中任何 标记为@objc属性,只要它与 目标-C.这不包括仅Swift功能,如所列功能 这里

  • 仿制药
  • 元组
  • Swift中定义的枚举
  • Swift中定义的结构
  • Swift中定义的顶级功能
  • Swift中定义的全局变量
  • Swift中定义的类型别名
  • 快速式变量
  • 嵌套类型
  • 咖喱函数


也请检查此项。

我会将pi设为静态,并将其放入MyClass中。还可以像下面这样在它们前面添加@objc

@objc class MyClass { 
    @objc static let pi = 3.14
}
然后在你的目标C代码中,你可以这样调用它

CGFloat piValue = MyClass.pi;

您还需要指出它们是公共的

@objc public class MyClass { 
    @objc public static let pi = 3.14
}

你能用一个类方法为你的用例公开静态变量吗?我将不得不修改目标c代码,但我想它可以工作得很好。还有,你的意思是这样的?类var pi:Double{return 3.1415926}您应该看看这是JRG建议的路径,特别是Martin的答案这是一个非常好的答案(xCode 7.3.1)看起来不再需要
@objc
。此外,无法从Objective-C访问根类,您必须继承
NSObject
@objc public class MyClass { 
    @objc public static let pi = 3.14
}