我有一個 testModel 物件。如何從 testModel 中獲取僅包含 id 欄位的陣列以存盤在 nameID 中
下面是我的代碼
struct Model {
let id: Int
let name: String
}
視圖控制器
let nameID = [Int]()
let testModel = [Model(id: 1, name: ""), Model(id: 2, name: ""), Model(id: 3, name: "")]
override func viewDidLoad() {
super.viewDidLoad()
let people = testModel.map { item in
print(item.id)
self.nameID = item.id
}
}
uj5u.com熱心網友回復:
你不應該在 a 的閉包中產生副作用(變異狀態)map。相反,您只需要回傳item.id然后分配people給hairstyleID.
let ids = testModel.map { item in item.id }
self.hairstyleID = ids
您還可以使用KeyPaths簡化地圖testModel.map(\.id)。
uj5u.com熱心網友回復:
你可以試試
hairstyleID = testModel.map { $0.id }
uj5u.com熱心網友回復:
從 testModel 中獲取僅包含 id 欄位的陣列以存盤在 nameID 中的最簡單方法是使用 map:
let nameID:[Int] = []
let testModel = [Model(id: 1, name: ""), Model(id: 2, name: ""), Model(id: 3, name: "")]
override func viewDidLoad() {
super.viewDidLoad()
nameID = testModel.map{ $0.id }
}
uj5u.com熱心網友回復:
以下是如何獲取所有 id 和一個簡單的過濾器示例以從串列中獲取一些模型:
struct Model {
let id: Int
let name: String
}
func workWithModel() {
let modelList = [Model(id: 1, name: "Home"), Model(id: 2, name: "Work"), Model(id: 3, name: "Other place")]
// Get all id's
let nameIDs = modelList.map { $0.id }
print("Name IDs: \(nameIDs)")
// Filter some model
guard let whereAreYou = modelList.first(where: {
$0.name == "Work" || $0.name.contains("w")
}) else { return }
print("Just now you are in: \(whereAreYou)")
}
輸出是:
Name IDs: [1, 2, 3]
Just now you are in: Model(id: 2, name: "Work")
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/496741.html
