我有以下映射类。您将看到我使用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
}
}
}
Lik你知道我想传递Mappable类并返回Object类。但这会产生以下编译器错误:
Generic parameter 'T' is not used in function signature
Unexpected non-void return value in void function
有人可以帮我吗?如果您需要更多信息,请询问!
答案 0 :(得分:0)
我没有看到完整的代码,因为编译错误说,有两个问题,一个用于&#39; T&#39;在您的函数中没有使用,另一个在函数中没有返回。
修复应该类似于:
// No Return, the result is in the completion block.
func toObjectMapper<T: Mappable>(completion: (T)->Void) {
let alomofireApiRequest = AlamofireApiRequest(apiRequest: self)
Alamofire.request(alomofireApiRequest)
.responseObject("") { (response: Response<T, NSError>) in
// The parsedObject is already of class T
let parsedObject = response.result.value
try! self.uiRealm.write({ () -> Void in
self.uiRealm.add(parsedObject)
})
completion(parsedObject)
}
}