我无法弄清楚如何在Swift中执行以下操作并寻找指针。
我从Core Data中提取字符串值并在UITableView中显示它们......它们正在工作并显示所有条目。我现在想要' group'按日期创建的这些值(也存储在Core Data中)但是我很难实现这个组头...这里有我所拥有的:
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设置为' Grouped'作为一种风格。
---更新
感谢下面的回复,不幸的是,这些例子都是在Obj-C中,而我是为了迅速拍摄。
要扩展,我有以下从Core Data检索数据并在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的标头,我相信?具体而言,需要修改哪一段代码以将列表分解为“#”;
。答案 0 :(得分:0)
以下是一些提示:
您需要使用cellclick: function(view, td, cellIndex, record, tr, rowIndex, e, eOpts ){
console.info(view.getGridColumns()[cellIndex].dataIndex);
if(view.getGridColumns()[cellIndex].dataIndex === 'someCol'){
//do something
}
}
(" FRC") - 请查看documentation here。初始化FRC时,您会看到指定NSFetchedResultsController
。
有使用FRC更新tableView的样板代码。获得这个并观察FRC如何工作的最简单方法是使用Apple的Master / Detail应用程序模板创建项目,确保您选择"使用核心数据"选项。在该项目中使用它来查看它是如何工作的,然后剪切/粘贴到您自己的项目中。
在您的情况下,您希望将sectionNameKeyPath
(并且可能是month
?)作为部分名称。有几种方法可以做到这一点,但最简单的方法是在year
类中创建一个函数(例如。sectionIdentifier
),它返回一个带有节名称的字符串,格式为您想要的,派生的来自Sound
。然后在初始化FRC时指定dateSaved
。