Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从解析数据库中提取用户信息_Ios_Objective C_Parse Platform - Fatal编程技术网

Ios 从解析数据库中提取用户信息

Ios 从解析数据库中提取用户信息,ios,objective-c,parse-platform,Ios,Objective C,Parse Platform,我正在使用Parse作为我的应用程序的后端。一旦用户登录到他们的帐户,我就试图让下一个视图在顶部说“欢迎,(名字)”。然而,即使使用Parse的在线文档,我似乎也不知道如何实现这一点。他们的网站指示我在此寻求进一步的帮助。我试过使用他们的查询功能,但没有找到答案。换句话说,我试图从数据库中提取当前登录用户的名字,并在登录后显示它 当前代码: PFQuery *query = [PFUser query]; [query whereKey:@"firstName" equalTo:currentU

我正在使用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];

你的事情太复杂了

您不必每次加载视图时都执行查询,相反,您应该将其放入plist或NSUserDefaults中,以避免仅使用API请求来显示当前用户名

但是,您可以对当前用户的用户名执行以下操作:

if ([PFUser currentUser]) {
    Welcome.text = [NSString stringWithFormat:@"Welcome, %@", [PFUser currentUser].username];
}

首先,您应该检查您是否确实使用此类函数注册和/或登录到Parse:

[PFUser signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
}];

[PFUser logInWithUsernameInBackground:@"My username" password:@"My password" block:^(PFUser *validUser, NSError *error) {
}];
检查此链接:

完成此操作后,每当您想要检索用户信息时

[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"];
或者说您想设置如下自定义值:

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"];
然后按如下方式检索:

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的教程/示例:)

如何设置从登录到主视图的转换?它们都是两个不同的控制器吗

如果是这样,你应该调查一下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对象以访问其字段。它只是一个字典,所以为它提供一个键“username”或其他什么,你就会收到一个值“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];

  }
}];
但这基本上就是你应该如何设置你的登录->主流程。学习NSNotification、Delegation,也许还有KVO…学习这些将使你了解如何在iOS/Mac环境中传递数据

这里有一个类比:

NSNotification
:老师(NSNotification海报)向所有学生(NSNotification观察员)宣布考试,或至少向正在上课的学生宣布考试,缺课的学生没有观察

代表
:学生完成测试并通知教授(代表)


KVO
:学生(KVO海报)完成一个问题并举手,老师甚至其他学生可以成为KVO(关键值观察者)并采取行动。

您是否尝试过使用此选项:
[NSString stringWithFormat:@“欢迎,%@”,currentUser];
?当使用格式字符串时,如在stringWithFormat中,您需要使用%@作为您提供的字符串的标识符,即
currentUser
。我刚刚尝试过,但现在它显示类似的内容。