问问题
901 次
1 回答
0
您的问题的关键线索隐藏在该(也许不是理想的帮助)日志消息中:
Siesta.Error.Cause.WrongTypeInTranformerPipeline
expectedType: "JSON"
actualType: "__NSCFArray"
它是说你的转换器需要一个输入类型JSON
,这是有道理的——你说的和 . 一样多($0.content as JSON)
。但是,它得到了 type __NSCFArray
,这是NSArray
. 换句话说,它需要一个 SwiftyJSON 值,但它却得到了 NSJSONSerialization 的原始输出。
为什么?GithubBrowser 项目包括一个NSDict/NSArray → SwiftyJSON 转换器,它在解析阶段进行配置。该项目中的模型转换器都依赖于它。
要在您的项目中以相同的方式使用 SwiftyJSON,您需要将示例项目中的转换器包含在您的项目中:
private let SwiftyJSONTransformer =
ResponseContentTransformer
{ JSON($0.content as AnyObject) }
然后在设置您的服务时:
service.configure {
$0.config.pipeline[.parsing].add(SwiftyJSONTransformer, contentTypes: ["*/json"])
}
(请注意,如果您对错误感兴趣,可能需要创建ResponseContentTransformer
with 。)transformErrors: true
使用 SwiftyJSON 的另一种方法,它不是很漂亮,但需要较少的设置,是JSON
在每个单独的响应转换器中手动包装东西:
service.configureTransformer("/users/*/repos") {
JSON($0.content as AnyObject).arrayValue.map(Incident.init)
}
于 2016-08-02T03:11:32.147 回答