簡體   English   中英

如何從 Swift 中的自定義結構數組中提取數組?

[英]How can I Extract an Array from an Array of custom struct in Swift?

我正在制作一個名為personStruct結構,它采用諸如年齡姓名之類的簡單數據。 這是這個結構:

struct personStruct
{
    var name: String = String()
    var age: Int = Int()
}

然后我使用這個向下類來提取我想要的數組:

class PersonModel
{
    
    var persones: [personStruct] = [personStruct]()
    var countOfPersones: Int { persones.count }
    
    
    
    func personesAgeArray() -> [Int]
    {
        var returnArray: [Int] = [Int]()
        for item in persones { returnArray.append(item.age) }
        return returnArray
    }
    
    func personesNameArray() -> [String]
    {
        var returnArray: [String] = [String]()
        for item in persones { returnArray.append(item.name) }
        return returnArray
    }
   
}

這是我對那些結構和類的用例:

let personModel: PersonModel = PersonModel()
personModel.persones = [personStruct(name: "bob", age: 30), personStruct(name: "Roz", age: 26), personStruct(name: "man", age: 40)]
print(personModel.personesAgeArray())
print(personModel.personesNameArray())

所以當你看到那個班級完成這項工作時!

我的目標:我們是否有真正的語法或更高效的方式來制作這些數組? (我的意思是personesAgeArraypersonesNameArray

我的超級目標:我希望personesAgeArraypersonesNameArray通過向persones添加新項目來自動構建/更新。

struct Person {
    let name: String
    let age: Int
}

class Model {
    var people: [Person] = []
    var peopleCount: Int { people.count }
    var ages: [Int] { people.map(\.age) }
    var names: [String] { people.map(\.name) }
}

let model: Model = .init()
model.people = [.init(name: "bob", age: 30), .init(name: "Roz", age: 26), .init(name: "man", age: 40)]
print(model.ages)  // "[30, 26, 40]\n"
print(model.names) // "["bob", "Roz", "man"]\n"
model.people.append(.init(name: "Omid", age: 20))
print(model.ages)  // "[30, 26, 40, 20]\n"
print(model.names) // "["bob", "Roz", "man", "Omid"]\n"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM