iPhone, как использовать переменную App Delegate, чтобы ее можно было использовать как глобальные переменные? - PullRequest
2 голосов
/ 30 сентября 2010

Вот код, который я использую, потом просмотрите мою ошибку

@interface MyAppDelegate : NSObject  {
  NSString *userName;
}
@property (nonatomic, retain) NSString *userName;
...
@end

и в файле .M для делегата приложения вы напишите:

@implementation MyAppDelegate
@synthesize userName;
...
@end

Затем, всякий раз, когдаесли вы хотите получить или написать имя пользователя, вы должны написать:

MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
someClass.someString = appDelegate.userName;  //..to fetch
appDelegate.userName = ..some NSString..;     //..to write

предупреждение: тип 'id' не соответствует протоколу 'MyAppDelegate'

Что такоеЯ пропал в моем коде?

Ответы [ 2 ]

13 голосов
/ 30 сентября 2010

Вы должны добавить приведение к MyAppDelegate

MyAppDelegate *appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];

1 голос
/ 30 июня 2014

Да, вы можете получить доступ к любому значению переменной, сделав его глобальным.

Например:

AppDelegate.h

{
    NSString *username;
}

@property (strong,nonatomic) NSString *username;

AppDelegate.m (в блоке @implementation)

@synthesize username;

AnyViewController.h

#import AppDelegate.h

AnyViewController.m

//Whatever place you want to access this field value you can use it like.

AppDelegate *appdel=(AppDelegate *)[[UIApplication sharedApplication] delegate];

NSString *unm=appdel.username;

//You can get the username value here.
NSLog(@"%@",unm);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...