выполнить регистрацию пользователя Parse.com в текущем потоке (signUp:) и получить NSError

Мне нужно вызвать метод signUp пользователя Parse в текущем потоке, а не в фоновом потоке, поскольку он уже вызывается в фоновом потоке. Метод -(BOOL)signUp недостаточно хорош, так как я получаю ответ BOOL только в том случае, если регистрация прошла успешно или нет, но я должен обрабатывать возможные ошибки.

Я заметил метод -(BOOL)signUp:(NSError **)error, но мои текущие навыки программирования для iOS еще не достигнуты, когда дело доходит до понимания того, как его использовать :)

Вот signUp: документация< /а>

Я попытался добавить дополнительное свойство в свой пользовательский объект с именем NSError *latestError, и я надеялся вызвать упомянутый метод и поместить возвращаемое значение NSError в это значение, чтобы я мог обрабатывать ошибки в основном потоке:

-(BOOL)registerUser{
    PFUser *newUser = [PFUser user];
    newUser.username = self.username;
    newUser.password = self.password;
    return [newUser signUp:self.lastError]; // error
}

но я получаю эту ошибку:

Неявное преобразование понтера Objective-C в «NSError *__autoreleasing *» запрещено с помощью ARC.

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


person budiDino    schedule 21.03.2014    source источник


Ответы (1)


Вы должны передать ссылку на объект NSError. Parse выполнит процесс, и если есть какая-либо ошибка, он обновит объект ошибки соответствующей ошибкой.

Ваш новый код должен быть похож на

-(BOOL)registerUser{
    NSError *error = nil;
    PFUser *newUser = [PFUser user];
    newUser.username = self.username;
    newUser.password = self.password;
    [newUser signUp:&error]; // error

    if( error != nil)
    {
      //log the error or show alert
      return NO;
    }

    return YES;


}
person Shubhank    schedule 21.03.2014
comment
большое спасибо... похоже, мне пора узнать, как работают NSErrors :D - person budiDino; 21.03.2014