繁体   English   中英

解析iOS:保存不成功时,PFUser saveInBackgroundWithBlock不返回错误

[英]Parse iOS: PFUser saveInBackgroundWithBlock does not return error when the save does not succeed

我在解析中使用匿名用户,如果未保存它们,我会发出网络呼叫以保存它们。 保存用户的代码如下

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;
}

如果我在没有互联网连接的情况下在模拟器中运行此程序,则保存失败(很明显),但是成功是正确的,错误为nil,因此即使未保存用户,我的代码也会加载数据。 实际上,该错误已记录在日志中,但未在回调中返回:

错误:错误域= NSURLErrorDomain代码= -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中的错误,还是我使用不正确?

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

如果仅要检查其中之一,请检查错误。

以下是我将使用的模式:

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

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

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

    }

这是一个错误,现已在最新版本的parse中修复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM