【发布时间】:2016-03-04 11:08:57
【问题描述】:
我有以下映射类。你会看到我使用了ObjectMapper 和RealmSwift,因为我也想在Realm 中保存这个类。
import Foundation
import ObjectMapper
import RealmSwift
class LoginResponse: Object,Mappable {
dynamic var status: Int = 0
dynamic var client: LoginData!
required convenience init?(_ map: Map) {
self.init()
}
func mapping(map: Map) {
client <- map["client"]
status <- map["status"]
}
}
现在我有以下功能:
public func login(email: String, password: String) -> LoginResponse {
let request = RestoryApiRequest.login(email, password: password)
return request.toObjectMapper()
}
下面是 APIRequest 类:
import Foundation
import Alamofire
import ObjectMapper
import AlamofireObjectMapper
import RealmSwift
struct ApiRequest {
let method: Alamofire.Method
let path: String
let parameters: [String: AnyObject]?
let uiRealm = try! Realm()
init(method: Alamofire.Method = .GET, path: String, parameters: [String: AnyObject]? = nil) {
self.method = method
self.path = "webservice/abc123/client/\(path)"
self.parameters = parameters
}
func toObjectMapper<T: Mappable>() -> Object {
let alomofireApiRequest = AlamofireApiRequest(apiRequest: self)
Alamofire.request(alomofireApiRequest)
.responseObject("") { (response: Response<T, NSError>) in
let parsedObject = response.result.value as! Object
try! self.uiRealm.write({ () -> Void in
self.uiRealm.add(parsedObject)
})
return parsedObject
}
}
}
如您所见,我想传入 Mappable 类并返回 Object 类。但这会产生以下编译器错误:
Generic parameter 'T' is not used in function signature
Unexpected non-void return value in void function
有人可以帮我解决这个问题吗?如果您需要更多信息,请询问!
【问题讨论】:
-
第一个错误从消息中很清楚。编译器如何识别 T 是什么?你应该有类型与 T 相关的参数和/或返回值。第二个是因为你返回 parseObject 而你不应该。 Response
in 相当于 Response ->Void in ... 所以你不应该从闭包中返回任何内容
标签: ios iphone swift generics alamofire