Coder Social home page Coder Social logo

yusukehosonuma / userdefaultsbrowser Goto Github PK

View Code? Open in Web Editor NEW
32.0 3.0 1.0 163 KB

๐Ÿ” Browse and edit UserDefaults on your app

Home Page: https://qiita.com/YusukeHosonuma/items/4051daa8b0de2e9d2552

License: MIT License

Swift 99.95% Makefile 0.05%
ios-app swift swiftui userdefaults

userdefaultsbrowser's Introduction

UserDefaults-Browser

Browse and edit UserDefaults on your app. (SwiftUI or UIKit)

Browse Edit (as JSON) Edit (Date) Export
image image image image

Note:

We recommend to use SwiftUI-Simulator, if you use it in an app built with SwiftUI.
(This feature is also included)

Supported Types

  • Property List Types
    • Array
    • Dictionary
    • String
    • Date
    • Int
    • Float
    • Double
    • Bool
  • Other
    • URL
    • UIImage (Read-only)
  • JSON encoded
    • Data
    • String

AppGroups (UserDefaults(suiteName: "group.xxx")) is also supported, please see Configurations.

Quick Start

  1. Add https://github.com/YusukeHosonuma/UserDefaultsBrowser in the Xcode or Package.swift:
let package = Package(
    dependencies: [
        .package(url: "https://github.com/YusukeHosonuma/UserDefaultsBrowser", from: "1.0.0"),
    ],
    targets: [
        .target(name: "<your-target-name>", dependencies: [
             "UserDefaultsBrowser",
        ]),
    ]
)
  1. Setup launcher button.

SwiftUI: Surround the root view with UserDefaultsBrowserContainer.

import UserDefaultsBrowser

@main
struct ExampleApp: App {
    var body: some Scene {
        WindowGroup {
            UserDefaultsBrowserContainer {
                ContentView() // ๐Ÿ’ก Your root view.
            }
        }
    }
}

UIKit: Call setupUserDefaultsBrowserLauncher in viewDidLoad of your root ViewController.

import UserDefaultsBrowser

class ViewController: UIViewController { // ๐Ÿ’ก Your root ViewController.

    override func viewDidLoad() {
        super.viewDidLoad()

        UserDefaultsBrowser.setupUserDefaultsBrowserLauncher()
    }
}
  1. Tap launcher button at leading bottom.

image

Configuration

Both SwiftUI and UIKit have the same options like follows.

UserDefaultsBrowserContainer(
    suiteNames: ["group.xxx"],                        // AppGroups IDs
    excludeKeys: { $0.hasPrefix("not-display-key") }, // Exclude keys
    accentColor: .orange,                             // Your favorite color (`UIColor` type in UIKit-based API)
    imageName: "wrench.and.screwdriver",              // SFSymbols name
    displayStyle: .fullScreen                         // `.sheet` or `.fullScreen`
)

Add to some View or ViewController

For example, for tab-based applications, it is useful to have a tab for browsing.

SwiftUI

var body: some View {
    TabView {
        ...
        UserDefaultsBrowserView()
            .tabItem {
                Label("Browser", systemImage: "externaldrive")
            }
    }
}

UIKit

class TabItemViewController: UIViewController {
    override func viewDidLoad() {
        let vc = UserDefaultsBrowserViewController()
        addChild(vc)
        view.addSubview(vc.view)
        vc.didMove(toParent: self)
        
        vc.view.translatesAutoresizingMaskIntoConstraints = false
        vc.view.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0).isActive = true
        vc.view.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 0).isActive = true
        vc.view.topAnchor.constraint(equalTo: view.topAnchor, constant: 0).isActive = true
        vc.view.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = true
    }
}

Requirements

  • iOS 14+

Contributions

Issues and PRs are welcome, even for minor improvements and corrections.

Author

Yusuke Hosonuma / @tobi462

userdefaultsbrowser's People

Contributors

maiyama18 avatar yusukehosonuma avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

maiyama18

userdefaultsbrowser's Issues

iOS 15+ ใฎๅ ดๅˆใซใฏๆจ™ๆบ–ใฎๆคœ็ดขใƒใƒผใ‚’ๅˆฉ็”จใ—ใŸใ„ใ€‚

SwiftUI 3.0 ใ‹ใ‚‰ใฎ searchable ใ‚’ๅˆฉ็”จใงใใ‚Œใฐใ€่‡ชๅ‹•็š„ใซ้š ใ‚Œใฆใใ‚ŒใŸใ‚Šใ—ใฆไพฟๅˆฉใใ†ใ€‚๏ผˆใชๆฐ—ใŒใ™ใ‚‹

image

ref:
https://github.com/YusukeHosonuma/UserDefaultsBrowser/blob/main/Sources/UserDefaultsBrowser/View/SearchContainerView.swift

ใƒชใƒ†ใƒฉใƒซใซๅฟœใ˜ใŸ่‰ฒๅˆ†ใ‘

JSON ใซใŠใ‘ใ‚‹ๆ–‡ๅญ—ๅˆ—ใƒปๆ•ฐๅ€คใƒปBool ใƒชใƒ†ใƒฉใƒซใชใฉใงใ€่‰ฒๅˆ†ใ‘ใŒใงใใŸใ‚‰่ฆ‹ใ‚„ใ™ใใฆใ‚ˆใ•ใใ†ใ€‚
image

ใŸใ ใ€ใใ“ใพใง้‡่ฆใ‹ใจใ„ใˆใฐใใ†ใงใ‚‚ใชใ„ใฎใงใ€WebView ใจใ‹ใงใ‚ทใƒณใ‚ฟใƒƒใ‚ฏใ‚นใƒใ‚คใƒฉใ‚คใƒˆใ‚’้ฉ็”จใ™ใ‚‹ใ‚ˆใ†ใชใ‚ขใƒ—ใƒญใƒผใƒใฏใ‚„ใ‚ŠใŸใใชใ„ใ€‚

GitHub Actions ใงใƒ“ใƒซใƒ‰

Example ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’ใƒ“ใƒซใƒ‰ใ™ใ‚‹ใฎใŒใ‚ˆใ•ใใ†ใ€‚๏ผˆPublic API ใŒๅฃŠใ‚Œใฆใชใ„ใ‹ใฎ็ขบ่ชใซใ‚‚ใชใ‚‹ใฎใง๏ผ‰

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.