我在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中编写,因为它不是变量?
答案 0 :(得分:1)
现在您已经澄清了您的问题,答案很简单。转换为Swift时,您只需忽略@class PhoneViewController
行。
这在Objective-C中被称为前向声明。它在Swift中没有对应物。
答案 1 :(得分:0)
@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
就是这样。希望这可以帮助其他人。