我的appDelegate
最初是用Obj-C编写的。我试图在一个新的Swift类中访问它,但我得到一个奇怪的错误,我认为这是误导,我试图找到根。
在我的Swift文件中,我在之后设置了一个断点:
var appDelegate = UIApplication.sharedApplication().delegate
如果我只是po:
po appDelegate
我明白了:
Printing description of appDelegate:
Optional(<AppDelegate: 0x7f81a2d1cc40>)
一切都很好。
然而,当我尝试:
po appDelegate.navigationController
我得到调试控制台中的:
error: <EXPR>:1:13: error: type of expression is ambiguous without more context
navigationController是appDelegate的一个属性,在原始的Obj-C appDelegate.h文件中声明。
这是我原来的问题:Cannot invoke '...' with an argument list of type '...'
修改
根据@ Martin的评论,我将代码更改为:
var appDelegate = UIApplication.sharedApplication().delegate!
appDelegate.navigationController.popViewControllerIsAnimated(true)
现在出现错误:
'UIApplicationDelegate' does not have a member named 'navigationController'
但是,这是我的Obj-C AppDelegate.h:
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (nonatomic,strong) VUNavigationController *navigationController;
@property (nonatomic,strong) UIWindow *window;
@end
答案 0 :(得分:3)
delegate
的{{1}}方法声明为
UIApplication
您必须将返回值强制转换为应用程序委托的具体类型:
unowned(unsafe) var delegate: UIApplicationDelegate?