将变量从函数传递给函数

时间:2010-11-01 17:36:20

标签: iphone objective-c ipad

我只是在学习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;
}

下面是一个单独的函数,我想用这些信息创建一个新的var,并且从那里使用它就是我需要的。

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

所以这次尝试对我不起作用。伙计们有什么建议吗?在这一点上,我一直在挠头。

4 个答案:

答案 0 :(得分:2)

我建议创建一个对象来保存所有这些信息,然后只传递对象

答案 1 :(得分:0)

每次调用方法时,都必须提供所有变量:

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

因此,当您致电[NewDbModalView standardDatabaseWithName:myName]时,该方法不存在。

答案 2 :(得分:0)

您在standardDatabaseWithName:...中声明的变量是该方法的本地变量。您需要在对象内存储(副本)该数据。虽然,看看你的代码,我想知道你是否想设置默认值?在这种情况下,您可能希望静态全局变量获取值,然后您需要-(void)standardDatabaseWithName:...成为+(void)setStandardDatabaseName:(NSString *)name ...

答案 3 :(得分:0)

在你的.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];

}

祝你好运

相关问题