最佳实践:错误处理Ruby(Rails)到iOS(AFNetworking)

雅肯贝格

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:被错误调用时使用。

NSURLSessionTaskDelegate

服务器错误不会通过error参数报告。您的委托通过error参数收到的唯一错误是客户端错误,例如无法解析主机名或无法连接到主机。

好吧,它也将在响应序列化程序的任何序列化错误上被调用。

您可以看一下AFURLSessionManagerTaskDelegate的URLSession:task:didCompleteWithError:方法,以了解其工作原理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

错误处理匿名函数的最佳实践

来自分类Dev

PHP mysqli最佳实践错误处理

来自分类Dev

烧瓶错误处理的最佳实践是什么?

来自分类Dev

处理 RxSwift 重试和错误处理的最佳实践是什么

来自分类Dev

Ruby on Rails DRY最佳实践

来自分类Dev

OpenGL错误处理最佳做法

来自分类Dev

时钟类错误处理的最佳方法?

来自分类Dev

Ruby on Rails中的跟踪活动最佳实践

来自分类Dev

REST API处理错误的最佳实践

来自分类Dev

Ruby中的Sinatra错误处理

来自分类Dev

Spring集成流程中的错误处理实践

来自分类Dev

从tomcat到码头的错误处理程序

来自分类Dev

Rails错误处理/记录:简化的回溯

来自分类Dev

IOS中PhoneGap的错误处理页面

来自分类Dev

是否有可能在rails错误页面上捕获ruby并进行我自己的错误处理?

来自分类Dev

从Rails 4升级到Rails 5后,自定义错误处理不再起作用

来自分类Dev

RuntimeException处理最佳实践

来自分类Dev

处理NumberFormatExeption的最佳实践

来自分类Dev

Ruby Mixin最佳实践

来自分类Dev

Ruby on Rails中针对多种类型的用户的最佳实践

来自分类Dev

Ruby on Rails API:计算属性模式最佳实践

来自分类Dev

Ruby on Rails 4.x,嵌套模型,最佳实践

来自分类Dev

使用ASP.NET Web API处理错误的最佳实践

来自分类Dev

从多个抽象级别处理错误的最佳实践

来自分类Dev

IOS-处理大量图像的最佳实践(性能+磁盘大小)

来自分类Dev

找不到Ruby Capybara元素错误处理

来自分类Dev

枚举到最佳实践

来自分类Dev

Rails环境最佳实践

来自分类Dev

SimpleMessageListenerContainer错误处理