FeatureFlagsController
FeatureFlagsController 是一个微库,它可以从项目中所有注册的特征标志自动构建 SwiftUI 表单视图,利用功能响应式编程的威力使用 Combine。
要求
- iOS 13.0+
- Xcode 12.0+
- Swift 5.2+
安装
CocoaPods
将以下内容添加到您的 Podfile
pod "FeatureFlagsController"
Swift 包管理器
使用 Xcode 12 SPM 集成,在 https://github.com/DataDog/FeatureFlagsController
上使用
使用方法
FeatureFlagsView
所有已注册的功能标志都会出现在一个 FeatureFlagsView
中,该视图由一个 NavigationView
和一个分区 Form
组成。您可以在应用程序的任何位置显示此视图。例如,在一个隐藏的“调试”菜单中。
此表单会跟踪已注册的功能标志,并在运行时显示修改它们的正确 UI。一个 ToggleFeatureFlag
将显示一个简单的 Toggle
(UISwitch
),而一个 PickerFeatureFlag
将显示一个分段控件或根据其提供的选择器样式显示一个子菜单。
声明
以下是声明新功能标志的方法:
let roundedCornersFeatureFlag = ToggleFeatureFlag(
title: "Rounded Corners", defaultValue: true, group: "Home Screen"
)
声明功能标志本身并不会执行任何操作,但您仍然可以通过使用 value
属性来访问其值。某些功能标志类型具有对 value
属性的别名,以使调用点更清晰。例如,ToggleFeatureFlag
有 isEnabled
别名。
注册
为了在 FeatureFlagsView
中显示功能标志,必须对该功能标志进行注册。register()
方法返回一个立即发出当前值,然后所有值更新的 Combine AnyPublisher
一旦 Combine 订阅被取消(例如,当拥有的视图控制器弹出或消失),功能标志将从 FeatureFlagsView
中消失。
roundedCornersFeatureFlag
.register() // Adds the feature flag to the `FeatureFlagsView` and returns an AnyPublisher<Bool, Never>
.map { $0 ? 16 : 0 } // Use all Combine operators you want to
.assign(to: \.cornerRadius, on: squareView.layer)
.store(in: &cancellables) // On cancellation, the feature flag is removed from the `FeatureFlagsView`
许可证
本框架在 MIT 许可下提供。