【发布时间】:2023-03-30 18:11:01
【问题描述】:
//这是我的模型
struct RestaurantItem : Codable {
var v : Int?
var id : String = ""
let addOnList : [AddOnList]?
var createdAt : String = ""
var orderType : Int?
var productId : ProductId?
var quantity : Int?
var restaurantId : String = ""
var specialInstructions : String = ""
var updatedAt : String = ""
var userId : String = ""
enum CodingKeys: String, CodingKey {
case v = "__v"
case id = "_id"
case addOnList = "addOnList"
case createdAt = "createdAt"
case orderType = "orderType"
case productId = "productId"
case quantity = "quantity"
case restaurantId = "restaurantId"
case specialInstructions = "specialInstructions"
case updatedAt = "updatedAt"
case userId = "userId"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
v = try values.decodeIfPresent(Int.self, forKey: .v)
id = try values.decodeIfPresent(String.self, forKey: .id) ?? ""
if (try? values.decodeIfPresent(String.self, forKey: .addOnList)) == nil {
self.addOnList = try values.decodeIfPresent([AddOnList].self, forKey: .addOnList)
} else {
self.addOnList = nil
}
createdAt = try values.decodeIfPresent(String.self, forKey: .createdAt) ?? ""
orderType = try values.decodeIfPresent(Int.self, forKey: .orderType)
quantity = try values.decodeIfPresent(Int.self, forKey: .quantity)
restaurantId = try values.decodeIfPresent(String.self, forKey: .restaurantId) ?? ""
specialInstructions = try values.decodeIfPresent(String.self, forKey: .specialInstructions) ?? ""
updatedAt = try values.decodeIfPresent(String.self, forKey: .updatedAt) ?? ""
userId = try values.decodeIfPresent(String.self, forKey: .userId) ?? ""
if (try? values.decodeIfPresent(String.self, forKey: .productId)) == nil {
self.productId = try values.decodeIfPresent(ProductId.self, forKey: .productId)
} else {
self.productId = nil
}
}
}
视图控制器中的声明
var restaurantItems : [RestaurantItem]?
// 这个数组包含基于“id”的重复值,我怎样才能得到一个没有复制数据的新数组
【问题讨论】:
-
为什么会有重复?服务器响应重复?或者你追加太多次,你得到重复?您可以根据 id 创建一个字典,然后检索该值。但是顺序对你来说重要吗?
-
@Larme 服务器提供重复数据。我知道这是服务器端故障,但现在没有人可以更改此数据复制。我必须自己管理它。是的,订单很重要
-
你想在什么基础上过滤掉重复的id?
-
@PGDev [0] = { productId = some { restaurantId = some { id = "5ed05bd5aa47246104f8c0fc" PName = “food” } } } [1] = { productId = some { restaurantId = some { id = "5ed05bd5aa47246104f8c0fc" PName = "drink" } } } 因为 id 相同,所以我只想考虑 1 而不是 2。因为餐厅 id 相同,所以它们是同一家餐厅的产品
标签: ios swift model-view-controller