在当前线程 (signUp:) 上执行 Parse.com 用户注册并检索 NSError

Posted

技术标签:

【中文标题】在当前线程 (signUp:) 上执行 Parse.com 用户注册并检索 NSError【英文标题】:perform Parse.com user signup on the current thread (signUp:) and retrieving the NSError 【发布时间】:2014-03-21 10:55:26 【问题描述】:

我必须在当前线程上调用 Parse 的用户注册方法,而不是后台线程,因为它已经在后台线程上被调用。 -(BOOL)signUp 方法不够好,因为我只会在注册成功与否的情况下得到 BOOL 响应,但我必须处理潜在的错误。

我注意到了-(BOOL)signUp:(NSError **)error 的方法,但在理解如何使用它时,我目前的 ios 编程技能还没有达到 :)

这里是signUp: documentation

我尝试向我的用户对象添加一个名为 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

任何想法如何使它与这种方法或替代方法一起工作以达到相同的结果?

【问题讨论】:

【参考方案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;



【讨论】:

非常感谢...看来是时候让我了解一下 NSErrors 的工作原理了:D

以上是关于在当前线程 (signUp:) 上执行 Parse.com 用户注册并检索 NSError的主要内容,如果未能解决你的问题,请参考以下文章

Parse.enableLocalDatastore() - 警告:一个长时间运行的操作正在主线程上执行

如何在 Parse 中修复“无效的用户名/密码”

在当前线程上执行任务

php 自定义wp-signup.php,以便用户在注册时可以留在当前的博客中

Parse:如何重置本地数据存储?

Backand.signup() - “创建我的应用用户”未能执行