UPDATEAlamofireObjectMapping Ошибка: Не удается вызвать GET
Мой запрос POST в Login.swift возвращает значения, которые я хотел бы отображенные к переменным в Particulars.swift (например, токен) и расширением, записываемые в области , Как мне это сделать?
Мой Login.swift код:
import Foundation
import Alamofire
import SwiftyJSON
import RealmSwift
import ObjectMapper
import AlamofireObjectMapper
class Login {
init(userName: String, passWord: String) {
Data.sharedInstance.userName = userName
Data.sharedInstance.passWord = passWord
}
// call this method to login
func getRequest() {
Alamofire.request(.POST, Data.todoEndpoint, parameters: ["username": Data.sharedInstance.userName!, "password": Data.sharedInstance.passWord!])
.responseJSON { response in
if let result = response.result.value
{
let value = JSON(result)
if let api_key = value["api_token"].string
{
print("The token is " + api_key)
}
else
{
print("error parsing api token")
}
}
else
{
print("JSON data is nil.")
}
}
}
}
Я пытаюсь сопоставить свои запросы JSON в Realm, но я продолжаю быть брошенным эту ошибку
Generic parameter 'T' could not be inferred
Это то, что я ищу для: (все в отдельных файлах)
отправить GET-запросы -> сохранить в realm/создать новый объект, если он не существует/объект обновления
Как это исправить?
код для вызова GET запрос (полный код здесь https://codeshare.io/l4cEQ)
FetchData.get(Particulars.self, success: {
print("success!!!")
}) {
print("fail!!!")
}
код для обработки GET Request
import Foundation
import Alamofire
import ObjectMapper
import AlamofireObjectMapper
import RealmSwift
class FetchData {
static func get <T:Object where T:Mappable,T:Meta> (type:T.Type,success:()->Void,fail:()->Void)->Void {
Alamofire.request(Method.GET, type.url())
.responseArray { (response: Response<[T], NSError>) in
switch response.result {
case .Success:
let items = response.result.value
if let items = items {
let realm = try! Realm()
try! realm.write {
for item in items {
realm.add(item, update: true)
}
}
success()
}
case .Failure(_):
fail()
break
}
}
}
}
код для отображения объектов (Particulars.swift)
import Foundation
import RealmSwift
import ObjectMapper
protocol Meta {
static func url()->String
}
class Particulars: Object, Mappable {
dynamic var name = ""
dynamic var email = ""
dynamic var id = 0
dynamic var profilePicture = ""
dynamic var username = ""
dynamic var apiToken = ""
override static func primaryKey() -> String? {
return "id"
}
//Impl. of Mappable protocol
required convenience init?(_ map: Map) {
self.init()
}
func mapping(map: Map) {
id <- map["id"]
name <- map["name"]
email <- map["email"]
profilePicture <- map["profile_picture"]
username <- map["username"]
apiToken <- map["api_token"]
}
//Impl. of Meta protocol
static func url()->String {
return "https://bitbucket.org/hyphe/blog-examples/raw/master/fetchData/demoapi/books"
}
}
Фактически в моем классе Login ответ POST дал мне значения, которые я ищу. Есть ли способ, чтобы я мог непосредственно сопоставить его с переменными класса Particulars? (Я обновил свой ответ, чтобы показать это) – noobdev