У меня есть следующий класс сопоставления. Вы увидите, что я использую 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
}
}
}
Лика вы видите, я хочу передать назначаемый класс в и дать Класс объекта назад. Но это дает следующие ошибки компилятора:
Generic parameter 'T' is not used in function signature
Unexpected non-void return value in void function
Может кто-нибудь помочь мне в этом? Если вам нужна дополнительная информация, пожалуйста, спросите!
первая ошибка достаточно ясна из сообщения. как компилятор мог узнать, что такое T? вы должны иметь параметр и/или возвращаемое значение с типом, связанным с T. Второй - потому, что вы возвращаете parseObject, и вы не должны. Ответ в эквиваленте ответа -> Пустота в ... так что вы ничего не должны возвращать из закрытия –
user3441734