gpt4 book ai didi

swift - 按 Swift 3 部分的字母顺序对 tableView 中的 Realm 数据进行排序

转载 作者:行者123 更新时间:2023-11-30 12:20:33 25 4
gpt4 key购买 nike

我按字母顺序对 Realm 的数据进行排序。

但我想在我的表格 View 中显示它,就像内置 iPhone 应用程序中的联系人列表一样,具有从 A 到 Z 的不同部分。

我应该做什么?

<小时/>

主视图 Controller :

    class MainVC: UIViewController,UITableViewDelegate,UITableViewDataSource {

@IBOutlet weak var contact_tableview: UITableView!

let realm = try! Realm()

var ContactList: Results<ContactObjectss> {
get {
// return realm.objects(ContactObjectss.self)
return realm.objects(ContactObjectss.self).sorted(byKeyPath: "first_name", ascending: true)
}
}

override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.titleTextAttributes =
[NSFontAttributeName: UIFont(name: "IRANSansWeb-Medium", size: 17)!]
contact_tableview.delegate = self
contact_tableview.dataSource = self
}

func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return ContactList.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ContactCell") as! ContactCell
let item = ContactList[indexPath.row]
cell.lblName!.text = item.first_name
return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let ContactV = storyboard?.instantiateViewController(withIdentifier: "ViewContact") as! ContactInfoVC
navigationController?.pushViewController(ContactV, animated: true)
ContactV.ContactID = ContactList[indexPath.row]
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
contact_tableview.reloadData()
// to reload selected cell
}

}

联系对象:

class ContactObjectss : Object {
dynamic var id:Int = 0
dynamic var first_name = ""
dynamic var last_name = ""
dynamic var work_email = ""
dynamic var personal_email = ""
dynamic var contact_picture = ""
dynamic var mobile_number = ""
dynamic var home_number = ""
dynamic var isFavorite = false
dynamic var Notes = ""
dynamic var picture : NSData?
}

最佳答案

我认为您可以通过制作 26 个部分(每个字母对应一个部分)来完成此操作,然后计算每个部分的 ContactObjects 数量。

func numberOfSections(in tableView: UITableView) -> Int {
return 26 // letters of the alphabet
}

我假设您的 ContactObjects 是根据名字的字母顺序排序的,如果它们不只是将 first_name 替换为 last_name

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let sectionLetter = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z".components(separatedBy: ",")[section-1]
let contactsWithLetter = ContactList.filter {String($0.first_name.lowercased()[$0.first_name.startIndex]) == sectionLetter} //had to use the startIndex thing because apparently $0.first_name is an inout property and therefore you can't just get it's characters
return contactsWithLetter.count
}

关于swift - 按 Swift 3 部分的字母顺序对 tableView 中的 Realm 数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44847152/

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