- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我怀疑我可能犯了与 Rob 在 post here 中所描述的相同的错误因为我应该以另一种方式来做这整件事,但要记住这一点:
我正在尝试以通用方式使用 AlamofireObjectMapper。它有一个协议(protocol)
public protocol Mappable
然后我有各种采用它的模型类
class Dog: Mappable
class Cat: Mappable
class Bird: Mappable
我有这个方法
func loadEntityArray<T: Mappable>(type: T.Type)
这是通用的原因是因为它调用了一个函数 load(),该函数需要一个使用此通用参数的完成 block 。 'type' 参数从未实际使用过,但如果泛型类型不在函数的参数列表中,您就不能将函数设为泛型。
func load(completion:(Response<T, NSError> -> Void))
loadEntityArray 是从另一个方法调用的
func letsgo() { loadEntityArray(Dog.self); loadEntityArray(Cat.self) }
到目前为止一切顺利,一切正常。但是我想将要加载的模型的数组传递给 letsgo(),但我不知道该怎么做。如果我将 letsgo() 更改为
func letsgo<T:Mappable>(models: [T.Type]) {
for mod in models {
loadEntityArray(mod)
}
}
然后用 1 个参数调用 letsgo()
letsgo([Dog.self])
它有效,但是只要我有一个 2 或更多的数组,我就会收到编译器错误“无法将 NSArray 类型的值转换为预期的参数类型 [_.Type]”,我现在不知道我会如何明确输入这个数组。
letsgo([Dog.self, Cat.self])
我尝试了各种排列,但似乎没有任何效果。我在这里做不可能的事情吗?在我看来,编译器在编译时有足够的信息来让它工作,所以我不确定这是语法问题还是我在这里用泛型做错了什么。
最佳答案
查看您的功能:
func letsgo<T:Mappable>(models: [T.Type])
它的模型参数应该是所有相同类型的数组。例如,仅包含 Dog Types 的数组。这就是为什么
letsgo([Dog.self])
有效但是
letsgo([Dog.self, Cat.self])
不会,因为它有多种类型。
解决方案:
直接使用 Mappable.Type :
func loadEntityArray(type: Mappable.Type) {}
func letsgo(models: [Mappable.Type]) {
for mod in models {
loadEntityArray(mod.self)
}
}
并将您的类型数组转换为可映射类型数组:
letsgo([Dog.self, Cat.self] as [Mappable.Type])
希望这能达到您的要求!
关于swift - 具有元类型的泛型数组(使用 AlamofireObjectMapper),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36501362/
所以我正在使用天气 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 : { [
我是一名优秀的程序员,十分优秀!