警告

DebugMenu 即将停止维护。请尝试新的 noppefoxwolf/ContentLauncher

DebugMenu

安装

Swift Package Manager

选择 File > Swift Packages > Add Package Dependency。

在 "Choose Package Repository" 对话框中输入 https://github.com/noppefoxwolf/DebugMenu

.package(url: "https://github.com/noppefoxwolf/DebugMenu", from: "2.0.4")

用法

基于 UIKit

#if DEBUG
DebugMenu.install(windowScene: windowScene, items: [
    ViewControllerDebugItem<ColorViewController>(),
    ClearCacheDebugItem(),
    UserDefaultsResetDebugItem(),
    CustomDebugItem()
], dashboardItems: [
    CPUUsageDashboardItem()
])
#endif

基于 SwiftUI

@main
struct App: SwiftUI.App {    
    var body: some Scene {
        WindowGroup {
            Root.View(
                store: .init(
                    initialState: .init(),
                    reducer: Root.reducer,
                    environment: .debug
                )
            ).debugMenu(debuggerItems: [
                ViewControllerDebugItem<ColorViewController>(),
                ClearCacheDebugItem(),
                UserDefaultsResetDebugItem(),
                CustomDebugItem()
            ], dashboardItems: [
                CPUUsageDashboardItem()
            ])
        }
    }
}

自定义调试项

struct CustomDebugItem: DebugItem {
    let debugItemTitle: String = "Custom item"
    let action: DebugItemAction = .toggle { UserDefaults.standard.bool(forKey: "key") } action: { (isOn, completions) in
        let updater = Updater()
        do {
            await updater.update()
            return .success(message: "Updated")
        } catch {
            return .failure(message: "Faild to update")
        }
    }
}

自定义仪表盘项

public class CustomDashboardItem: DashboardItem {
    public init() {}
    public func startMonitoring() {}
    public func stopMonitoring() {}
    public let fetcher: MetricsFetcher = .text {
        let formatter = DateFormatter()
        formatter.dateFormat = "HH:mm:ss"
        return formatter.string(from: Date())
    }
    public var title: String = "Date"
}

在生产环境中排除 DebugMenu

阅读以下文章。仅在调试版本中链接 Swift 包

如何使用

打开 DebugMenu

点击浮动错误按钮。

显示仪表盘

长按浮动错误按钮,然后点击 Show widget

许可

DebugMenu 在 MIT 许可下发布。详情请参阅 LICENSE。