2016-03-26 13 views
2

, yeni bir kullanıcı yapmak için, ben kullandı:CloudKit'te nasıl kullanıcı oluşturulur? Parse yılında

var user = PFUser() 
user.username = "myUsername" 
user.password = "myPassword" 
user.email = "[email protected]" 

yeni bir kullanıcı oluşturmak ve giriş için kullanmak CloudKit kullanılan kod nedir?

+1

Geçerli kullanıcının kaydını [CKContainer fetchUserRecordIDWithCompletionHandler] kullanarak alabilirsiniz (https://developer.apple.com/library/ios/documentation/CloudKit/Reference/CKContainer_class/index.html#//apple_ref/occ/instm/CKContainer/discoverUserInfoWithUserRecordID: completionHandler :) – Quirk

+0

Bir kayıt uygulaması yapmak için bunu nasıl kullanabilirim? Hangi kullanıcı adı, e-posta kimliği ve şifre ile yeni bir kullanıcı ekleyecek? – iHacks4iPhone

+0

Kendi kayıt sıranızı oluşturabileceğinizi düşünmüyorum. Cloudkit Kullanıcı özelliklerini kullanabilmeniz için bir kullanıcı Apple Cloud'a kaydolmalıdır. – Quirk

cevap

3

Son zamanlarda benzer bir şey yapmak zorunda kaldım. Kullanıcının kullanıcı adını ve şifresini içeren her kullanıcı için bir CKRecord oluşturmam gerekiyordu. Almayı kolaylaştırmak için kullanıcı adlarını NSUserDefaults'a ekledim. Bir akım kontrol etmek için görünüm göründüğünde

//query users to find current user 
let query = CKQuery(recordType: "MyUsers", predicate: NSPredicate(format: "TRUEPREDICATE", argumentArray: nil)) 
      pubDB.performQuery(query, inZoneWithID: nil, completionHandler: { (records, error) in 

       //we do not need to check for error code 11 because a user should exist 
       if error == nil { 

        var userExists = false 

        for record in records! { 

         if record.objectForKey("username") as? String == self.usernameField.text { 

          if record.objectForKey("password") as? String == self.passwordField.text { 

           NSOperationQueue.mainQueue().addOperationWithBlock { 

            userExists = true 
            NSUserDefaults.standardUserDefaults().setObject(self.usernameField.text!, forKey: "username") 
            username = self.usernameField.text! 
            self.performSegueWithIdentifier("account", sender: self) 

           } 

          } else { 

           //user with the username exists, but the password does not match 
           displayErrorAlert("Your password is incorrect", vc: self) 

          } 

         } 

        } 

        if userExists == false { 

         //user with that username does not exist 
         displayErrorAlert("Your username is incorrect", vc: self) 

        } 


       } else { 

        print(error) 

       } 

      }) 

     } 

, ben bu kodu çağırır: Burada

//Check if users exist 
let query = CKQuery(recordType: "MyUsers", predicate: NSPredicate(format: "TRUEPREDICATE", argumentArray: nil)) 
      pubDB.performQuery(query, inZoneWithID: nil, completionHandler: { (records, error) in 

       //error code 11 is no objects found 
       if error == nil || error?.code == 11 { 

        var usernameExists = false 

        for record in records! { 

         if record.objectForKey("username") as? String == self.usernameField.text { 
          //other user with the same username exists - don't allow user to create account 
          usernameExists = true 

         } 

        } 

        if usernameExists == true { 

         //displayErrorAlert is a function in which I display an error alert to the user 
         displayErrorAlert("Username \(self.usernameField.text!) is taken. Please choose another one.", vc: self) 

        } else { 
         //user can sign up 
         let record = CKRecord(recordType: "MyUsers") 
         record.setObject(self.usernameField.text!, forKey: "username") 
         record.setObject(self.passwordField.text!, forKey: "password") 

         pubDB.saveRecord(record, completionHandler: { (record, error) in 

          if error == nil { 

           NSOperationQueue.mainQueue().addOperationWithBlock { 

            NSUserDefaults.standardUserDefaults().setObject(self.usernameField.text!, forKey: "username") 
            username = self.usernameField.text! 
            self.performSegueWithIdentifier("account", sender: self) 

           } 

          } else { 

           print(error) 

          } 

         }) 

        } 

       } else { 

        print(error) 

       } 

      }) 

giriş kodudur: Burada

kaydolma kodudur kullanıcı:

if NSUserDefaults.standardUserDefaults().objectForKey("username") != nil { 
    username = NSUserDefaults.standardUserDefaults().objectForKey("username") as! String 
    self.performSegueWithIdentifier("account", sender: self) 
} 

variable username, tüm sınıflar için küresel bir değişkendir. Küresel değişkenleri tercih etmiyorsanız, bunu değiştirmelisiniz.

Bu yardımcı olur umarım.

+0

Tamam, tüm kodu sağlayabilirsiniz? – iHacks4iPhone

+0

Tamam. Bitti. Bir şey özlediğimde haberim olsun. – penatheboss

+0

Teşekkür ederim. İstediğim buydu. :) – iHacks4iPhone

İlgili konular