从UIViewController更改AppDelegate的属性不起作用
我遇到了一个在AppDelegate
内部的问题,我创build了一个属性来在应用内共享值。
@property (nonatomic, retain) User *currentUser;
User
对象的定义是
@property int points; @property (nonatomic, copy) NSString *userName;
我有一个显示当前用户名的字段的UIViewController A. 点击一个button将调出UIViewController B和里面的UIVIewController B,我尝试更改值:
// I print out these two values here 1 ((AppDelegate*)[UIApplication sharedApplication].delegate).currentUser.userName= @"newName" ; ((AppDelegate*)[UIApplication sharedApplication].delegate).currentUser.points= 19 ; // I print out these two values here 2
从1和2打印输出, userName
已成功更改。 但是,当我从B传递控件回到A时,UIViewController A中的userName
字段尚未更新。 在我的ViewController A中,我有:
- (void)viewWillAppear:(BOOL)animated{ textField.text = ((AppDelegate*)[UIApplication sharedApplication].delegate).currentUser.userName; }
有任何想法吗?
关心锤子
UPDATE
更奇怪的是,第一行打印0,第二行13,第三行0和最后一行13.看起来像分配从来没有工作。 用户ID被定义为@property int userId;
。
NSLog(@"BeforeLogin:%d",((AppDelegate*)[UIApplication sharedApplication].delegate).currentUser.userId); NSLog(@"newUser.userId:%d",newUser.userId); // update profile locally ((AppDelegate*)[UIApplication sharedApplication].delegate).currentUser.userId= newUser.userId ; NSLog(@"AfterLogin:%d",((AppDelegate*)[UIApplication sharedApplication].delegate).currentUser.userId); NSLog(@"newUser.userToken:%@",newUser.userToken);
User.h
#import <Foundation/Foundation.h> @interface User : NSObject<HttpClientDelegate> @property int userId; // I also try @property (assign, nonatomic, readwrite) int userId;
你应该改变你的财产定义,例如,
这个
@property (nonatomic, copy) NSString *userName;
有了这个
@property (nonatomic, strong) NSString *userName;
还要看看如何定义属性的例子