AECoreDataUI
使用 Swift 编写的极具功能性的 iOS Core Data 驱动的 UI
索引
简介
AECoreDataUI 以前是 AERecord 的一部分,因此您可能还想看看那个。
当涉及到将数据与 UI 连接时,使用 NSFetchedResultsController
是一个很好的方法。Stanford 的 CS193p 的 CoreDataTableViewController
非常擅长此操作,因此我还在同样的方式下编写了 CoreDataCollectionViewController
。
功能
- 由Core Data驱动的 UITableViewController(UI自动反映Core Data模型中的数据)
- 由Core Data驱动的 UICollectionViewController(UI自动反映Core Data模型中的数据)
使用方法
您可以查看此示例项目。
CoreDataTableViewController
CoreDataTableViewController
主要是将从 NSFetchedResultsController
文档页面复制代码到一个 UITableViewController
的子类中。
只需继承它,并设置其 fetchedResultsController
属性。
之后,您只需要实现 tableView(_:cellForRowAtIndexPath:)
方法,而 fetchedResultsController
将处理其他所需的数据源方法。它还将在底层数据发生变化时更新 UITableView
(插入、删除、更新、移动)。
示例
import UIKit
import CoreData
class MyTableViewController: CoreDataTableViewController {
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
refreshData()
}
func refreshData() {
let sortDescriptors = [NSSortDescriptor(key: "timeStamp", ascending: true)]
let request = Event.createFetchRequest(sortDescriptors: sortDescriptors)
fetchedResultsController = NSFetchedResultsController(fetchRequest: request,
managedObjectContext: AERecord.Context.default,
sectionNameKeyPath: nil, cacheName: nil)
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as UITableViewCell
if let frc = fetchedResultsController {
if let object = frc.objectAtIndexPath(indexPath) as? Event {
cell.textLabel.text = object.timeStamp.description
}
}
return cell
}
}
CoreDataCollectionViewController
与 CoreDataTableViewController
相同,只是使用了 CoreDataCollectionViewController
。
安装
-
.Package(url: "https://github.com/tadija/AECoreDataUI.git", majorVersion: 4)
-
github "tadija/AECoreDataUI"
-
pod 'AECoreDataUI'
许可证
AECoreDataUI以MIT许可证发布。有关详细信息,请参阅LICENSE。