2017-08-05 1 views
0

J'ai créé une page d'enregistrement dans laquelle il y a un nom d'utilisateur, un mot de passe, un mot de passe de confirmation, un identifiant d'email, un numéro de mobile. ce sont les détails, je suis nouveau à Swift et je veux enregistrer les détails de l'utilisateur pour la page d'inscription dans l'application en utilisant NSUserDefaults pls m'aider et aussi comment postuler demande.Comment enregistrer l'utilisateur dans NSObject

+1

Ne pas, ne pas, Ne stockez pas les mots de passe dans UserDefaults, c'est à cela que sert le keychain. Dites-moi à quelles applications vous avez fait cela et je m'assurerai de ne pas les utiliser. – Abizern

+3

Copie possible de [iOS: Comment enregistrer nom d'utilisateur/mot de passe dans une application?] (Https://stackoverflow.com/questions/6972092/ios-how-to-store-username-password-within-an-app) – Abizern

+0

ok @Abizern je vais faire –

Répondre

-1

pour enregistrer les données

UserDefaults.standard.set(username, forKey: "username") 
UserDefaults.standard.synchronize() 

Pour obtenir des données

UserDefaults.standard.value(forKey: "username")  

Pour poster des données, vous pouvez utiliser Alamofire

Créer un fichier pod ajouter

 pod 'Alamofire', '~> 4.0' 

Dans votre viewcontroller

import Alamofire 

Créer func

funcLogin() { 


    let url = "http://example.com" 

    let parameters : [String:Any] = ["username": UserDefaults.standard.value(forKey: "username") as! String, 
            "password": UserDefaults.standard.value(forKey: "password") as! String, 
            "email":UserDefaults.standard.value(forKey: "email") as! String] 


    Alamofire.request(url,method:.post, parameters: parameters).validate(contentType: ["application/json"]) 
     .responseJSON{ response in 


      switch response.result { 
      case .success: 

       let statusCode = (response.response?.statusCode)! 
       print("HTTP code @apiGetUser: \(statusCode)") 
       print("yoo") 
       print(response.result.value!) 



       // ... 

      case .failure(let error): 
       print(error) 
       // print("yo") 
       break 
       // ... 
      } 

    } 

Vous pouvez également utiliser cette

Marque extention de UIViewController

 extension UIViewController{ 


     class user { 


    var user_name : String 
    var user_Email : String 
    var user_password : String 
    var item_Mobile : String 

    init(user_name : String, user_Email : String, user_password : String, item_Mobile : String) { 


     self.user_name = user_name 
     self.user_Email = user_Email 
     self.user_password = user_password 

     self.item_Mobile = item_Mobile 




    } 


} 

Dans ViewController

  var userData = [user]() 

si de vouloir accéder à l'échelle mondiale

  static var userData = [user]() 

Pour ajouter des valeurs utilisent

// Pour locale

 userData.append(cartItem(user_name: "Demo1", 
                user_Email: "[email protected]", 
                user_password: "hhhhhhh", 
                item_Mobile: "9889878888")) 

// Pour l'utilisation globale

 viewControllername.userData.append(cartItem(user_name: "Demo1", 
                user_Email: "[email protected]", 
                user_password: "hhhhhhh", 
                item_Mobile: "9889878888")) 

pour accéder aux données

  userData[i]. user_name 
+0

Non, * pour obtenir des données * dans le cas d'une chaîne c'est '.string (forKey:' pour les autres objets '.object (forKey:' mais ** jamais ** '.value (forKey: ' – vadian

+0

vous pouvez faire comme ceci UserDefaults.standard.value (forKey:" username ") as! String –

+0

Vous pouvez, mais les méthodes KVC ont une fonctionnalité spéciale.Utilisez-les seulement si vous avez explicitement besoin de KVC. – vadian

0

Pour définir des données dans UserDefaults-

UserDefaults.standard.set("your value", forKey: "your key") 
UserDefaults.standard.synchronize() 

Pour obtenir des données dans UserDefaults

UserDefaults.standard.value(forKey: "your key") 

post Exemple

func postAction(_ sender: Any) { 
     let Url = String(format: "your url") 
     guard let serviceUrl = URL(string: Url) else { return } 
     //  let loginParams = String(format: LOGIN_PARAMETERS1, "test", "Hi World") 
     let parameterDictionary = ["username" : "Test", "password" : "123456"] 
     var request = URLRequest(url: serviceUrl) 
     request.httpMethod = "POST" 
     request.setValue("Application/json", forHTTPHeaderField: "Content-Type") 
     guard let httpBody = try? JSONSerialization.data(withJSONObject: parameterDictionary, options: []) else { 
      return 
     } 
     request.httpBody = httpBody 

     let session = URLSession.shared 
     session.dataTask(with: request) { (data, response, error) in 
      if let response = response { 
       print(response) 
      } 
      if let data = data { 
       do { 
        let json = try JSONSerialization.jsonObject(with: data, options: []) 
        print(json) 
       }catch { 
        print(error) 
       } 
      } 
      }.resume() 
    } 
+0

N'oubliez pas d'ajouter 'UserDefaults.standard.synchronize()' après avoir défini les valeurs sur 'UserDefault' –

+0

pouvez-vous me dire comment enregistrer en utilisant tous les détails de la page de registre dans la classe NSObject et comment utiliser dans une classe particulière @Abhishek Jain –