私はJavaでプログラミングし、クラス変数を使用して他のクラスのデータにアクセスすることに慣れています。次に、クラス変数がObj-Cで同じように機能しないことを知り、問題が発生しています。
私の問題は、ユーザーがログインした後、別のクラスでユーザーが入力したパスワードにアクセスしたいということです。さまざまなフォーラムで読んだことがあるので、これらのデータにアクセスするにはクラスメソッド(+)を使用する必要があります。ただし、クラス2の最初のクラスの新しいインスタンスを作成する必要があるため、入力されたパスワードがクラス1の新しいインスタンスに存在しないことを意味します。
私のコードは次のとおりです。
class1.h
@interface class1 : UIViewController {
UITextField *usernameField;
UITextField *passwordField;
UIButton *loginButton;
NSString *password;
}
@property (nonatomic, retain) IBOutlet UITextField *usernameField;
@property (nonatomic, retain) IBOutlet UITextField *passwordField;
@property (nonatomic, retain) IBOutlet UIButton *loginButton;
@property (nonatomic, retain) NSString *password;
-(IBAction) loginButtonPushed;
+(NSString *)password;
@end
class1.m
#import "viewSwitcherViewController.h"
@implementation viewSwitcherViewController
@synthesize usernameField;
@synthesize passwordField;
@synthesize loginButton;
@synthesize password; // not needed
-(IBAction) loginButtonPushed {
password = passwordField.text; //not needed
// ...Code for switching view if successful login... EDITED:
class2 *c2 = [class2 alloc] init]; //Instantiating new class2 object
c2.password = passwordField.text; //Assigning tekst from passworField to thePassword-variable in the class2 instance.
}
class2.m
#import "class2.h"
#import "class1.h"
@implementation class2
@synthesize thePassword; //NSString variable
// this method is also not needed
-(void) someMethodUsingPassword {
class1 *c1 = [[class1 alloc] init];
thePassword = [c1 password];
NSLog(@"The password is: %@", thePassword); //This call returns null
}
したがって、私の問題は、class2で作成されたc1インスタンスが送信されたパスワードを保持していないため、「null」を返すことです。
たぶん、これは私のJavaアプローチがそれを台無しにしているだけなのかもしれませんが、他の方法が見つからなかったので、助けてください:)!