2016-04-03 34 views
2

我超级卡在这,因为Syncano文档是不是在解释大... 我建设有Syncano后端一个简单的聊天应用程序(RIP解析)我想要做的就是保存名字,姓氏和他们可以选择的唯一用户名。我已经设法将用户连接到服务器,并可以在我的课程列表中看到它们,但用户的其他信息未显示。我有一个名为Signup View Controller的视图控制器,它处理所有与所有连接的标签和按钮的交互。值得一提的是,这是我的第一个应用程序,我是编程的初学者,所以我需要一些具有一点经验的人给我一些指针,其中不保存用户名和唯一用户名。试图保存用户信息来分析替代Syncano与SWIFT

这是我要如何将数据发送到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

有些东西与您的代码不符。请检查大括号和块。例如in'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 = "" 
} 

之前,你可以用它,在你的应用程序的某个地方进行注册(例如,在主类的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,并通过添加名字和姓氏来修改它。

+0

我试图做同样的事情,但是当我在注册后访问currentUser()时,奇怪地给我一个不同的用户配置文件。 Syncano应该在注册完成时自动登录用户? – Connor

+0

@ConnorNeville最佳做法是先手动注销。我们正在研究它,在下一个版本中,我们将在注册/登录方法运行之前自动注销。 –

相关问题