2016-04-03 5 views
2

Syncanoのドキュメントが説明できないので、私はこれに固執しています... Syncanoバックエンド(RIP Parse)私がしたいのは、姓、名、そして選ぶことができる一意のユーザー名を保存することだけです。私はすでにユーザーをサーバーに接続することができ、クラスのリストでそれらを見ることができますが、ユーザーの追加情報は表示されません。私はSignup View Controllerと呼ばれるビューコントローラを持っており、ラベルとボタンとのすべてのやりとりをすべて処理します。これは私の最初のアプリであり、プログラミングの初心者であることに言及する価値があるので、ユーザ名と一意のユーザ名を保存しないでください。ユーザーの情報を保存して、代替のSyncanoを素早く検索する

これは私が押されたときにSyncanoにデータを送信する方法である:

class SignupViewController: UIViewController { 

    var delegate : LoginDelegate? 
    var @IBAction func signupPressed(sender: AnyObject) { 
    var huddleusernameText = usernameTextField.text 
    var firstNameText = firstNameTextField.text 
    var lastNameText = lastNameTextField.text 
    var passwordText = passwordTextField.text 
    var repeatPasswordText = repeatPasswordTextField.text 
    var emailText = emailTextField.text 

func registerUser(username: String, password: String, first_name: String, last_name: String, email: String) 
    { 
     SCUser.registerWithUsername(username, password: password) 
     { error in 
      //handle user registration 
      if (error != nil) 
      { 
      //handle error 
      print("Sign Up, error: \(error)") 
      } 
     } 
} 

self.signUp(self.getUsername()!, password: self.getPassword()!, finished: 
     { error in 
    if (error != nil) { 
       //handle error 
       print("Sign Up, error: \(error)") 
    } else 
    { 
     SCUser.currentUser() 
     self.addNewUser() 
     self.delegate?.didSignUp() 

    } 
}) 

func signUp(username: String, password: String, finished: (NSError!) ->()) { 
    SCUser.registerWithUsername(username, password: password) { error in 
     finished(error) 
    } 
} 

// Syncano docs mentions using this, but I'm not sure how to use this piece of code to store user data... 
class MyUserProfile : SCUserProfile { 
    var avatar : SCFile? = nil; 
    var first_name = "" 
    var last_name = "" 
    var email = "" 
    var username = "" 
} 

これは

func addNewUser() { 
    let user = MyUserProfile() 
    user.first_name = firstNameTextField.text! 
    user.last_name = lastNameTextField.text! 
    user.email = emailTextField.text! 
    user.huddle_username = usernameTextField.text! 
    user.saveWithCompletionBlock { error in 
     //Handle error 
    } 
} 

追加の何かである私は、新しいソリューションに実行する場合、私はこの質問を更新しますが、今のところ、これはそれです。

+0

コードに問題があります。中括弧とブロックを確認してください。例えば'var @IBAction func signupPressed(sender:AnyObject){'あなたは関数定義を開始しますが、中括弧は見えません。 – dron22

答えて

2

詳細については、カスタムフィールド(姓と名など)を使用するための独自のユーザープロファイルのサブセットについて説明しているドキュメントhttp://docs.syncano.io/docs/ios#section-subclassing-user-and-user-profileを参照してください。

あなた自身のカスタムユーザープロファイルを既に持っていることは知っていますが、最初から説明すると良いと感じています。

まず、user_profileクラスを編集する必要があります。最も簡単なのはDashboardで、first_nameプロパティとlast_nameプロパティを追加します。

次に、独自のカスタムUSER_PROFILEクラスを作成します。

import syncano_ios 

class MyUserProfile: SCUserProfile { 
    var first_name = "" 
    var last_name = "" 
} 

あなたがそれを使用する前に、(func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool方法では、例えば、あなたのメインクラスのviewDidLoadで、あるいはAppDelegateで)どこかのアプリでそれを登録使用:

SCUser.registerClassWithProfileClass(MyUserProfile.self) 

をあなたは今、ユーザーのプロファイルに最初と最後の名前を保存しますあなたのコードを書くことができます。

func saveName() { 
    guard let profile = SCUser.currentUser().profile as? MyUserProfile else { 
     return 
    } 
    profile.first_name = "Firstname" //get it from e.g. text field 
    profile.last_name = "Lastname" //get it from e.g. text field 
    profile.saveWithCompletionBlock { error in 
    } 
} 

コードを変更します。代わりにaddNewUserを呼び出す、saveNameメソッドを呼び出します。

self.signUp(self.getUsername()!, password: self.getPassword()!, finished: 
     { error in 
    if (error != nil) { 
       //handle error 
       print("Sign Up, error: \(error)") 
    } else 
    { 
     self.saveName() 
     self.delegate?.didSignUp() 

    } 
}) 

このコードとあなたが投稿1との間の主な違いは、あなたが新しいuser_profileオブジェクトを作成しようとしていたということです - 行うことは不可能です。代わりに、Syncanoは新しいユーザーが作成されるたびに新しいuser_profileを追加します。 あなたがする必要があるのは、新しいユーザーのuser_profileを取得し、姓と名を追加して変更するだけです。

+0

私は同じことをしようとしていますが、登録後にcurrentUser()にアクセスすると、それは私に違和感を抱かせます。登録が完了したら、Syncanoは自動的にユーザーにログインするはずですか? – Connor

+0

@ConnorNevilleベストプラクティスは、最初に手動でログアウトすることです。私たちはそれに取り組んでいます。次のリリースでは、register/loginメソッドを実行する前に自動的にログアウトします。 –

関連する問題