- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在使用 AlamofireObjectMapper解析对我的对象的 json 响应。 AlamofireObjectMapper 是 ObjectMapper 的扩展.
根据他们的文档,我的模型类必须符合 Mappable
协议(protocol)。例如:
class Forecast: Mappable {
var day: String?
var temperature: Int?
var conditions: String?
required init?(_ map: Map){
}
func mapping(map: Map) {
day <- map["day"]
temperature <- map["temperature"]
conditions <- map["conditions"]
}
}
为了符合 Mappable 协议(protocol),我的模型类必须为每个字段实现所需的初始化程序和映射函数。这是有道理的。
但是,它是如何支持struct
类型的?例如,我有一个Coordinate
结构,我尝试符合可映射
协议(protocol):
struct Coordinate: Mappable {
var xPos: Int
var yPos: Int
// ERROR: 'required' initializer in non-class type
required init?(_ map: Map) {}
func mapping(map: Map) {
xPos <- map["xPos"]
yPos <- map["yPos"]
}
}
由于上面显示的错误,我无法使我的 Coordinate
符合 Mappable。
(我认为坐标数据经常使用 struct
而不是 class
)
我的问题:
Q1. AlamofireObjectMapper 或 ObjectMapper 库是否支持 struct
类型?那么如何使用它们解析对 struct
类型对象的 json 响应呢?
Q2. 如果这些库不支持解析对结构类型对象的 json 响应。在 iOS 中使用 Swift2 这样做的方法是什么?
最佳答案
BaseMappable 协议(protocol)是这样定义的,因此您应该声明每个方法以符合 Mappable
。
/// BaseMappable should not be implemented directly. Mappable or StaticMappable should be used instead
public protocol BaseMappable {
/// This function is where all variable mappings should occur. It is executed by Mapper during the mapping (serialization and deserialization) process.
mutating func mapping(map: Map)
}
可映射协议(protocol)是这样定义的
public protocol Mappable: BaseMappable {
/// This function can be used to validate JSON prior to mapping. Return nil to cancel mapping at this point
init?(map: Map)
}
您必须相应地实现它:
struct Coordinate: Mappable {
var xPos: Int?
var yPos: Int?
init?(_ map: Map) {
}
mutating func mapping(map: Map) {
xPos <- map["xPos"]
yPos <- map["yPos"]
}
}
或
struct Coordinate: Mappable {
var xPos: Int
var yPos: Int
init?(_ map: Map) {
}
mutating func mapping(map: Map) {
xPos <- map["xPos"] ?? 0
yPos <- map["yPos"] ?? 0
}
}
构造函数不能标记为必需,因为结构不能被继承。映射函数必须标记为变异,因为变异结构中存储的数据...
关于ios - AlamofireObjectMapper/ObjectMapper是否支持struct类型映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37204756/
所以我正在使用天气 API: https://api.darksky.net/forecast/88d117d813f2014a1ce7f3de6a00c720/50.909698,-1.404351
我正在使用ObjectMapper和Realm class User:Object, Mappable { dynamic var name: String? } func mapping(
这是我从 api 得到的响应 { Message = "email verification link has been sent to your email. please verify your
我正在使用 AlamoFireObjectMapper 尝试将一些简单的 JSON 映射到一些类模型。似乎我能够正确检索 JSON 并打印它,但是当我尝试将我的响应附加到我的类类型的数组时,它不起作用
我正在使用 AlamofireObjectMapper解析对我的对象的 json 响应。 AlamofireObjectMapper 是 ObjectMapper 的扩展. 根据他们的文档,我的模型类
我有一个名为 Movie 的映射类,并且我发出了一个返回此类型的 API 请求。如何使用 API 响应的值实例化此类? 电影映射类: class Movie: Mappable { var poste
封装数据时是否需要为AlamofireObjectMapper编写一个wrapper-object?例如。如果天气数据位于命名数组“data”内。映射的最佳解决方案是什么? { "data":
我的问题是:为什么我的方法返回一个带有 .responseArray 的空 json 数组? 我有以下来自 REST-API 的 JSON: [ { "id": 1,
在我的应用程序中,我使用 AlamofireObjectMapper 进行映射。我第一次使用这个。这是我从 API 得到的回复 { Message = "email verification
我想第一次使用 AlamofireObjectMapper 在 swift 中解析 json 响应。 响应是: { "city": { "total": 19,
我怀疑我可能犯了与 Rob 在 post here 中所描述的相同的错误因为我应该以另一种方式来做这整件事,但要记住这一点: 我正在尝试以通用方式使用 AlamofireObjectMapper。它有
我正在尝试编写一些单元测试,并且需要一种方法来制作可映射对象的虚拟版本。例如: class MyClassJsonResponse: Mappable { var status: String
您好,我遇到了解析问题。 当我尝试解析 this 时我的 tableviewcell 中的 JSON并且得不到我需要的值。 我的要求: let videos = NewestVideos()
我对 AlamofireObjectMapper 有疑问responseObject方法。这是completionHandler从 Response -> Void 更改为(旧)到DataRespon
我想第一次使用 AlamofireObjectMapper 来快速解析 json 响应。 回应是: "success": true, "terms": "https:\/\/currencyl
我正在使用AlamofierObjectMapper将我的 json 从服务器映射到我的模型。从服务器接收到的json是这样的: [ { "Title": "string", "I
我正在使用AlamofireObjectMapper 来 self 的服务器的响应是 JSON 格式,但它还在 header 中包含一些键 Alamofire.request(URL).respons
我正在尝试建立一个系统,让我的所有 api 请求路径都通过一个函数并将它们映射到相应的对象 func sendApi(url : String , httpMethod : HTTPMethod =
我正在尝试为使用最新 (4.0) 版本的 Alamofire 和 AlamofireObjectMapper 的请求创建通用方法。我从下面的代码开始: func execute(request :
我正在使用 AlamofireObjectMapper 序列化来自服务器的 JSON 响应。目前,通过 get 方法,我有以下结构化 JSON 响应: { data : { [
我是一名优秀的程序员,十分优秀!