How to read a value using NSUserDefaults from one view to another?

I used NSUserDefaults to store the value. I store some integer value in NSUserDefaults, as shown below in the first view.

I stated in the interface file as follows.

NSUserDefaults *prefs;
    @property(nonatomic,retain) IBOutlet NSUserDefaults *prefs;

Then I used in the class file as follows

   @synthesize passwordfield,prefs;

here passwordfield is the name of UITextField

NSInteger myInteger = [passwordfield.text integerValue];
[prefs setInteger:myInteger forKey:@"integerKey"];
[prefs synchronize];
NSInteger myInt = [prefs integerForKey:@"integerKey"];
NSLog(@"My integer Value: %d",myInt);

Then I move on to the next view using the navigation controller.

But I can not read the value of NSUserDefaults from the first view.

I used the following code in the second view.

PasswordCheckViewController *nextController = [[PasswordCheckViewController alloc] initWithNibName:@"PasswordCheckViewController" bundle:nil];
NSLog(@"Pass in Next: %d",[nextController.prefs integerForKey:@"integerKey"]);

But the conclusion is as follows.

 Pass in Next: 0

How can I get the value from the first view for the second view using NSUserDefaults?

+3
source share
3

, , , NSUserDefaults IBOutlets, IBOutlet InterfaceBuilder.

NSUserDefault .
, NSUserDefaults, standardUserDefaults NSUserDefaults. NSUserDefaults . objectForKey: setObject:forKey: . , : NSData, NSString, NSNumber, NSDate, NSArray NSDictionary
  IBOutlet, .

  NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
  NSInteger myInteger = [passwordfield.text integerValue];
  [prefs setObject:myInteger forKey:@"integerKey"];
  NSInteger myInt = [prefs objectForKey:@"integerKey"];

NSUserDefaults, - ivar.
.

+4

. , , . , self :

MyFirstViewController *vc = (MyFirstViewController*)[self.navigationController.viewControllers objectAtIndex: indexOfFirst];
// ... now copy your prefs from first to second
self.prefs = vc.prefs;
+1

Use this code in a function where u need to get the value with NSUserDefaults:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSInteger myInt = [prefs integerForKey:@"a"];
0
source

Source: https://habr.com/ru/post/1776724/


All Articles