Awesome Open Source
Awesome Open Source

InfoKit

cocoapods compatible carthage compatible language swift

简体中文

InfoKit provides Strongly Typed access to the Info.plist with less than 60 lines of code, while leveraging Swift 4's powerful Codable capabilities.

Installation >> instructions <<

Usage

Define a Codable with the properties you wish to access from the project's bundle Info.plist file.

struct Info: Codable {
    let baseUrl: String
    let staticUrl: String
}

And read the Info.plist into the Info struct:

// Define a Plist
let plist = Plist<Info>()

// Decode it
let info = plist.decode()

// Then access it's properties
info?.baseUrl    // http://debug.InfoKit.local
info?.staticUrl  // http://debug.static.InfoKit.local

Custom .plist

For convenience, InfoKit will also provide access to custom .plist files. Let's say you included a ProductIDs.plist file. Start by defining the struct with it's respective properties.

struct Products: Codable {
    let foo: String
    let bar: String
}

Define a Plist, and this time, specify the resource name. e.g. ProductIDs

let plist = Plist<Products>("ProductIDs") // Reads `ProductIDs.plist`
let products = plist.decode()

products?.foo // com.InfoKit.foo
products?.bar // com.InfoKit.bar

Remember, user provided property lists must be copied into the bundle, so make sure to set it's Target Membership.

Specify a Bundle

InfoKit will default to the Main Bundle, however, you can specify the bundle, if needed:

Plist<Products>("ProductIDs", in: bundle)

Build Configurations

If no resource or bundle is specified in the initializer of the Plist class, like so:

Plist<Info>()

...then, InfoKit will default to the Main Bundle's Info.plist file defined in the Project's Build Settings.

Because of this, you can provide multiple Info.plist files for different configurations and still get the desired results. See the iOS Example project in action by choosing between the debug, staging and release configurations.

License

InfoKit is released under the MIT license. See LICENSE for details.

Help Wanted

Review/Translate README.zh-CN.md to Chinese

Chinese is the #1 spoken language in the world and I'd love to have InfoKit be more inclusive, unfortunately I don't speak Chinese. If you know chinese, and would like to help out, please see issue #1

Thank you 🙏


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
swift (7,627
ios (3,550
macos (1,707
tvos (206
swift4 (177
plist (26

Find Open Source By Browsing 7,000 Topics Across 59 Categories