AECoreDataUI 4.1.2

AECoreDataUI 4.1.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2018年9月
SPM支持 SPM

tadija 维护。



Swift 4.2 Platforms iOS CocoaPods Carthage Swift Package Manager License MIT

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

安装

许可证

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