Передача переменных из функции в функцию - PullRequest
1 голос
/ 01 ноября 2010

Я только изучаю Objective-C и у меня, как я уверен, довольно простой вопрос. Это функция, которую я создал, которая будет просто хранить переменные из некоторого пользовательского ввода.

- (void)standardDatabaseWithName:(NSString*)name 
                            host:(NSString*)host 
                        username:(NSString*)username 
                        password:(NSString*)password
                        database:(NSString*)database
                            port:(NSInteger*)port {

  NSString *myName = name;
  NSString *myHost = host;
  NSString *myUsername = username;
  NSString *myPassword = password;
  NSString *myDatabase = database;
  NSInteger *myPort = port;
}

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

- (void)insertStandardConnection {
    NSString name = [NewDbModalView standardDatabaseWithName:myName];
    NSString host = [NewDbModalView standardDatabaseWithName:myHost]; 
}

Так что эта попытка не сработала для меня. Любой совет, ребята? В этот момент меня оставили почесывать голову.

Ответы [ 4 ]

2 голосов
/ 01 ноября 2010

Я бы предложил создать объект для хранения всей этой информации и просто передать объект вокруг

0 голосов
/ 01 ноября 2010

В вашем .h файле вы должны объявить свойства

    @interface standardDatabaseWithNameObject : NSObject{
    NSString *myName;
    NSString *myHost;
    NSString *myUsername ;
    NSString *myPassword;
    NSString *myDatabase;
    NSInteger *myPort;
    }

    @property (nonatomic, retain) NSString *myName;
    @property (nonatomic, retain) NSString *myHost;
    @property (nonatomic, retain) NSString *myUsername ;
    @property (nonatomic, retain) NSString *myPassword;
    @property (nonatomic, retain) NSString *myDatabase;
    @property (nonatomic, retain) NSInteger *myPort;
etc...

Тогда в вашей реализации вам нужно синтезировать свойства и они будут доступны для использования:

@synthesize myName, myHost, myUsername, myPassword, myDatabase, myPort;


- (void)standardDatabaseWithName:(NSString*)name 
                            host:(NSString*)host 
                        username:(NSString*)username 
                        password:(NSString*)password
                        database:(NSString*)database
                            port:(NSInteger*)port {

  myName = name;
  myHost = host;
  myUsername = username;
  myPassword = password;
  myDatabase = database;
  myPort = port;
}

- (void)insertStandardConnection {
    NSString name = myName;
    NSString host = myHost; 
}

- (void) dealloc
{
[myName release];
[myHost release];
[myUsername release];
[myPassword release];
[myDatabase release];
[myPort release];

}

Удачи

0 голосов
/ 01 ноября 2010

Переменные, которые вы объявляете в standardDatabaseWithName:..., являются локальными для этого метода. Вам необходимо хранить (копии) этих данных внутри объекта. Хотя, глядя на ваш код, мне интересно, если вы пытаетесь установить значения по умолчанию? В этом случае вам может потребоваться, чтобы статические глобальные переменные принимали значения, а затем вам нужно, чтобы -(void)standardDatabaseWithName:... стал +(void)setStandardDatabaseName:(NSString *)name ....

0 голосов
/ 01 ноября 2010

Каждый раз, когда вы вызываете метод, вы должны предоставить все переменные:

[NewDbModalView standardDatabaseWithName:myName host:myHost username:aUsername password:aPassword database:aDatabase port:aPort];

Таким образом, при вызове [NewDbModalView standardDatabaseWithName:myName] этот метод не существует.

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