gpt4 book ai didi

ios - 在 Swift 中组合两个数组以形成带有部分的表

转载 作者:行者123 更新时间:2023-11-28 10:14:56 26 4
gpt4 key购买 nike

我在 swift 中有这两个结构

struct Objects {
var sectionName: String!
var sectionObjects: [Brands]!
}

struct Brands {
var id: String!
var name: String!
}

还有那三个空数组

lazy var sortedLetters = [String]()
lazy var sortedBrands = [Brands]()
lazy var objectBrands = [Objects]()

sortedLetters 数组用于在 tableview 中制作标题。

sortedBrands 是一个品牌数组,如果字母与 sortedLetters 数组相同,我将尝试在其中填充品牌名称。

objectBrands 是一个对象数组,正如您将在 tableview 函数中看到的那样,我获取了 Brands 的数据和 header 的字母。

 func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return requests.objectBrands[section].sectionName
}

func numberOfSections(in tableView: UITableView) -> Int {
return objectBrands.count
}

func sectionIndexTitles(for tableView: UITableView) -> [String]? {
return sortedLetters

}

func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
let header = view as! UITableViewHeaderFooterView
header.textLabel?.font = UIFont(name: "Helvetica", size: 11)
header.textLabel?.textColor = .black
header.contentView.backgroundColor = .darkGray
}

func tableView(_ tableView: UITableView,
heightForRowAt indexPath: IndexPath) -> CGFloat {
return 70

}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return requests.objectBrands[section].sectionObjects.count
}

在这个 for 循环 中,我尝试将品牌附加到数组 sortedLetters 的每个字母中。

for startNames in self.sortedLetters {
self.objectBrands.append(Objects(sectionName: startNames, sectionObjects: self.sortedBrands))
}

虽然它附加了所有品牌。在我的表格 View 中,我有这样的东西

标题:“A”
电芯:所有品牌
标题:“B”
电芯:所有品牌
这是正常的,因为我在我的 for 循环中遗漏了一些东西。

我如何用 swift 语法更改我的 for 循环,以便它可以在字母“A”中附加每个以“A”开头的品牌名称?

所以它会显示这样的东西

标题:“A”
单元格:以 A 开头的品牌
标题:“B”
单元格:以 B 开头的品牌
等等……

非常感谢!

最佳答案


// Iterate each Header Name
for startNames in self.sortedLetters {
// Filter out the brands which name starts with startNames
// Here, I also sorted the brand by its name.
let brands = self.sortedBrands.filter() {$0.name.hasPrefix(startNames)}.sorted(by: {$0.name < $1.name})
self.objectBrands.append(Objects(sectionName: startNames, sectionObjects:brands))
}

关于ios - 在 Swift 中组合两个数组以形成带有部分的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42562245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com