我正在尝试将tableCell添加到TableView中的相应部分。我有一个索引的客户列表:
var clients = Client.loadAllClients() //Returns client array
var contacts = [String: [Client]]()
var letters: [String] = []
当我进行索引时,联系人字典会返回:
{A: [Client("Andrew")]}
字母数组返回:
[A]
然后我使用它来索引整个客户端列表,并将它们放入带有节头的正确部分。这一切都运作良好。但是,我对如何将新客户端添加到此索引表中感到困惑,因此客户端的名称将与正确的节头标题对齐。
我正在使用 prepare 函数将新创建的Client对象传递回TableViewController,然后将其附加到客户端数组。我知道数组有信息,但我不能让单元格显示在表格中。通过一些研究我得出了这个:
@IBAction func addNewClient(segue:UIStoryboardSegue) {
let newClient = addNewClientData()
let firstLetter = charToString(c: [getFirstLetter(s: newClient.lName)]).capitalized
if !letters.contains(firstLetter) {
letters.append(firstLetter)
contacts[firstLetter] = [Client]()
letters.sort()
}
let sectionIndex = Int(letters.index(of: firstLetter)!)
self.tableView.beginUpdates()
self.tableView.insertRows(at: [IndexPath(row: contacts[firstLetter]!.count - 1, section: sectionIndex)], with: .automatic)
self.tableView.endUpdates()
contacts[firstLetter]!.append(newClient)
}
此功能在" save"在不同的视图上按下按钮。我有对象,我很困惑如何将其插入到表中的正确索引和部分。运行时,我收到的部分数量无效。我正在使用xCode 8.0和Swift 3.0。如果我需要提供任何其他信息,请告诉我。谢谢。
答案 0 :(得分:0)
我通过提出另一个问题找到了这个问题的答案。我字典的问题在于它是一本字典。虽然字典可用于索引和表,但数组更适合Swift和Xcode。解决方案是创建一个作为数组工作的数据结构。以下是数据结构解决方案的链接:
Filtering an Array inside a Dictionary - Swift
现在要插入一个新客户端:
let newClient = Client(lName: cLast)
let firstLetter = newClient.getFirstLetter(s: cLast).capitalized
for contact in contacts {
if firstLetter == contact.letter {
contact.add(client: newClient)
} else {
let tempContact = Contact(letter: firstLetter, clients: [newClient])
contacts.append(tempContact)
break
}
}
indexClients()
self.tableView.reloadData()