Skip to content
/ InfoKit Public

Strongly Typed access to the Info.plist for iOS, macOS and tvOS.

License

Notifications You must be signed in to change notification settings

nmdias/InfoKit

Repository files navigation

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 🙏