尝试保存用户信息以使用 swift 解析替代 Syncano
Trying to save user info to parse alternative Syncano with swift
我非常坚持这一点,因为 Syncano 文档不太擅长解释......
我正在使用 Syncano 后端 (R.I.P Parse) 构建一个简单的聊天应用程序,我想要做的就是保存名字、姓氏和他们可以选择的唯一用户名。我已经设法将用户连接到服务器,并且可以在我的 类 列表中看到它们,但是没有显示用户的附加信息。我有一个名为 Signup 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
}
}
如果我 运行 有任何新的解决方案,我会更新这个问题,但现在,就是这样。
您可以在文档中找到更多详细信息:http://docs.syncano.io/docs/ios#section-subclassing-user-and-user-profile,其中讨论了您自己的子class 用户配置文件以使用自定义字段(如名字和姓氏)。
我知道你已经有自己的自定义用户画像了,但我觉得还是从头开始解释比较好。
首先,您需要编辑 user_profile
class,最简单的方法是通过 Dashboard 并在其中添加 first_name 和 last_name 属性。
接下来,创建您自己的自定义 user_profile class:
import syncano_ios
class MyUserProfile: SCUserProfile {
var first_name = ""
var last_name = ""
}
在你可以使用它之前,在你的应用程序中的某个地方注册它(例如在你的主要 class 的 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,并通过添加名字和姓氏来修改它。
我非常坚持这一点,因为 Syncano 文档不太擅长解释......
我正在使用 Syncano 后端 (R.I.P Parse) 构建一个简单的聊天应用程序,我想要做的就是保存名字、姓氏和他们可以选择的唯一用户名。我已经设法将用户连接到服务器,并且可以在我的 类 列表中看到它们,但是没有显示用户的附加信息。我有一个名为 Signup 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
}
}
如果我 运行 有任何新的解决方案,我会更新这个问题,但现在,就是这样。
您可以在文档中找到更多详细信息:http://docs.syncano.io/docs/ios#section-subclassing-user-and-user-profile,其中讨论了您自己的子class 用户配置文件以使用自定义字段(如名字和姓氏)。
我知道你已经有自己的自定义用户画像了,但我觉得还是从头开始解释比较好。
首先,您需要编辑 user_profile
class,最简单的方法是通过 Dashboard 并在其中添加 first_name 和 last_name 属性。
接下来,创建您自己的自定义 user_profile class:
import syncano_ios
class MyUserProfile: SCUserProfile {
var first_name = ""
var last_name = ""
}
在你可以使用它之前,在你的应用程序中的某个地方注册它(例如在你的主要 class 的 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,并通过添加名字和姓氏来修改它。