2014-09-22 4 views
0

Я использую Parse в качестве мобильного заднего конца моего приложения. Я добавил 2 булевских столбца в таблицу данных пользователя (User class), «тренер» и «клуб», в основном заявив, что они тренер или клуб. Во время входа в систему необходимо выполнить команды if, основанные на логическом значении этих переменных. Мой код в настоящее время выглядит следующим образом:Parse.com текущий пользователь, если statment

[PFUser logInWithUsernameInBackground:_usernameField.text password:_passwordField.text 
           block:^(PFUser *user, NSError *error) { 
            if (user) { 

             if(user.coach = @YES){ 
              [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"coach"]; //sets yes for coach value 

             } 

             if(user.club = @YES){ 
              [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"club"]; //sets yes for club 
             } 

             UIStoryboard *sb = [UIStoryboard storyboardWithName:@"AthleteLoggedIn" bundle:nil]; 
             UISplitViewController *new = [sb instantiateInitialViewController]; 
             self.view.window.rootViewController = new; 

            } else { 
             NSString *errorString = [error userInfo][@"error"]; 
             UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Oops" message:errorString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
             [alert show]; 
            } 
           }]; 
+2

'если (user.coach = @YES)' должны be 'if (user.coach == @YES)'. то же самое для 'user.club'. в вашем заявлении вы назначили '@ YES' переменной и затем оценили значение переменной (что, конечно,' @ YES') – MByD

+0

Чтобы избежать этого в следующий раз, вы должны привыкнуть ставить константу с левой стороны сравнения, если (@YES == user.coach). if (@YES = user.couch) вызовет ошибку синтаксиса. – ardrian

ответ

0

Есть две проблемы с кодом. Первое, что вы используете оператор присваивания =, а во-вторых, вы используете точечную нотацию для объекта Parse.

Что вы имели:

if(user.coach = @YES){ /* ... */ } 
if(user.club = @YES){ /* ... */ } 

Правильная реализация:

if([user objectForKey:@"coach"] == @YES){ /* ... */ } 
if([user objectForKey:@"club"] == @YES){ /* ... */ } 

Что может быть уменьшена до:

if([user objectForKey:@"coach"]){ /* ... */ } 
if([user objectForKey:@"club"]){ /* ... */ } 
+1

Благодарим вас, как вы, наверное, догадались, что я довольно новичок в Xcode, хотя я действительно уверен, что должен получить double =. Большое вам спасибо, и его сокращение очень полезно для моего понимания. Чтение, несмотря на документацию Parse, я не знал, где они объявили операторы переменных. Это очень облегчает его. Еще раз спасибо всем! – Kaconym

Смежные вопросы