0

ユーザーがアプリを開くたびに実行されるコードがあります。これは、その人が初めてログインしたのか、それともリピーターであるのかを判断するために機能します。そして、その情報に基づいて、アプリの動作は少し異なります。しかし、思ったほどうまくいきませんでした。コードは次のとおりです。

- (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で混乱しています。誰かが私がどこで間違っているのかを知ることができますか?発生している問題は、リピーターの多くが実際には新規ユーザーであるとシステムが判断することです。

ありがとう!

4

1 に答える 1

2

問題はではboolなくの使用に関係しているのではないかと思いBOOLます。こちらの質問をご覧ください。

booltrue / falseの値にマップしますが、BOOLYES/NOにマップします。YES first_time_cookieBOOL値)に設定しています。したがって、次のことを試してください。

BOOL first_time_cookie = [standardUserDefaults boolForKey:@"first_time_cookie"];
于 2012-12-18T15:45:14.487 に答える