FountainKit 1.0.1

FountainKit 1.0.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2016年3月
SPM支持 Swift 包管理器

Cesar Tardaguila 维护。



FountainKit

FountainKit 是一个轻量级的 Swift 框架,旨在减少视图控制器和数据源之间的耦合,并使数据源和单元格更容易进行单元测试。

FountainKit 尝试解决的问题

保持视图控制器小巧和专注很难。特别是那些需要展示数据的视图控制器,往往做太多,有太多的职责。

这使得这些视图控制器变得僵化,难以更改,也难以进行单元测试。

FountainKit 尝试解决问题的方法

FountainKit 是一个轻量级的框架,它提出了一种从视图控制器中解耦数据源的方式,以便数据源、表格视图或集合视图单元格以及视图控制器可以相互协作,并保持解耦和可测试。

单元格

单元格应该负责渲染自己的内容。为了强制执行这一点,表格视图和集合视图单元格必须实现 DataSettable 协议

public protocol DataSettable {
    typealias DataType
    var data: DataType? {get set}
}

DataType 是将提供给单元格的模型对象。

视图控制器

视图控制器只需负责创建数据源,向其提供必要的数据和单元格类型,然后将它设置为它控制的表格视图/集合视图的数据源。

    private func initData() {
        let data = [ Movie(title: "The Quiet Man", director: "John Ford"),
            Movie(title: "The Third Man", director: "Carol Reed") ]        

        let dataManager = FlatArrayDataManager(data: data)
        dataSource = TableViewDataSource(dataManager: dataManager, cellType: MovieCell.self)
    }

    private func initTableView() {
        tableView.registerClass(MovieCell.self, forCellReuseIdentifier: MovieCell.cellReuseIdentifier())
        tableView.dataSource = dataSource
    }

将 FountainKit 集成到您的项目中

可以使用以下方法集成 FountainKit

Swift 包管理器

如果您使用 Swift 包管理器,请将 FountainKit 添加到您的 Package.swift 文件的依赖中

import PackageDescription

let package = Package(
    //
    dependencies: [
        //
        .Package(url: "https://github.com/ctarda/FountainKit.git", majorVersion: 1, minor: 0)
    ]
)

示例

此存储库包含一个实现表格视图的示例应用程序。

如果您对这个框架背后的理念感兴趣,请阅读这篇博客文章:http://ctarda.com/2016/03/introducing-fountainkit/

为FountainKit贡献力量

欢迎所有形式的贡献(错误报告、功能建议、新功能),并会非常感激。

特别是,我们需要

  • 添加更多遵循DataManager协议的实现,以管理不同的数据结构。
  • 扩展到代理!
  • 改善当前的示例应用程序,添加一个集合视图的示例集成。
  • 添加一些更多文档。

许可

FountainKit在MIT许可下发布