解析iOS:PFUser saveInBackgroundWithBlock在保存失败时不返回错误

时间:2014-08-27 06:47:39

标签: ios parse-platform

我在解析时使用匿名用户,如果没有保存,我会发出网络调用来保存它们。保存用户的代码如下

PFUser* current = [PFUser currentUser];
if (!current.objectId) {
    // The user is newly created, don't run any queries for them until they are saved.
    [current saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        // We need a saved user to do stuff.
        if (!succeeded) {
            NSLog(@"Error saving user: %@", error);
        } else {
            NSLog(@"Saved anonymous user");
            // ... load data
        }
    }];
    return;
}

如果我在没有互联网连接的模拟器中运行它,则保存失败(显然),但是成功是真的并且错误是零,所以即使用户没有保存,我的代码也会加载数据。实际上,错误会记录在日志中,但不会在回调中返回:

  

错误:错误   Domain = NSURLErrorDomain Code = -1009"显示Internet连接   离线。"的UserInfo = 0x17aa1220   {NSErrorFailingURLStringKey = https://api.parse.com/2/user_signup_or_login,   NSErrorFailingURLKey = https://api.parse.com/2/user_signup_or_login,   NSLocalizedDescription = Internet连接似乎处于脱机状态。   NSUnderlyingError = 0x1792c880" Internet连接似乎是   离线。"}(代码:100,版本:1.2.20)

这是Parse API中的错误还是我没有正确使用?

3 个答案:

答案 0 :(得分:0)

仅检查succeeded标志是不够的,您还应该检查error

如果您只是要检查其中一个,请检查错误。

以下是我将使用的模式:

if (succeeded && !error) {
    // success!
} else {
    // uh oh :(
}

答案 1 :(得分:0)

您可以使用检查连接的else来处理kPFErrorConnectionFailed块中的错误。

实施例

else { 
       if(error.code == kPFErrorConnectionFailed) 
        {
           // handle error 
        } 

    }

答案 2 :(得分:0)

这是一个已在最新版本的解析中修复的错误。