2015-07-07 4 views
0

Я пытаюсь сохранить текущий сеанс пользователя активным до тех пор, пока пользователь не решит выйти из системы. Какой код я должен реализовать? и где именно он должен быть реализован? функция viewDidLoad или viewWillAppear в корневом представлении? Я попытался с помощью этого кода в моем корневом зрении:Как сохранить текущий сеанс пользователя активным с использованием разбора?

override func viewDidAppear(animated: Bool) { 
     let vc = ViewController() 
     var loggedIn = false 

     if PFUser.currentUser() != nil { 
      loggedIn = true 
     } else { 
      presentViewController(vc, animated: true, completion: nil) 
     } 
    } 

, но всякий раз, когда я остановить симулятор и запустить его снова, я должен войти снова. Какое лучшее решение? сохранить в моем «ViewController» мой основной вид, который содержит мои поля входа/регистрации. Поэтому я в основном хочу, чтобы сказать, существует ли текущий сеанс пользователя, продолжить, иначе показать начальное представление.

ответ

2

Попробуйте в ваше приложение делегат ...

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

... 

PFUser *currentUser = [PFUser currentUser]; 

if (currentUser) { 
    // there is a user logged in go to the main screen 
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil]; 
    MainViewController *mainViewController = (MainViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"Main"]; 

    //set the root controller to it 
    self.window.rootViewController = mainViewController; 
} else { 
// Log in! 
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Login" bundle: nil]; 
    LoginViewController *loginViewController = (LoginViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"Login"]; 

    //set the root controller to it 
    self.window.rootViewController = loginViewController; 
} 

... 
+0

Я помечал swift, а не ob j .. если вы можете использовать быстрый синтаксис, я могу определенно попробовать это –

+0

@MikeStrong Прошу прощения за использование объектного c, [это может вам помочь] (http://stackoverflow.com/questions/25474115/как к нагрузке-UIViewController-программно-из-раскадровки). Просто загружает контроллер представления программно – fechidal89

+0

Это действительно сработало, однако оно должно быть помещено в функцию viewDidLoad исходного представления, а не делегата приложения. поэтому, если вы отрегулируете свой ответ, я могу принять его! спасибо –

0

Parse обрабатывает это для вас, когда вы правильно регистрируете пользователя с помощью signUpInBackgroundWithBlock (цель -c).

PFUser.currentUser() должно быть доступно все время, пока вы не будете активно выходить из системы.

Возможно, вы попытаетесь зарегистрироваться -> сбой -> перейдите к следующему VC в любом случае -> снова запустите приложение, не будучи зарегистрированным на самом деле?

+0

Я не понимаю вашего предложения. –

+0

проверьте PFUser.currentUser() сразу после регистрации - чтобы увидеть, что вы его получили, когда «знаете», которые зарегистрированы. – ozd

+0

это не сработало, есть что-то, что я пропустил? –

0

Анализировать предоставила разработчикам Sessions (для управления сеансами). для дальнейшей помощи обратитесь к разделу «Сеансы» в следующей ссылке ... https://parse.com/docs/ios/guide