【问题标题】:How to Call NSUserDefault Value To Another View Controller?如何将 NSUserDefault 值调用到另一个视图控制器?
【发布时间】:2013-07-18 15:51:24
【问题描述】:

//我把这个函数写在单独的类文件中:

-(void)Display
{
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSInteger *Position = [prefs integerForKey:@"currentlevel"];
    NSLog(@"------->%i",Position);
    //This NSLog is returning Value 6  
    [prefs synchronize];    
}

//在我的viewController 中,我正在使用我为我的类创建的对象调用这个函数

@interface ViewController ()
{
    //display My class name
    //disp is object fro my class
    display *disp;   
}

@implementation ViewController

- (void)viewDidLoad
{ 
    disp = [[display alloc]init];  
    [disp Display];
    NSLog(@"%i",[disp Position]);
    //this NSLog statement returning value 0
    [super viewDidLoad];
}

如果有人有任何解决方案,请帮助我。

【问题讨论】:

  • 你应该为它的类方法创建一个实用类。你所做的在很多方面都是错误的。
  • 什么是Position?是局部变量吗?财产?方法?
  • 解决什么问题?我没有看到任何问题。我确实看到您没有显示方法 Position 的代码,这对于理解您的代码非常重要。
  • @Amar Position 是我的全局变量属性,我在我的实现文件中合成了它

标签: iphone ios cocoa-touch ios-simulator


【解决方案1】:

尝试这样实现..

@implementation ClassA

      - (void)viewDidLoad
        {
            [super viewDidLoad];
            // Do any additional setup after loading the view, typically from a nib.
            [[NSUserDefaults standardUserDefaults]setInteger:100 forKey:@"currentlevel"];
            [[NSUserDefaults standardUserDefaults] synchronize];
        }

    @end

    @implementation ClassB

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
           int B = [[[NSUserDefaults standardUserDefaults] integerForKey:@"currentlevel"] integerValue];

         NSLog(@"Interger Value %d",b);
    }

【讨论】:

  • 感谢您的解决方案!
【解决方案2】:

为什么不从视图控制器本身的 NSUserDefaults 中获取值?像这样:

    -(void) viewDidLoad
    {
      [super viewDidLoad];
      NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
      NSInteger *Position = [prefs integerForKey:@"currentlevel"];
      NSLog(@"------->%i",Position);
    }

【讨论】:

  • 我想放松 MVC 模式,所以我创建了单独的类
【解决方案3】:

如果要设置整数值,请使用以下语句:

[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:highScore] forKey:@"kHighScore"];

如果您想取回该值,请使用以下语句:

NSInteger highScore = [[[NSUserDefaults standardUserDefaults] objectForKey:@"kHighScore"] intValue];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 2013-07-25
    • 1970-01-01
    相关资源
    最近更新 更多