Ich bin neu in Realm und habe Probleme beim Speichern von JSON-Daten aus WebService in meiner Realm-Datenbank.Daten von JSON in Realm speichern
Dies ist die JSON:
{
"Programacao":[
{
"Dia":"5",
"Idp":"1833",
"Programa":"T\u00e1 Na Hora",
"Inicio":"06:00",
"Final":"08:00",
"Data":"08\/04\/2016"
},
{
"Dia":"5",
"Idp":"1834",
"Programa":"Bom dia Chiru",
"Inicio":"08:00",
"Final":"09:00",
"Data":"08\/04\/2016"
},
{
"Dia":"5",
"Idp":"1835",
"Programa":"Conex\u00e3o",
"Inicio":"09:00",
"Final":"11:00",
"Data":"08\/04\/2016"
},
{
"Dia":"5",
"Idp":"1836",
"Programa":"As Mais Pedidas",
"Inicio":"11:00",
"Final":"12:00",
"Data":"08\/04\/2016"
},
{
"Dia":"5",
"Idp":"1837",
"Programa":"Casa da Sogra",
"Inicio":"12:00",
"Final":"13:00",
"Data":"08\/04\/2016"
},
{
"Dia":"5",
"Idp":"1838",
"Programa":"Canal Livre",
"Inicio":"13:00",
"Final":"15:00",
"Data":"08\/04\/2016"
},
{
"Dia":"5",
"Idp":"18",
"Programa":"Batid\u00e3o da Chiru",
"Inicio":"15:00",
"Final":"17:00",
"Data":"08\/04\/2016"
},
{
"Dia":"5",
"Idp":"1827",
"Programa":"Sul Bandas",
"Inicio":"17:00",
"Final":"19:00",
"Data":"08\/04\/2016"
},
{
"Dia":"5",
"Idp":"1828",
"Programa":"Voz do Brasil",
"Inicio":"19:00",
"Final":"20:00",
"Data":"08\/04\/2016"
},
{
"Dia":"5",
"Idp":"1831",
"Programa":"Al\u00f4 Chiru",
"Inicio":"20:00",
"Final":"23:59",
"Data":"08\/04\/2016"
}
]
}
ich die folgende Struktur erstellt haben:
Realm Objektklasse:
import Foundation
import RealmSwift
class ROListing: Object { // Programação da Rádio
dynamic var id = 0
dynamic var showName = ""
dynamic var showId = ""
dynamic var showStartTime = ""
dynamic var showEndTime = ""
dynamic var showNumericDate = ""
dynamic var showDate = ""
override static func primaryKey() -> String? {
return "id"
}
}
Objektmanipulation Klassen:
import Alamofire
import SwiftyJSON
import Foundation
class Listing: ResponseJSONObjectSerializable {
var showName :String? // nomePrograma
var showId :String? // idp
var showStartTime :String? // inicioPrograma
var showEndTime :String? // finalPrograma
var showNumericDate :String? // dia
var showDate :String? // data
required init?(json: JSON) {
self.showName = json["Programa"].string
self.showId = json["Idp"].string
self.showStartTime = json["Inicio"].string
self.showEndTime = json["Final"].string
self.showNumericDate = json["Dia"].string
self.showDate = json["Data"].string
}
required init() { }
}
class ListingArray: ResponseJSONObjectSerializable {
var showArray: [Listing]? // Programacao
required init?(json: JSON) {
if let arrayJson = json["Programacao"].array {
self.showArray = []
for json in arrayJson {
let instance = Listing(json: json)
self.showArray?.append(instance!)
}
}
}
required init() { }
}
Verbindung mit it dem WebService durch:
func getRadioListing(success:() ->()) {
guard let url = apiController.createURLWithComponentsForListingsWith(appId: "63") else {
print("Invlaid URL!")
return
}
print(url)
Alamofire.request(.GET, url).responseObject {
(response: Response<ListingArray, NSError>) in
if let jsonResults = response.result.value {
self.listings = jsonResults
for listing in self.listings.showArray! {
RealmObjectManager.sharedInstance.createUpdateDB(withListing: listing)
}
success()
} else {
print("Error parsing JSON!")
return
}
}
}
Und schließlich, das Verfahren zum tatsächlich die Objekte in die Realm DB speichern.
func createUpdateDB(withListing listing: Listing) {
print(Realm.Configuration.defaultConfiguration.path!)
if self.listingArray.count == 0 {
do {
try self.realm.write {
let newListing = ROListing()
newListing.showName = listing.showName!
newListing.showId = listing.showId!
newListing.showStartTime = listing.showStartTime!
newListing.showEndTime = listing.showEndTime!
newListing.showNumericDate = listing.showNumericDate!
newListing.showDate = listing.showDate!
self.realm.add(newListing)
}
} catch let error as NSError {
print("Error creating Listing DB: \(error.userInfo)")
}
}
}
Allerdings kann ich nicht alle Shows in die DB bekommen. Jeder könnte mir hier helfen?
Vielen Dank im Voraus!
Cole vielleicht schon das Problem hier genagelt hat, aber nur für den Fall, können Sie bitte Welches Fehlerprotokoll bekommst du, wenn du versuchst alle Shows einzufügen? Vielen Dank! – TiM
Ja, es ist ein Problem mit meiner Logik! Ich bekomme keinen Fehler, aber nur das erste Element [0] wird gespeichert. Ich denke, ich muss zuerst überprüfen, ob mein listingArray leer ist (oder nil?) Und dann den Schreibvorgang ausführen. Danke Cole Campbell. – acmobile