加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将mutableCopy转换为Swift

发布时间:2020-12-14 05:00:09 所属栏目:百科 来源:网络整理
导读:我发现这个 guide收到一个HTTP Body,女巫包含一个带有AFNetworking 2的JSON格式错误信息.该指南是在Objective-C中,我正在尽我所能将其转换为Swift. 这是我试图转换为Swift的代码: - (id)responSEObjectForResponse:(NSURLResponse *)response data:(NSData
我发现这个 guide收到一个HTTP Body,女巫包含一个带有AFNetworking 2的JSON格式错误信息.该指南是在Objective-C中,我正在尽我所能将其转换为Swift.

这是我试图转换为Swift的代码:

- (id)responSEObjectForResponse:(NSURLResponse *)response
                           data:(NSData *)data
                          error:(NSError *__autoreleasing *)error {
    if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) {
        if (*error != nil) {
            NSMutableDictionary *userInfo = [(*error).userInfo mutableCopy];
            NSError *jsonError;
            // parse to json
            id json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&jsonError];
            // store the value in userInfo if JSON has no error
            if (jsonError == nil) userInfo[JSONResponseSerializerWithDataKey] = json;
            NSError *newError = [NSError errorWithDomain:(*error).domain code:(*error).code userInfo:userInfo];
            (*error) = newError;
        }
        return (nil);
    }
    return ([super responSEObjectForResponse:response data:data error:error]);
}

更具体的是,这部分存在问题:

NSMutableDictionary *userInfo = [(*error).userInfo mutableCopy];

这是我目前的代码:

class JSONResponseSerializerWithData: AFJSONResponseSerializer {

    let JSONResponseSerializerWithDataKey: NSString = "JSONResponseSerializerWithDataKey"

    override func responSEObjectForResponse(response: NSURLResponse!,data: NSData!,error: NSErrorPointer) -> AnyObject? {
            if(!self.validateResponse(response as NSHTTPURLResponse,data: data,error: error)) {

                if(error != nil) {
                    // The question.....

                    var jsonError: NSError
                    // parse to json

                    // Missing some returns with AnyObejct...   
                }

            return nil
        }
    }
}

如何将此行转换为Swift?
我对Swift / Objective-C语言很新,所以可能有一个简单的解决方案,但我还没有找到它.

解决方法

我找到了描述如何在AFNetworking 2中解析错误消息的相同指南,这是我在Swift中的实现:

override func responSEObjectForResponse(response: NSURLResponse!,error: NSErrorPointer) -> AnyObject! {
        if !self.validateResponse(response as! NSHTTPURLResponse,error: error) {
            if error != nil {
                var userInfo = error.memory!.userInfo!
                var jsonError:NSError?

                let json: AnyObject? = NSJSONSerialization.JSONObjectWithData(data!,options: NSJSONReadingOptions.AllowFragments,error: &jsonError)
                userInfo[JSONResponseSerializerWithDataKey] = json;
                error.memory = NSError(domain: error.memory!.domain,code: error.memory!.code,userInfo: userInfo)

            }
            return nil
        }

        return super.responSEObjectForResponse(response,error: error)
    }

希望这会对某人有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读