我正在使用Parse作为我的应用程序的后端。一旦用户登录他们的帐户,我正试图让下一个视图说"欢迎,(名字)"在顶部。但是,即使使用Parse的在线文档,我也似乎无法弄清楚如何实现这一目标。他们的网站指示我在这里寻求进一步帮助我尝试过使用他们的查询功能,但无法弄明白。换句话说,我试图从数据库中提取当前登录用户的名字,并在登录后显示它。
当前代码:
PFQuery *query = [PFUser query];
[query whereKey:@"firstName" equalTo:currentUser]; // find user's first name
NSArray *firstName = [query findObjects];
上一个代码:
PFUser *currentUser = [PFUser currentUser];
if (currentUser) {
// do stuff with the user
Welcome.text = [NSString stringWithFormat:@"Welcome,", currentUser];
答案 0 :(得分:0)
你过于复杂的事情。
每次加载视图时都不必执行查询,而应将其放在plist或NSUserDefaults中,以免仅使用API请求显示当前用户名。
但是,您可以对当前用户的用户名执行以下操作:
if ([PFUser currentUser]) {
Welcome.text = [NSString stringWithFormat:@"Welcome, %@", [PFUser currentUser].username];
}
答案 1 :(得分:0)
首先,你应该检查你是否真的使用这种功能注册和/或登录Parse:
[PFUser signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
}];
[PFUser logInWithUsernameInBackground:@"My username" password:@"My password" block:^(PFUser *validUser, NSError *error) {
}];
点击此链接:https://parse.com/docs/ios_guide#users-signup/iOS
完成此操作后,无论何时您想要检索用户信息,
[PFUser currentUser]
是调用某些信息的正确方法:
比如说你想要检索objectId,你可以这样得到它:
NSString *str = [PFUser currentUser].objectId;
或者说你想设置一个这样的自定义值:
NSString *str = @"My custom object";
[PFUser setObject:str forKey:@"MyCustomObject"];
[PFUser saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
}];
比你这样检索它:
NSString *str = [PFUser objectForKey:@"MyCustomObject"];
你应该通过Parse检查文档和示例,这些都是非常好的解释! ;)
(以下是Parse的一些教程/示例:https://parse.com/tutorials)
答案 2 :(得分:0)
如何设置从登录到主视图的转换?它们是两个不同的控制器吗?
如果是这样,你应该查看NSNotificationCenter ......
在MainViewController中,实现
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(loadObjects)
name:@"loginFinished"
object:nil];
而loadObjects
将是
- (void)loadObjects
{
Welcome.text = [NSString stringWithFormat:@"Welcome %@", [[PFUser currentUser] objectForKey:"userNameField"]];
}
*您需要解析PFUser对象以访问其字段。它只是一本字典,所以提供一个密钥'用户名'或者其他什么,并且您收到一个值' myusername'。 * 强>
然后在LoginViewController
内[PFUser logInWithUsernameInBackground:password:block
实施此
[PFUser logInWithUsernameInBackground:@"My username" password:@"My password" block:^(PFUser *validUser, NSError *error) {
if (!error) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"loginFinished" object:nil];
}
}];
但这基本上就是你应该如何设置login->主要流程。学习NSNotifications,委托和KVO ......学习这些知识将使您了解如何在iOS / Mac环境中传递数据。
这是对所有人的类比:
NSNotification
:一位教师(NSNotification海报)宣布对所有学生(NSNotification观察员)或至少目前正在上课的学生,缺课的学生进行测试。观察。
Delegate
:学生完成考试并通知教授(代表)。
KVO
:一名学生(KVO海报)完成一个问题,并举手示意教师或其他学生可以成为KVO(键值观察员)并采取行动。