🏭 FactoryProvider🏭
生成Swift框架工厂的样板代码。
要求
- Swift 4+
- Xcode 9+
平台
FactoryProvider支持以下平台
- iOS 8+
- Mac OSX 10.9+
- watchOS 2+
- tvOS 9+
支持
- 枚举
- 结构体
FactoryProvider
1. 安装
CocoaPods
通过 CocoaPods 可以使用 FactoryProvider 开发运行时。要安装它,只需在 Podfile 中的测试目标中添加以下行:
pod "FactoryProvider"
并将以下 运行脚本
构建阶段添加到测试目标的 构建阶段
"${PODS_ROOT}/FactoryProvider/generate" --config .factory.yml
运行一次后,找到 Factories.generated.swift
并将其拖到 Xcode 测试目标组中。
.factory.yml
includes: # paths of file or directory to generate
- Input/SubInput1
- Input/SubInput2/Source.swift
excludes: # paths of file or directory not to generate
- Input/SubInput1/SubSubInput
- Input/SubInput2/Source.swift
testables: # testable targets
- target1
- target2
output: output/Factories.generated.swift # path of generated file
2. 使用方法
您可以通过调用 Factory<TypeName>.provide()
获取一个实例。每个属性都设置为默认值。
struct Climber {
let name: String
let age: Int
}
let climber = Factory<Climber>.provide()
// Climber(name: "", age: 0)
let optClimber = Factory<Climber?>.provide()
// Optional(Climber(name: "", age: 0))
let arrayClimber = Factory<[Climber]>.provide()
// [Climber(name: "", age: 0)]
3. 镜头
Factory<TypeName>.provide()
提供固定实例。您可以通过镜头修改每个属性。
获取
let name = Factory<Climber>.provide().name or Lens<Climber>.name().get(Factory<Climber>.provide())
// ""
设置
import FactoryProvider
let climber = Factory<Climber>.provide() |> Lens<Climber>.name() *~ "Climber"
// Climber(name: "Climber", age: 0)
修改
import FactoryProvider
let name = Factory<Climber>.provide() |> Lens<Climber>.name() *~ { "Climber" |> { $0 + $0 } }()
// Climber(name: "ClimberClimber", age: 0)
编写
import FactoryProvider
struct Climber {
let id: Id
let name: String
struct Id {
let value: String
}
}
let climber1 = Factory<Climber>.provide()
// Climber(id: Id(value: ""), name: "")
let climber2 = climber1 |> Lens<Climber>.id() * Lens<Climber.Id>.value() *~ "id"
// Climber(id: Id(value: "id"), name: "")
通知
泛型
如果您希望使用泛型包含类型,应使用 0.4.1
。
pod "FactoryProvider", '~> 0.4.1'
库
许可协议
FactoryProvider 在 MIT 许可协议 下可用。