Ошибка общего приложения UIApplication:программа, кажется, обращается к неправильному файлу

StackOverflow https://stackoverflow.com/questions/2075352

Вопрос

в моей реализации MainViewController мне нужно получить доступ к переменным из двух разных классов.один из классов — AppDelegate, а другой — FlipsideViewController.я получил к ним доступ через этот код:

-(void)someMethod
{
MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
FlipsideViewController *viewController = (FlipsideViewController *)[[UIApplication sharedApplication] delegate];

затем у меня есть массив, к которому я обращаюсь из делегата моего приложения, и несколько переменных экземпляра, которые возвращают значения из экземпляра UISwitch из флипсайдвиевконтроллера:

NSMutableArray* array = [[NSMutableArray alloc] initWithArray:(NSMutableArray *)appdelegate.originalArray];
for (id element in array)
{
    if ([[element attribute] isEqualToString:@"someAttribute"] && [viewController.switch1 isOn] == YES)
    {
    //preform function
    }
}

Я продолжаю получать сообщение об ошибке «-[MyApplicationAppDelegate switch1]:нераспознанный селектор отправлен в экземпляр.завершение работы приложения из-за неперехваченного исключения"

Это было полезно?

Решение

[[UIApplication SharedApplication] делегат];всегда будет возвращать (одиночный) экземпляр MyApplicationAppDelegate класс, и вы не можете просто привести его к FlipsideViewController*.чтобы получить доступ к значению флипсайдконтроллера (при условии, что оно хранится в вашем делегате приложения), вы можете определить свойство и вызвать его:

-(void)somemethod{
     MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
     FlipsideViewController *viewController = appDelegate.flipsideController;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top