![](/img/trans.png)
[英]MagicalRecord saveInBackgroundWithBlock does not save object
[英]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.