FRCDataManager 1.1.9

FRCDataManager 1.1.9

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2019年11月
SPM支持 SPM

Mandea Daniel 维护。



FRCDataManager

包含多个辅助类,这些类可以优化与 NSFetchResultsController 一起使用时的操作。它完全支持 UITableView,并且非常易于使用。

视控制器

import UIKit
import FRCDataManager
import PullToRefreshSwift

class TopRatedViewController: UIViewController {
    
    // MARK: - Outlets 
    
    @IBOutlet weak var tableView: BaseTableView!
    
    // MARK: - Internal
    
    var dataManager: TopRatedDataManager = {
       return TopRatedDataManager()
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Setup 
        dataManager.delegate = tableView
        tableView.dataSource = dataManager
    }
}

数据管理器

import FRCDataManager
import CoreData

class TopRatedDataManager: BaseTVCFetchRequestDataManger, BaseFetchResultsController, TableViewDataSource {
    
    // MARK: - Init
    
    override init() {
        super.init()
    }
    
    // MARK: - BaseFetchResultsController
    
    typealias ManagedObject=Feed
    
    var _fetchedResultsController: NSFetchedResultsController<ManagedObject>?
    var fetchedResultsController: NSFetchedResultsController<ManagedObject> {
        if _fetchedResultsController != nil {
            return _fetchedResultsController!
        }
        // Setup fetchRequest
        let fetchRequest: NSFetchRequest<Feed> = Feed.fetchRequest()
        fetchRequest.fetchBatchSize = 20
        // Edit the sort key as appropriate.
        let sortDescriptor = NSSortDescriptor(key: "date", ascending: false)
        fetchRequest.sortDescriptors = [sortDescriptor]
        // Edit the section name key path and cache name if appropriate.
        let aFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: CoreDataManger.sharedInstance.persistentContainer.viewContext, sectionNameKeyPath: nil, cacheName: nil)
        aFetchedResultsController.delegate = self
        _fetchedResultsController = aFetchedResultsController
        
        do {
            try _fetchedResultsController!.performFetch()
        } catch {
            // Show error
            let nserror = error as NSError
            print("Unresolved error \(nserror), \(nserror.userInfo)")
        }
        
        return _fetchedResultsController!
    }
    
    func tableViewCell(_ tableView: UITableView, indexPath: IndexPath, cellData:ManagedObject?) -> UITableViewCell {
        // Setup feed cell
        if let feed = cellData,
            let cell = tableView.dequeueReusableCell(withIdentifier: kFeedTableViewCellReuseIdentifier, for: indexPath) as? FeedTableViewCell {
            cell.feed = feed
            return cell
        }
        return UITableViewCell()
    }
}

// MARK: - TopRatedDataManager

extension TopRatedDataManager: UITableViewDataSource {
    
    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return _tableView(tableView, numberOfRowsInSection: section)
    }
    
    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return _tableView(tableView, cellForRowAt: indexPath)
    }
    
    public func numberOfSections(in tableView: UITableView) -> Int  {
        return _numberOfSections(in: tableView)
    }
}

提供对简单和高级数据源的支持,在有解耦生态系统需求时非常有用。

示例

@to be provided

[![CI 状态](http://img.shields.io/travis/Mandea Daniel/FRCDataManager.svg?style=flat)](https://travis-ci.org/Mandea Daniel/FRCDataManager) 版本 许可证 平台

用法

要运行示例项目,请克隆仓库,然后首先从 Example 目录运行 pod install

需求

安装

FRCDataManager可通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中:

pod "FRCDataManager"

作者

Mandea Daniel,[email protected]

许可证

FRCDataManager遵循MIT许可证。更多详情请参阅LICENSE文件。