Как получить идентификатор пользователя из объектов запроса и отношений?

Я теряю голову над этим, просто не могу понять.

В моем приложении есть текстовое поле и кнопка, с помощью которой вы можете ввести свой номер телефона или просто номер (это не имеет значения).

метод кнопки это

PFObject *addValues= [PFObject objectWithClassName:@"phoneNumber"];
[addValues setObject:phoneNumbers forKey:@"numbers"];
[addValues setObject:whoIsTheUser forKey:@"theUser"];
[addValues saveInBackground];

затем я добавляю еще одну кнопку, которая проверяет, поместил ли другой пользователь в поле тот же номер, что и первый пользователь, поэтому я запускаю запрос для этого, код прямо здесь:

PFQuery* numQuery = [PFQuery queryWithClassName:@"phoneNumber"];
[numQuery whereKey:@"numbers" equalTo:phoneNumbers];
[numQuery whereKey:@"theUser" notEqualTo:[PFUser currentUser]];
[numQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error){


    if(!error)
    {
       // send an alert view for data-has-been-sent 

        UIAlertView *messageForSending = [[UIAlertView alloc]initWithTitle:@"thank you" message:@"the details has been send" delegate:nil cancelButtonTitle:@"okay" otherButtonTitles:nil, nil ];
        [messageForSending show];


        for(PFObject *numObject in objects) {

            // checking how much objects did the query find ...

            if (objects.count > 1 ) {


                NSLog(@"yay we found %lu objects", (unsigned long)objects.count);

                // in the future i will handle those multiply objects somehow :D

            }else{

                // if there's 1 results i know it's going to show this message

             **// HOW CAN I CHECK WHAT'S THE OTHER PFUser ID IS ? AND HOW CAN I MAKE RELATIONSHIP WITH THE CURRENT PFUser ??**

                NSLog(@"yup there is a match");
                //NSLog(@"checking objects %lu", objects.count);
                NSLog(@" object names %@", objects);
                // showing alert message for success

                UIAlertView *successMessage = [[UIAlertView alloc]initWithTitle:@"THERE IS A           MATCH" message:@" we found a match, would u like to talk with him ?" delegate:nil            cancelButtonTitle:@"cancel" otherButtonTitles:@"yes", nil];
                [successMessage show];










            }



        }

    }
    else
    {
  // there's an error so i will show here in the future an UIAleart view for trying again.

        NSLog(@" big error !!!");

    }
}


 ];

поэтому предполагается, что есть 1 совпадение, и оба пользователя вводят один и тот же номер (вы можете видеть в приведенном выше коде, что я поставил ** для своего вопроса). как я могу создать код отношения с текущим PFUser и новым пользователем, которого я нашел в объектах? Я хочу создать связь между ними двумя идентификаторами пользователей и поместить их в базу данных синтаксического анализа как класс друзей. КСТАТИ. приведенный выше код работает, я создал двух пользователей и набрал 1234 для них обоих, и это работает: D - теперь все, что мне осталось, это подключить их обоих пользователей.

спасибо большое ребята! .


person XcodeNOOB    schedule 19.03.2014    source источник


Ответы (1)


Во втором запросе кнопки добавьте эту строку:

[numQuery includeKey:theUser];

Это обеспечит получение объекта пользователя вместе с результатом. Затем вы можете получить этот пользовательский объект с помощью:

PFUser *otherUser = [objects lastObject]; // Assuming there was only 1 user in the result

Теперь у вас есть оба пользователя.

Затем, чтобы связать их, вам нужен либо столбец для каждого пользовательского объекта с массивом других пользователей, которые являются друзьями, либо обновите каждый из этих столбцов в обоих пользовательских объектах с помощью пользовательского объекта другого пользователя. Этот столбец должен быть массивом указателей.

Тем не менее, лучший подход — использовать отдельный класс синтаксического анализа для ссылок друзей. Я предполагаю, что у людей может быть несколько таких дружеских отношений. Может быть, для этого и предназначен ваш класс «Друзья»?

person Marius Waldal    schedule 19.03.2014
comment
спасибо за столь быстрый ответ, я сделал, как вы сказали, и сохранил его следующим образом: PFUser *otherUser = [objects lastObject]; PFObject *newChat = [PFObject objectWithClassName:@NewChat]; [newChat setObject:whoIsTheUser forKey:@sender]; [newChat setObject:otherUser forKey:@reciever]; [новый чат saveInBackground]; теперь у меня есть НОВЫЙ класс с ПОЛЬЗОВАТЕЛЯМИ. теперь предположим, что у меня есть другой класс с текстом, который загружает пользователь, как я могу заставить другого пользователя его увидеть? Спасибо за любую помощь ! :D - person XcodeNOOB; 20.03.2014
comment
Создание приложения для чата может быть простым или сложным, в зависимости от желаемого уровня сложности. Есть несколько фреймворков, которые вы можете использовать, поэтому вам не нужно изобретать все это самостоятельно. Если вы ДЕЙСТВИТЕЛЬНО хотите попробовать, взгляните на это руководство (в котором даже используется Parse): attila.tumblr.com/post/21180235691/ — на github также есть ChatDemo, использующий синтаксический анализ, но он уже устарел. : github.com/dmendels/chatDemo - person Marius Waldal; 20.03.2014
comment
да, я нашел этот учебник в Google :-), я пытаюсь поиграть с ним, но не понял, как сделать его приватным чатом между пользователем A и пользователем B. этот чат глобальный, можно ли сделать его приватным между двумя пользователями?? - person XcodeNOOB; 20.03.2014
comment
Не совсем уверен, что вы вложили в термин «частное» здесь, но это довольно широкий вопрос. Вы можете использовать ACL, чтобы ограничить, кто может видеть чат, или вы можете реализовать некоторую проверку того, кто может присоединиться к чату. Для этого должно быть много решений. - person Marius Waldal; 20.03.2014