在组合项目中从Swift类访问Objective-C类中的singleton sharedInstance

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在组合项目中从Swift类访问Objective-C类中的singleton sharedInstance相关的知识,希望对你有一定的参考价值。

我有一个Objective-C项目,其中我添加了一个Swift类。我想从我的Swift代码访问Objective C类的共享实例,但我找不到任何如何执行此操作的示例。以下是Objective-C中的一些代码示例,用于访问我想从Swift执行的共享实例:

//to get property
self.managedObjectContext = [myModel sharedInstance].managedObjectContext;

//to get a string returned by a method in the sharedInstance

NSString *aUser = [[referenceClass  sharedInstance] getUserName];

在单例的Objective-C头文件中,我有

+ (referenceClass*)sharedInstance;

我已经在我的Bridging Header文件中导入了所需的类,例如referenceClass,但是如何使用Swift获取字符串?

类似的东西:(伪代码)

 var username: String = referenceClass.sharedInstance().getUserName()

在此先感谢您的任何建议。

答案

像这样声明你的单例类引用变量

var singletonReference = YourSingletoneClass.sharedInstance() as! YourSingletoneClass

和使用引用变量访问值

var username: String = singletonReference.getUserName()

根据你的例子,你也可以这样使用

var username: String = (referenceClass.sharedInstance() as! referenceClass).getUserName()

注意:如果您希望您的类中的引用变量全局声明

以上是关于在组合项目中从Swift类访问Objective-C类中的singleton sharedInstance的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Xcode 控制台中从 Objective-C 记录 Swift Singletons

为啥我们需要将 Swift 类标记为 `public` 或 `open` 以使其在 Objective-C 框架项目中可访问?

在 Swift 项目中使用 Objective C 类中的 Swift 类

在 Swift 项目中使用 Objective C 类中的 Swift 类

module.map 用于从测试目标访问主目标中的(Swift 和 Objective-C)类

在 Objective-C(测试)代码中导入框架的 Swift 类