2015-02-04 2 views
0

Я использую 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

Вы использовали это вместо этого: '[NSString stringWithFormat: @" Welcome,% @ ", currentUser];'? При использовании строки формата, как в stringWithFormat, вам нужно использовать% @ в качестве идентификатора для вашей строки, которую вы предоставляете, то есть «currentUser». – Mike

+0

Я просто попытался, но теперь он показывает что-то вроде . – TheEliteTech

ответ

0

Ваши излишние вещи.

Вам не нужно выполнять запрос каждый раз при загрузке представления, вместо этого вы должны поместить его в plist или NSUserDefaults, чтобы не использовать запрос API просто для отображения текущего имени пользователя.

Однако, вы можете сделать следующее для текущих пользователей Логин:

if ([PFUser currentUser]) { 
    Welcome.text = [NSString stringWithFormat:@"Welcome, %@", [PFUser currentUser].username]; 
} 
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)

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, Delegation и, возможно, KVO ... Изучая их, вы поймете, как данные могут передаваться в среде iOS/Mac.

Heres аналогия для всех из них:

NSNotification: учитель (NSNotification плакат) объявляет тест на всех его учеников (NSNotification наблюдателя), или, по крайней мере, один есть кто в настоящее время в классе, студенты не хватает класса не соблюдаются.

Delegate: Студент заканчивает тест и информирует профессора (делегата).

KVO: Студент (плакат KVO) завершает вопрос и поднимает руку, где учитель или даже другие ученики могут быть КВО (наблюдатели с ключевыми знаками) и действовать на их действия.

Смежные вопросы