ios - 一些代码表现不如预期

时间:2012-12-18 15:37:39

标签: ios ios5 nsuserdefaults

每次打开应用时,我都会运行一些代码。它用于确定第一次登录的人员,或者他们是否是重复用户。基于该信息,该应用程序的行为有点不同。但它并没有像我想象的那样为我工作。这是代码:

- (void)viewDidAppear:(BOOL)animated
{            
    // Get user data. 
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

    // First arg is name and second is if not found.
    NSString *user_id = [standardUserDefaults objectForKey:@"user_id"]; 
    bool first_time_cookie = [standardUserDefaults boolForKey:@"first_time_cookie"];

    [super viewDidLoad];

    if(!first_time_cookie)
    {
        // First time on the app, so set the user cookie.
        [standardUserDefaults setBool:YES forKey:@"first_time_cookie"];

        [[NSUserDefaults standardUserDefaults] synchronize];  

        // Make new account 

        [standardUserDefaults synchronize];           
    }
    else 
    { 
        // DO REPEAT USER ACTIONS
    }

    [[NSUserDefaults standardUserDefaults] synchronize];    
}

我的userDefaults混乱了。有人能告诉我哪里出错吗?发生的问题是系统认为许多重复用户实际上是新用户。

谢谢!

1 个答案:

答案 0 :(得分:2)

我怀疑问题可能与使用bool而不是BOOL有关。请参阅此问题here.

bool映射到true / false的值,而BOOL映射到YES / NO。您正在设置first_time_cookie为YES(BOOL值)。因此,请尝试:

BOOL first_time_cookie = [standardUserDefaults boolForKey:@"first_time_cookie"];