2013-10-25 128 views
-6

我需要訪問Class2.m中的用戶電子郵件(NSString)屬性,但其返回null。從另一個.m文件訪問NSString

Class1.h:

@interface AuthController : UIViewController 
{ 

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

} 

@property (nonatomic, strong) NSString *userEMail; 

然後在Class1.m IM節省USEREMAIL。

Class2.m:

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

你在哪裏設置它?你打電話給'[ac setUserEMail:@「[email protected]];' – Popeye

+0

在第一個class.m文件中合成userEmail – user1673099

+0

在Class1.m中設置它,用NSLog測試它的值,然後確定 – user2851844

回答

-2

我只是把基本步在這裏,將其更改爲按您的要求。

你只需要編寫

@property (nonatomic, strong) NSString *userEMail; 

first.h文件

second.h文件

@property (nonatomic, strong) NSString *gotUserEMail; 

而且你first.m文件

你有gotUserEMail字符串以一定的價值。

它傳遞給anotherViewController這樣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"]; 
+0

我需要在多個類中獲取userEMail值,所以將數據發送給每個類 – user2851844

+0

@ user2851844 - 檢查我編輯的答案:) – iPatel

+0

謝謝。它的工作原理;) – user2851844

-2

在另一個答案

我需要在多個類USEREMAIL值閱讀評論之後,所以它的錯誤將數據發送到每個班級

聽起來更像是你在單身課之後。因此,嘗試這樣的事情

AuthObject.h

@interface AuthObject : NSObject 

@property (nonatomic, strong) NSString *userEMail; 

+ (AuthController*)authInstance; 

@end 

AuthObject。米

#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:@"[email protected]"]; 
} 

然後在一個完全不同的類,你可以做

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

在理論如果你正在創建一個單獨的類,並且不通過sharedInstanceauthInstance這裏),那麼代碼被破壞。試圖隱藏這種破碎後會導致疼痛。這就是爲什麼我會選擇使用NSUserDefaults的單身人士。

+1

@downvoter請給出downvote的理由。我可以給出很多例子(鏈接,文章等),在這裏單身人士將是完美的。那麼爲什麼downvote? – Popeye

+0

這又是一次downvote,但沒有理由離開。請提供downvote的原因,我可以在可能的情況下進行更正。 – Popeye