[英]PHP i can't save value on textbox into array more than one, i am not yet how to do that
[英]How can i save more than one data in Codable (Swift)
我將Codable協議與JSONEncoder和JSONDecoder一起使用。
但是,當我保存數據時,僅保存了最后一個值,但是我需要保存多個。
如果添加三張卡,我只能看到最后一張。
例:
我添加卡:
CName: Test1, BarCode: 12345, CardNBR: 12345
CName: Test2, BarCode: 1234567, CardNBR: 1234567
CName: Test3, BarCode: 123456789, CardNBR: 123456789
最后我只能看到: CName:Test3,條形碼: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)
}
加載
do {
let content = UserDefaults.standard.data(forKey: "Key")
let saved = try JSONDecoder().decode([Entity].self, from: content!)
print(saved)
} catch {
print(error)
}
新
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 {
}
每次保存新內容
let arr = Entity(cname: CompanyName, barcode: BarCodeField, cardnbr: CardNumber)
僅包含一個實體,這就是您僅獲取最后一個實體的原因
解決方案:保存之前,還必須添加最后保存的數組。
假設一個實體
let aEntity = Entity(CName: "Test1", BarCode: "12345", CardNBR: "12345")
並保存
if var all :[Entity] = loadData() {
all.append(aEntity)
saveData(allData: all)
}else {
saveData(allData: [aEntity])
}
在課堂上添加以下功能
func saveData(allData:[Entity]) {
do {
let data = try JSONEncoder().encode(allData)
UserDefaults.standard.set(data, forKey: "Key")
} catch {
print(error)
}
}
func loadData() -> [Entity]?{
do {
if let content = UserDefaults.standard.data(forKey: "Key") {
let saved :[Entity] = try JSONDecoder().decode([Entity].self, from: content)
print(saved)
return saved
}
} catch {
print(error)
}
return nil
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.