Swift 4.2 Platforms iOS CocoaPods Carthage Swift Package Manager License MIT

AECoreDataUI

超级棒的基于 Core Data 驱动的 iOS UI,使用 Swift 编写

我个人使用制作了这个库,但欢迎随意使用或贡献。更多示例请查看 SourcesTests

目录

简介

AECoreDataUI 之前是 AERecord 的一部分,所以您可能也想查看一下。

当涉及到将数据与 UI 连接时,一个很好的方法是使用 NSFetchedResultsController斯坦福大学 CS193p 课程 中的 CoreDataTableViewController 封装器在这方面做得非常出色,所以我用 Swift 重写了它,并以同样的方式制作了 CoreDataCollectionViewController

特性

用法

您可以查看 这个演示项目 作为示例。

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

安装

许可

AECoreDataUI 在 MIT 许可证下发布。有关详细信息,请参阅 LICENSE