I have an array of objects for example:
var ItemArr = [
Item(id: 1, name: "Shirt", price: 10),
Item(id: 2, name: "Pants", price: 20),
Item(id: 3, name: "Tie", price: 10)
]
How do I filter out “id” key from my array of object so I get:
var ItemArr = [
Item(name: "Shirt", price: 10),
Item(name: "Pants", price: 20),
Item(name: "Tie", price: 10)
]
This is how my object looks like:
struct Item: Codable, Identifiable {
let id: Int
let name: String
let price: Double
}
I’m trying to insert a new row in my database (Supabase) that do not accept id since that is a primary key created automatically and can’t be overwritten:
try await supabase
.from("items")
.insert(itemArr)
.execute()
3
Could you create a new struct without the id
and convert your array to use it instead:
import Foundation
struct Item: Codable, Identifiable {
let id: Int
let name: String
let price: Double
}
struct ItemWithoutID: Codable {
let name: String
let price: Double
}
var items = [
Item(id: 1, name: "Shirt", price: 10),
Item(id: 2, name: "Pants", price: 20),
Item(id: 3, name: "Tie", price: 10)
]
let itemsWithoutID = items.map { item in
return ItemWithoutID(name: item.name, price: item.price)
}
print(itemsWithoutID)
Output:
[SwiftPlayground.ItemWithoutID(name: "Shirt", price: 10.0), SwiftPlayground.ItemWithoutID(name: "Pants", price: 20.0), SwiftPlayground.ItemWithoutID(name: "Tie", price: 10.0)]
You should be able to use itemsWithoutID
to insert into your database.