如何从Swift中的自定义结构数组中提取数组?
我正在制作一个名为personStruct的结构,它需要一些简单的数据,比如年龄和名字。这是一个结构:如何从Swift中的自定义结构数组中提取数组?,swift,Swift,我正在制作一个名为personStruct的结构,它需要一些简单的数据,比如年龄和名字。这是一个结构: struct personStruct { var name: String = String() var age: Int = Int() } 然后,我使用这个down类来提取我想要的数组: class PersonModel { var persones: [personStruct] = [personStruct]() var countOf
struct personStruct
{
var name: String = String()
var age: Int = Int()
}
然后,我使用这个down类来提取我想要的数组:
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())
所以,正如你们看到的那个班完成了任务 我的目标:我们是否有真正的语法或更高效的方法来制作这些数组?(我的意思是personesagarray和personesNameArray) 我的超级目标:我希望personesAgeArray和personesNameArray通过向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) }
}
有关更“快速”的代码:
func personesAgeArray()->[Int]{return persones.map{$0.age}
可能吗?但它仍然可以运行代码来执行手动循环。对于其余部分,更喜欢在结构和类名中使用大写字母(personStruct
->personStruct
),并且命名可能会更改。非常感谢!我认为你应该忘记你的超级目标,因为它太复杂了,会产生很多开销,但没有什么好处。@JoakimDanielson:我想是的!但如果它能起作用,那就太疯狂了?你知道我该怎么做吗?我应该从哪里开始?不,您需要维护3个不同的属性,因此需要存储两次数据。计算属性也同样好
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"