Как лучше всего добавить пользовательские отношения с помощью Parse?

У меня есть текстовое поле, в котором пользователи вводят имя пользователя и нажимают «Добавить». Это лучший способ сделать это?: Сделать запрос на имя пользователя. Если пользователь не существует, дать предупреждающее сообщение. Если пользователь существует, добавьте его в отношения следующим образом:

    [self.friends addObject:user];
    [friendsRelation addObject:user];

Другой вопрос, как мне найти пользователя с запросом и вернуть объект? Кроме того, вот некоторые переменные, которые я сделал в .h

@property (nonatomic, strong) NSArray *allUsers;
@property (nonatomic, strong) PFUser *currentUser;
@property (nonatomic, strong) NSMutableArray *friends;
@property (nonatomic, strong) PFUser *foundUser;

- (BOOL)isFriend:(PFUser *)user;

person user3398659    schedule 05.08.2014    source источник


Ответы (2)


Ознакомьтесь с приведенным ниже кодом, и вы можете адаптировать его к своим более конкретным потребностям, но обычно он делает то, о чем вы просите. Я настоятельно рекомендую вам прочитать документацию по всем методам в коде и проверить некоторые учебники по Parse или примеры кода — в них это подробно описано.

// create and set query for a user with a specific username
PFQuery *query = [PFUser query];
[query whereKey:@"username" equalTo:@"usernameYouWantToAdd"];

// perform the query to find the user asynchronously 
[query getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) {
        if (error) {
            NSLog(@"Error: %@ %@", error, [error userInfo]);
            // the Parse error code for "no such user" is 101
            if (error.code == 101) {
                NSLog(@"No such user");
            }
        }
        else {
            // create a PFUser with the object received from the query
            PFUser *user = (PFUser *)object;
            [friendsRelation addObject:user];
            [self.friends addObject:user];
            // save the added relation in the Parse database
            [self.currentUser saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
                if (error) {
                    NSLog(@" %@ %@", error, [error userInfo]);
                }
            }];
        }
    }];

Обратите внимание, что ссылка на self внутри блока может привести к циклу сохранения и, следовательно, к утечке памяти. Чтобы предотвратить это, вы можете создать слабую ссылку на self вне блока, где ClassOfSelf — это класс того, чем является self, в данном случае, скорее всего, ваш контроллер представления:

 __weak ClassOfSelf *weakSelf = self;

А затем используйте его для доступа к self в блоке, например:

[weakSelf.friends addObject:user];
person p4sh4    schedule 05.08.2014
comment
Хорошо. Извините, но у меня есть еще один небольшой вопрос. Как мне отобразить все отношения/друзей в ячейке таблицы? - person user3398659; 05.08.2014
comment
Как и любые другие данные, которые вы бы отображали в ячейке табличного представления. Вы действительно должны прочитать документацию прежде чем задавать такие вопросы. - person p4sh4; 06.08.2014

Во-первых, чтобы добавить отношение, я должен сначала получить столбец отношения от пользователя, добавить объект в это отношение, а затем просто сохранить пользователя.

Далее, какой запрос вы ищете? Вы хотите запросить друзей пользователя? Запросить таблицу пользователей для пользователей, которые дружат с тем-то и тем-то? Не могли бы вы уточнить?

person Jacob    schedule 05.08.2014