Ich bin neu in Swift und ich möchte eine Bibliothek zum Herunterladen und Speichern von Daten aus JSON verwenden. Ich verwende ObjectMapper
Realm
und Alamofire
, um dies zu tun. Ich kann die Daten mit Alamofire
und ObjectMapper
herunterladen, aber als ich anfing, Realm
zu verwenden, ging alles schief. Das Problem ist, wenn ich ein Array in meinem Model verwendet habe, hat es gut funktioniert, aber nachdem ich Realm benutzt habe, musste ich List anstelle von Array verwenden.Herunterladen von Daten aus JSON mit ObjectMapper und Realm
Hier mein Modell ist:
class ServiceItem: Object, Mappable {
dynamic var item: [Item]?
//var item = List<Item>()
required convenience init?(map: Map) {
self.init()
}
func mapping(map: Map) {
item <- map["Item"]
}
}
class Item: Object, Mappable {
dynamic var id: String?
dynamic var parentId: String?
dynamic var userName: String?
dynamic var userAddress: String?
dynamic var userMegye: String?
dynamic var userUtca: String?
dynamic var userIrsz: String?
dynamic var userKontakt: String?
dynamic var userEmail: String?
dynamic var userPhone: String?
dynamic var userMobile: String?
dynamic var userWeb: String?
dynamic var userDesc: String?
dynamic var userImage: String?
dynamic var gpslat: String?
dynamic var gpslong: String?
required convenience init?(map: Map) {
self.init()
}
// Mappable
func mapping(map: Map) {
id <- map["id"]
parentId <- map["parent_id"]
userName <- map["user_name"]
userAddress <- map["user_address"]
userMegye <- map["user_megye"]
userUtca <- map["user_utca"]
userIrsz <- map["user_irsz"]
userEmail <- map["user_email"]
userPhone <- map["user_phone"]
userMobile <- map["user_mobile"]
userWeb <- map["user_web"]
userDesc <- map["user_desc"]
userImage <- map["user_image"]
gpslat <- map["gpslat"]
gpslong <- map["gpslong"]
userKontakt <- (map["user_kontakt"])
}
}
Und hier ist meine func und speichern Daten zum Download:
func downLoadDataFromJSON() {
let URL = "...."
let item = Item()
Alamofire.request(URL).responseObject { (response: DataResponse<ServiceItem>) in
let serviceResponse = response.result.value
let realm = try! Realm()
if let allServices = serviceResponse?.item{
for items in allServices {
print(items.id!)
print(items.userName!)
}
}
}
}
Der Unterschied ist, wenn ich "Array" verwenden, ist das "für" Schleife läuft und ich kann meine Daten von JSON sehen, aber wenn ich "Liste" verwende, tritt der Code nicht einmal in die Schleife ein.
Vielen Dank für Ihre Antwort. Können Sie mir sagen, wo ich die 'ignoredProperties()' Methode benutzen soll? Es sollte mit der Liste zurückkehren? –
Wie auch immer, wenn ich dies verwende, habe ich diese Nachricht erhalten: 'Alle Eigenschaften müssen Primitive, NSString, NSDate, NSData, NSNumber, RLMArray, RLMLinkingObjects oder Unterklassen von RLMObject sein. –
Haben Sie die ignoredProperties-Funktion geschrieben. Das ist die Funktion, die Realm mitteilt, welche Eigenschaften nicht in der DB gespeichert werden sollen. – kerry