我有以下映射类。您会看到我使用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',另一个问题是您的函数中没有返回值。
该修复程序应与此类似:
// 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)
}
}
关于ios - 使用通用功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35794535/