У меня есть appDelegate
, первоначально написанный в Obj-C. Я пытаюсь получить к нему доступ в новом классе Swift, но я получаю странную ошибку, которая, я думаю, вводит в заблуждение, и я пытаюсь добраться до корня."Тип выражения неоднозначен без дополнительного контекста" - Ссылка на appDelegate
В моем Swift файл, я поставил точку останова после:
var appDelegate = UIApplication.sharedApplication().delegate
Если бы я только ро:
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 файл.
Вот мой оригинальный SO вопрос: Cannot invoke '...' with an argument list of type '...'
EDIT
на основе @ комментарий Мартина, я изменил мой код:
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
'appDelegate', по-видимому, * необязательный *. Это работает, если вы определяете 'var appDelegate = UIApplication.sharedApplication(). Делетете!' Вместо этого? –
@MartinR Что-то сделал - посмотри мое редактирование. Новая ошибка - это как будто я обращаюсь к другому объекту AppDelegate сейчас ... – Ramsel