如何将@class前向声明翻译为Swift?

4

我在Objective-C的AppDelegate中有以下代码:

@class PhoneViewController;

@interface AppDelegate : NSObject <UIApplicationDelegate> {

    IBOutlet UINavigationController *numberActivationFlow;
    IBOutlet UINavigationController *phoneFlow;
    IBOutlet PhoneViewController *phoneViewController;
    IBOutlet UINavigationController *configurationWizardFlow;
    IBOutlet UIViewController *configurationWizardFlowRoot;

    IBOutlet NumberActivationViewController *numberActivationViewController;

    NSManagedObjectModel *managedObjectModel;
    NSManagedObjectContext *managedObjectContext;       
    NSPersistentStoreCoordinator *persistentStoreCoordinator;

    IBOutlet UINavigationItem *captionNavigationItem;

    BOOL initialized;
    BOOL firstTimeExecCompleted;
    BOOL firstTimeActive;
    BOOL started;
    Activation* activation;
    Variant* variant;
}

+ (AppDelegate*) sharedInstance;

我正在将上述类翻译成Swift,我希望知道如何翻译以下行:
@class PhoneViewController;

我有一个问题关于上面的代码 @class PhoneViewController;。因为它不是一个变量,所以在Swift中该怎么写呢?


可能是如何在Swift中引用类?的重复问题。 - Flexicoder
你是在要求我们将Objective-C代码翻译成Swift代码,还是询问如何从Swift代码中访问此Objective-C类的属性?请编辑您的问题,明确您的问题和遇到的问题。 - rmaddy
嗨@rmaddy,抱歉误解了,要从Swift代码访问此Objective-C类的属性,我知道需要在桥接头文件中导入。我需要翻译的是如果您能帮忙的话。 - Steven
正如我所说,[编辑]您的问题以澄清您想要什么。您的评论仍然令人困惑,但我认为您正在要求我们为您翻译代码。这不是免费的代码翻译服务。首先自己尝试一下。使用您尝试过的Swift代码更新问题,并清楚地解释您在翻译方面遇到的问题。我们在这里提供帮助,而不是替您完成工作。 - rmaddy
1
亲爱的 @rmaddy,我并没有要求您为我工作,我只是想问一下如何在Swift中翻译 @class PhoneViewController;,因为它不是变量,如果我知道的话就不会在这里问了。如果您不知道,请不要发表评论,让其他人来回答问题。 - Steven
2个回答

1
现在你已经明确了你的问题,答案很简单。在转换成Swift时,只需忽略@class PhoneViewController这一行即可。
这在Objective-C中被称为前向声明,在Swift中没有对应的概念。

-1

如果您不拥有代码,则不能始终忽略@class前向声明。

“错误”报告:

我使用一个Objective-C库,该库作为不透明的第三方框架使用,只公开头文件。当出现错误时,框架会生成并提供一个MyError对象给代理。到目前为止,一切都很好。

由于使用框架的开发人员从未创建过此类的对象,因此它是不可见的,但是没有关系;由于它是前向声明,所以在ObjC中没问题!但是Swift没有前向声明,在依赖于ObjC框架的Swift文件中忽略了该对象。在这种情况下,没有MyError对象意味着没有错误报告!

解决方法

我通过在Swift文件中重新声明它来解决了这个问题,例如“MyError+Workaround.swift”。

import Foundation

class MyError: NSError {} // the object actually is an NSError subclass

就是这样。希望能对其他人有所帮助。

更新

我们通过在总头文件中明确添加类来修复了代码;不再需要编码扭曲。


更新:我们通过在总头文件中显式添加类来修复了代码,不再需要编码扭曲。 - AmitaiB
如何在总头文件中添加哪种类型的文件? - Wei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接