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世界来说是个新手(尽管很喜欢它!)。
谢谢!
如果要处理这些错误,则必须检查成功回调块的responseObject。
if (responseObject[@"errors"])
NSLog(@"Oh noes!");
}
错误块是NSURLSessionTaskDelegate的传递1,将在URLSession:task:didCompleteWithError:被错误调用时使用。
服务器错误不会通过error参数报告。您的委托通过error参数收到的唯一错误是客户端错误,例如无法解析主机名或无法连接到主机。
好吧,它也将在响应序列化程序的任何序列化错误上被调用。
您可以看一下AFURLSessionManagerTaskDelegate的URLSession:task:didCompleteWithError:方法,以了解其工作原理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句