RoR新手,不是iOS新手。
所以我正在使用AFNetworking
来处理我的所有api调用。例如:
[[TJAPIClient shared] GET:@"api/taxonomies"
parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSMutableArray *taxonomies = [NSMutableArray arrayWithCapacity:[responseObject[@"taxonomies"] count]];
[responseObject[@"taxonomies"] each:^(NSDictionary *taxonomyInfo)
{
TJTaxonomy *taxonomy = [TJTaxonomy modelWithRemoteDictionary:taxonomyInfo];
[taxonomies addObject:taxonomy];
}];
if (block) block(taxonomies, nil);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
NSLog(@"Error fetching taxonomies: %@", error);
[UIAlertView showAlertViewWithTitle:@"Server Error"
message:error.localizedDescription
cancelButtonTitle:nil
otherButtonTitles:nil
handler:nil];
if (block) block(nil, error);
}];
在RoR上,没有什么花哨的东西:
def create
@user = User.new(user_params)
respond_to do |f|
if @user.save
f.html {}
f.json { render json: @user }
else
f.html {}
f.json { render json: @user.errors.full_messages }
end
end
end
按照目前的情况,上面写的代码通过成功块返回错误,数据如下所示:
{
errors = (
@"Email can't be blank",
@"Password can't be blank"
)
}
所以我想知道的是我如何通过故障块发送这些错误,以及将相应的错误作为NSError
对象发送。如果那是不可能的,那么也许是这种事情的一些最佳实践。再一次,我对RoR世界很陌生(尽管喜欢它!)。
谢谢!
答案 0 :(得分:-1)
如果要处理这些错误,则必须检查成功回调块的responseObject。
if (responseObject[@"errors"])
NSLog(@"Oh noes!");
}
错误块是NSURLSessionTaskDelegate的直通 1 ,当URLSession:task:didCompleteWithError:被调用时出错。
不通过error参数报告服务器错误。委托通过error参数收到的唯一错误是客户端错误,例如无法解析主机名或连接到主机。
好吧,它也会被来自响应序列化器的任何序列化错误调用。
您可以查看AFURLSessionManagerTaskDelegate的URLSession:task:didCompleteWithError:方法,了解它是如何工作的。