如何从Swift类引用Objective C的AppDelegate?

16 浏览
0 Comments

如何从Swift类引用Objective C的AppDelegate?

我有一个Objective C项目,试图从一个Swift视图控制器调用AppDelegate。以下代码不起作用:\nlet appDelegate =\nUIApplication.sharedApplication().delegate as! AppDelegate\nlet managedContext = appDelegate.managedObjectContext

0
0 Comments

当我们需要在Swift类中引用Objective-C的AppDelegate时,需要进行以下的操作。

1. 在.m文件中添加"(ProjectName)-Swift.h"。

2. 在.h文件中添加AppDelegate。

3. 在AppDelegate文件中添加带有Swift扩展的变量,以便可以在Objective-C和Swift文件中访问。

解决方法如下:

步骤一:在.m文件中添加"(ProjectName)-Swift.h"。

#import "(ProjectName)-Swift.h"

步骤二:在.h文件中添加AppDelegate。

@class AppDelegate;

步骤三:在AppDelegate文件中添加带有Swift扩展的变量,以便可以在Objective-C和Swift文件中访问。

@interface AppDelegate ()

@property (nonatomic, strong) NSString *exampleVariable;

@end

通过以上操作,我们可以在Swift类中引用Objective-C的AppDelegate,并访问其中的变量。

0
0 Comments

问题的出现原因是在Swift类中如何引用Objective C的AppDelegate。解决方法是在桥接头文件中包含"AppDelegate.h",确保解决所有错误。然后创建一个Objective C对象,该对象有一个方法返回AppDelegate对象。它只需要返回AppDelegate指针。对象文件还必须包含"AppDelegate.h"和解决所有错误。然后在Swift文件中,可以创建这个对象并引用任何方法。最后在Swift文件中,可以创建这个对象并引用任何方法。

以下是解决问题的具体步骤:

1. 在桥接头文件中包含"AppDelegate.h",并确保解决所有错误。

2. 创建一个Objective C对象,该对象有一个方法返回AppDelegate对象。方法的实现如下:

-(yourAppDelegate*)giveMeTheAppDelegate{
   return yourAppDelegate;
}

3. 在Swift文件中,创建这个Objective C对象并引用任何方法。示例代码如下:

let theObj = iAmAnObjectiveCObjectWithOneMethod()

let theDelegate = theObj.giveMeTheAppDelegate()

theDelegate?.thisMethodDisplaysText("hello")

0
0 Comments

问题的出现原因是在Swift类中无法直接引用Objective-C的AppDelegate。解决方法是通过添加桥接头文件来实现引用。

首先,需要在项目中添加桥接头文件。然后,在桥接头文件中导入"AppDelegate.h"。

然后,在Swift类中可以使用以下代码来引用AppDelegate:

guard let appDele = UIApplication.sharedApplication().delegate as? AppDelegate else {

fatalError("Unable to reference App Delegate, check settings and riding header")

}

let managedContext = appDele.managedObjectContext

如果在引用的过程中出现"guard"导致的错误,可以尝试添加分号来解决问题。感谢帮助。

0