【Swift】NiftyCloud - 新規登録/ログイン

 

完成図

 

f:id:nekokichi_yos2:20190105200137p:plain

 (ユーザー名:パスワード=user : password)

 

解説

 

新規登録:NCMBUser.signUpInBackground

ログイン:NCMBUser.logInWithUsername(inBackground: ユーザー名, password: パスワード)

 

NCMBUesr.current() : ログイン中のユーザー(あなたが起動しているデバイスのユーザー)

 

新規登録の際、NCMBUserのプロパティ(userName,password)に入力した値がユーザー名、パスワードとなる。

 

ストーリーボード

 

f:id:nekokichi_yos2:20190105200121p:plain

 

ソースコード

 

「新規登録」

import UIKit
import NCMB

class SignUpViewController: UIViewController {
    
    @IBOutlet weak var userName: UITextField!
    @IBOutlet weak var passWord: UITextField!
    
    //viewDidLoad,viewWillAppear内でだと"whose view is not in the window hierarchy!"のエラーが発生
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        //既にログインされてるならログイン画面へ遷移
        if let _ = NCMBUser.current() {
            //ログイン画面へ遷移
            performSegue(withIdentifier: "login", sender: nil)
        } else {}
        
    }
    
    @IBAction func signUP(_ sender: Any) {
        
        //ユーザー情報を保存
        //NCMBUserのインスタンス
        let user = NCMBUser()
        
        //入力されなかった場合
        if userName.text == "" || passWord.text == "" {
            return
        }
        
        //ユーザー名を登録
        user.userName = userName.text
        //パスワードを登録
        user.password = passWord.text
        
        //新規登録する
        user.signUpInBackground { (error) in
            if error != nil {
                print(error)
            } else {
                //ログイン画面へ遷移
                self.performSegue(withIdentifier: "login", sender: nil)
            }
        }
        
    }
    
}

 

「ログイン」

import UIKit
import NCMB

class SignInViewController: UIViewController {
    
    @IBOutlet weak var userName: UITextField!
    @IBOutlet weak var passWord: UITextField!

    @IBAction func login(_ sender: Any) {
        
        //入力されなかった場合
        if userName.text == "" || passWord.text == "" {
            return
        }
        
        //ログインする
        NCMBUser.logInWithUsername(inBackground: userName.text, password: passWord.text) { (result,error) in
            if error != nil {
                print(error)
            } else {
                //遷移
                self.performSegue(withIdentifier: "success", sender: nil)
            }
        }
        
    }
    

}