gpt4 book ai didi

ios - 如何使用 sectionNameKeyPath (Swift) 对 tableView 数据进行分组

转载 作者:行者123 更新时间:2023-11-28 09:06:18 25 4
gpt4 key购买 nike

我一直无法弄清楚如何在 Swift 中执行以下操作并寻找指针。

我正在从 Core Data 中提取字符串值并将它们显示在 UITableView 中……它正在工作并显示所有条目。我现在想按创建日期(也存储在核心数据中)对这些值进行“分组”,但是我很难实现这个组标题...这就是我所拥有的:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var sound = self.sounds[indexPath.row]
var cell = UITableViewCell()

// Convert Date to String
var formatter: NSDateFormatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd-HH-mm-ss"
let dateTimePrefix: String = formatter.stringFromDate(sound.dateSaved)
// Display the following in each rows
cell.textLabel!.text = sound.name + " Saved: " + dateTimePrefix

return cell
}

有人能为我指出正确的方向来实现“标题”吗?我已经将我的 Main.storyboard 中的 tableView 设置为“分组”样式。

---更新

感谢下面的回复,但不幸的是,这些示例是在 Obj-C 中的,我正在争取 swift。

为了扩展,我有以下从核心数据中检索数据并在 UITableView 中显示所有内容的方法:

override func viewDidLoad() {
super.viewDidLoad()

self.tableView.dataSource = self
self.tableView.delegate = self
}

override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
var context = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext!
var request = NSFetchRequest(entityName: "Sound")
self.sounds = context.executeFetchRequest(request, error: nil)! as [Sound]
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.sounds.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "MyTestCell")
var sound = self.sounds[indexPath.row]

// Convert Date to String
var formatter: NSDateFormatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd @ HH:mm:ss"
let dateTimePrefix: String = formatter.stringFromDate(sound.dateSaved)
// Display the following in each rows
cell.textLabel!.text = sound.name // Sound Name
// Display the following as each subtitles
cell.detailTextLabel!.text = dateTimePrefix // Sound Duration (Currently 'date')

return cell
}

我相信有人可以指出我如何使用 sectionNameKeyPath 使用“月份” header 按月“分组”的正确方向吗?具体来说,需要修改哪段代码才能将列表分成“部分”。

最佳答案

这里有一些提示:

  1. 您需要使用 NSFetchedResultsController(“FRC”)- 查看 documentation here .您会看到在初始化 FRC 时指定了 sectionNameKeyPath

  2. 有使用 FRC 更新 tableView 的样板代码。获得它并观察 FRC 如何工作的最简单方法是使用 Apple 的主/细节应用程序模板创建一个项目,确保选择“使用核心数据”选项。在该项目中试用它以查看其工作原理,然后剪切/粘贴到您自己的项目中。

  3. 在您的情况下,您希望将(可能是?)作为部分名称。有几种方法可以做到这一点,但最简单的方法是在 Sound 类中创建一个函数(例如 sectionIdentifier),该函数返回一个带有部分名称的字符串,在您想要的格式,源自 dateSaved。然后在初始化 FRC 时指定 sectionNameKeyPath:sectionIdentifier

关于ios - 如何使用 sectionNameKeyPath (Swift) 对 tableView 数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30627737/

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