从另一个.m文件访问NSString

时间:2013-10-25 11:39:18

标签: ios iphone objective-c

我需要访问(NSString)中的userEMail 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);

2 个答案:

答案 0 :(得分:-2)

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

你只需要写

@property (nonatomic, strong) NSString *userEMail;

在您的first.h文件中

second.h个文件

@property (nonatomic, strong) NSString *gotUserEMail;

您的first.m文件

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

将它传递给另一个ViewController,例如liek,

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

.
.
.
.

<强> EDITE

好的,你需要使用NSUserDefault

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

通过

获取项目中的任何位置
NSUserDefaults *data = [NSUserDefaults standardUserDefaults];  
NSString  *gotEmail = [data floatForKey:@"myEmailString"];

答案 1 :(得分:-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];
}

理论上,如果您正在创建单例类而不是通过sharedInstanceauthInstance此处),则该代码将被破坏。试图掩盖这种破碎只会导致以后的痛苦。这就是为什么我会选择单例类而不是NSUserDefaults