Я использую протокол Codable с JSONEncoder и JSONDecoder.
Но когда я сохраняю данные, сохраняется только последнее значение, но мне нужно сохранить более одного.
Если я добавлю три карты, я смогу увидеть только последнюю.
Пример:
Я добавляю карту:
CName: Test1, BarCode: 12345, CardNBR: 12345
CName: Test2, BarCode: 1234567, CardNBR: 1234567
CName: Test3, BarCode: 123456789, CardNBR: 123456789
в конце я вижу только: CName: Test3, BarCode: 123456789, CardNBR: 123456789
Как сохранить несколько данных?
struct Entity : Codable {
var cname: String
var barcode: String
var cardnbr: String
}
Сохранить
let arr = Entity(cname: CompanyName, barcode: BarCodeField, cardnbr: CardNumber)
do {
let data = try JSONEncoder().encode(all)
UserDefaults.standard.set(data, forKey: "Key")
} catch {
print(error)
}
Load
do {
let content = UserDefaults.standard.data(forKey: "Key")
let saved = try JSONDecoder().decode([Entity].self, from: content!)
print(saved)
} catch {
print(error)
}
NEW
let arr = Entity(cname: CompanyName, barcode: BarCodeField, cardnbr: CardNumber)
let jsonEncoder = JSONEncoder()
do {
var jsonData = try jsonEncoder.encode(arr)
let jsonString = String(data: jsonData, encoding: .utf8)
print("JSON String : " + jsonString!)
let jsonDecoder = JSONDecoder()
let upMovie = try jsonDecoder.decode(Entity.self, from: jsonData)
print("upMovie : \(upMovie)")
print("cname : \(arr.cname)")
print("barcode : \(arr.barcode)")
print("cardnbr : \(arr.cardnbr)")
entities.append(Entity(cname: arr.cname, barcode: arr.barcode, cardnbr: arr.cardnbr))
print(entities)
}
catch {
}