У меня есть объекты, которые я хотел бы записать в файл json.
Мой код:
struct ChangeTime : Codable {
let second : Int?
let year : Int?
let month : Int?
let hourOfDay : Int?
let dayOfMonth : Int?
let minute : Int?
}
struct Inspirations : Codable {
let avikoSegmentyRynku : [String]?
let id : Int?
let code : String?
let avikoOkazjeJedzenia : [String]?
let peopleCount : String?
let productCodes : String?
let langVersions : [LangVersions]?
}
struct InspiracjeProdukty : Codable { // main
let products : [Products]?
let inspirations : [Inspirations]?
}
struct Lang : Codable {
let pL : String?
let name : String?
let active : Bool?
let id : Int?
let code : String?
}
struct LangVersions : Codable {
let ingredients : String?
let parentId : Int?
let name : String?
let preparation : String?
let id : Int?
let advice : String?
let lang : Lang?
let active : Bool?
let dostepnaMobilnie : Bool?
let favorite : Bool?
}
struct Products : Codable {
let prepDeepFryer : String?
let shelfLife : String?
let avikoPodSegmentyRynku : [String]?
let fat : Double?
let markedAsFavourite1 : Bool?
let kcal : Int?
let shelfLifeTimeFrame : String?
let active : Bool?
let langVersions : [LangVersions]?
let changeTime : ChangeTime?
let prepMicrowave : String?
let proteins : Double?
let prepCombisteamer : String?
let id : Int?
let inPieces : Bool?
let code : String?
let eanBox : String?
let containsGluten : Bool?
let packageContents : Double?
let layerPallet : Int?
let palletWeight : Double?
let name : String?
let avikoConcepts : [String]?
let kj : Int?
let noBox : Int?
let markedAsFavourite3 : Bool?
let sunFlower : Bool?
let eanFoil : String?
let weightYieldPercent : Int?
let avikoSegmentyRynku : [String]?
let carbohydrates : Double?
let prepPot : String?
let markedAsFavourite2 : Bool?
let palletHeight : Double?
let contentPerBox : Int?
let avikoWorlds : [String]?
let avikoSegments : [String]?
let regions : [Int]?
let prepOven : String?
let prepFryingPan : String?
let boxLayer : Int?
}
func checkProductsStartFiles(path: URL) {
guard let gitUrl = URL(string: path.absoluteString) else { return }
URLSession.shared.dataTask(with: gitUrl) { (data, response
, error) in
guard let data = data else { return }
do {
let decoder = JSONDecoder()
let jsonData = try decoder.decode(InspiracjeProdukty.self, from: data)
//print(jsonData)
if (jsonData.products?.count)! > 0 && (jsonData.inspirations?.count)! > 0 {
self.saveTempToFinnalFiles(jsonData: jsonData)
}
} catch let err {
self.errorLoginMessage(txt: "\(ErrorsLabels.MainViewControler03). \(err)", title: "Blad".localized())
}
}.resume()
}
func saveTempToFinnalFiles(jsonData: InspiracjeProdukty){
do {
let productsToFile = try JSONSerialization.jsonObject(with: jsonData.products) as? [String: Any]
let inspirationsToFile = try JSONSerialization.jsonObject(with: jsonData.inspirations) as? [String: Any]
let documentsDir = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first!
try productsToFile.write(to: documentsDir.appendingPathComponent(selectedLanguage + "/json/products.json"))
try inspirationsToFile.write(to: documentsDir.appendingPathComponent(selectedLanguage + "/json/inspirations.json"))
print("XXXX")
debugPrint(jsonData)
//removeFile(path: path)
//EZLoadingActivity.hide()
} catch {
print("Error deserializing JSON: \(error)")
}
}
В функции: saveTempToFinnalFiles
- я хотел бы сохранить эти 2 таблицыс объектами в отдельные файлы: products.json
и inspirations.json
.В строке:
let productsToFile = try JSONSerialization.jsonObject (with: jsonData.products) as? [String: Any]
let inspirationsToFile = try JSONSerialization.jsonObject (with: jsonData.inspirations) as? [String: Any]
Я получаю сообщение об ошибке:
Невозможно вызвать 'jsonObject' со списком аргументов типа '(with: [Products]?)'/ Невозможно вызвать' jsonObject 'со списком аргументов типа' (with: [Inspirations]?) '
Кто-нибудь знает, как это исправить?