-6

我需要访问 userEMail(NSString)属性,Class2.m但它返回 null。

Class1.h:

@interface AuthController : UIViewController 
{

    @public  NSString *const userPassword;
    @public  NSString *const userEMail;
    @public  NSString *const userFullName;

}

@property (nonatomic, strong) NSString *userEMail;

然后在 Class1.m 中保存 userEMail。

Class2.m:

AuthController *ac = [[AuthController alloc] init];
NSLog(@"%@", ac.userEMail);
4

2 回答 2

-2

在阅读了对另一个答案的评论后

我需要在多个类中获取 userEMail 值,因此向每个类发送数据是错误的

听起来你更像是在单例课程之后。所以尝试这样的事情

AuthObject.h

@interface AuthObject : NSObject 

@property (nonatomic, strong) NSString *userEMail;

+ (AuthController*)authInstance;

@end

AuthObject.m

#import "AuthObject.h"

@implementation AuthObject

@synthesize userEMail = _userEMail;

static AuthObject *authObjectSharedInstance = nil;

+ (AuthObject *)authInstance 
{
    static dispatch_once_t instanceToken;
    dispatch_once(&instanceToken, ^{
        authObjectSharedInstance = [[AuthObject alloc] init];
    });
    return authObjectSharedInstance;
}

@end

然后在另一个类的另一个方法中,只要你已经导入了AuthObject.h你可以做的地方

- (void)someMethodIMadeUpInClass1
{
    AuthObject *authObj = [AuthObject authInstance];
    [authObj setUserEMail:@"myemail@address.com"];
}

然后在一个完全不同的课程中你可以做

- (void)someMethodIMadeUpInClass2
{
    AuthObject *authObj = [AuthObject authInstance];
    NSLog(@"my email : %@", [authObj userEMail];
}

从理论上讲,如果您正在创建一个单例类而不通过sharedInstance( authInstancehere),那么该代码将被破坏。试图隐藏这种破碎只会在以后引起痛苦。这就是为什么我会选择单例类而不是使用NSUserDefaults.

于 2013-10-25T11:51:30.797 回答
-2

我只是把基本步骤放在这里,根据您的要求进行更改。

你只需要写

@property (nonatomic, strong) NSString *userEMail;

在你的first.h文件中

second.h文件

@property (nonatomic, strong) NSString *gotUserEMail;

还有你的first.m文件

你有gotUserEMail一些价值的字符串..

将它传递给 anotherViewController 这样的谎言,

secondViewController *addView = [[secondViewController alloc] init];
addView.gotUserEMail = userEMail;

.
.
.
.

编辑

好的,那么您需要使用 NSUserDefault.

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setValue:userEMail forKey:@"myEmailString"];
[userDefaults synchronize];

通过,在您的项目中的任何地方,

NSUserDefaults *data = [NSUserDefaults standardUserDefaults];  
NSString  *gotEmail = [data floatForKey:@"myEmailString"];
于 2013-10-25T11:43:24.570 回答