gpt4 book ai didi

ios - 如何在 Siesta 中定义内容转换器?

转载 作者:可可西里 更新时间:2023-11-01 00:59:54 25 4
gpt4 key购买 nike

我正在集成 Siesta,我喜欢它,它解决了我们在使用 RestKit 等框架时遇到的很多问题。

我无法理解的是如何使用内容转换器?我查看了文档和示例,但我不太明白它是如何工作的,我对 Swift 也很陌生。

看看这个取自另一个 SO 回复的例子:

private let SwiftyJSONTransformer = ResponseContentTransformer(skipWhenEntityMatchesOutputType: false) {
JSON($0.content as AnyObject)
}

我不太明白这里发生了什么,没有返回值所以我不明白内容是如何转换的。这可能是我缺乏深入的 Swift 知识所致。

我了解 NSValueTransformer 对象在 Obj-C 中的工作方式,但我不知道如何将响应映射到 JSON 或只是一个简单的响应主体,如单个字符串、 bool 值的数量使用 Siesta 将值赋给对象或类型。

我们有一些 API 响应在响应正文中只返回一个 BOOL 值,而大多数其他 API 响应是复杂的 JSON 对象图。

我将如何将这些响应映射到更原始的类型和/或更复杂的对象。

谢谢。

最佳答案

您的一些困惑是基本的 Swift 内容。如果闭包使用 $0 并且仅包含一个语句,则推断输入类型并且 return 是隐式的。因此,您问题中的代码等效于:

ResponseContentTransformer(skipWhenEntityMatchesOutputType: false) {
(content: AnyObject, entity: Entity) in
return JSON(content)
}

(使用 $0.content 而不仅仅是 $0 是 Swift 中可能存在错误的功能的解决方法,其中 $0 变为所有参数的元组,而不仅仅是第一个参数。不要太担心它;$0.content 只是您可以在 Siesta 转换器中使用的魔法咒语。)

你困惑的另一半是午睡本身。一般做法如下:

  1. 配置一个通用转换器,将原始 NSData 转换为解码但非结构化的类型,例如 StringDictionary
  2. 可选择配置第二个转换器,将非结构化类型转换为模型。
    • 您通常会根据 API 路径进行配置。
    • 默认情况下,Siesta 不包含任何这些内容;这一切都是每个应用程序。

对于只是一个 bool 值的响应,您可能只会执行 #1 — 具体取决于服务器发送的响应类型,以及您如何知道它只是一个 bool 值。

我建议查看 example project包含在 Siesta 中,它很好地说明了这一切是如何发生的。你会看到 transformers that conditionally operate on the content based on its type (#1) 的例子和 model-specific tranformers (#2)在该代码中。

关于ios - 如何在 Siesta 中定义内容转换器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36088096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com