2

Syncano のドキュメントは説明が下手なので、私はこれに非常にこだわっています... Syncano バックエンド (RIP 解析) を使用して単純なチャット アプリを構築しています。そして、彼らが選択できる一意のユーザー名。私はすでにユーザーをサーバーに接続しており、クラスのリストに表示されていますが、ユーザーの追加情報は表示されません。Signup View Controller接続されているラベルとボタンとのすべてのやり取りを処理する View Controller という名前があります。これは私の最初のアプリであり、私はプログラミングの初心者であるため、ユーザー名と一意のユーザー名が保存されていないことについて、少し経験のある人に教えてもらう必要があります。

これは、押されたときに 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
    }
}

新しい解決策が見つかった場合は、この質問を更新しますが、今のところはこれで終わりです。

4

1 に答える 1

2

ドキュメントで詳細を見つけることができます:http://docs.syncano.io/docs/ios#section-subclassing-user-and-user-profile、カスタムフィールドを使用するためのユーザープロファイルの独自のサブクラスについて説明しています(姓と名)。

すでに独自のカスタム ユーザー プロファイルがあることは承知していますが、最初から説明した方がよいと思います。

user_profileまず、クラスを編集する必要があります。最も簡単な方法は、ダッシュボードを使用して、そこに first_name および last_name プロパティを追加することです。

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

import syncano_ios

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

使用する前に、次を使用して、アプリのどこかに登録してください (たとえば、viewDidLoadメイン クラス、またはメソッド内の AppDelegate 内func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool)。

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()

    }
})

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

于 2016-04-04T10:36:04.647 に答える