orchetect/swift-plist
Swift library for easily reading/writing plist (Property List) files.
swift-plist
A multi-platform Swift library bringing functional methods and type safety to .plist (Property List) files.
Motivation
The challenges that Apple's standard PropertyListSerialization presents:
- Lack of type safety which allows the inadvertent injection of incompatible value types, which can lead to unexpected errors when saving a plist file later on, and are difficult to diagnose
- Root-level dictionary access only, making traversal of nested dictionaries very cumbersome
- Deals in NS value types which is not very Swifty and requires extra boilerplate at every interaction
swift-plist solves these issues by:
- Acting as a safe and convenient wrapper for
PropertyListSerialization - Providing clean functional syntax for
- easily manipulating nested keys and values in dictionary trees
- loading and saving plist files
- Dealing in native Swift value types for keys and values
- Preventing the inadvertent use of incompatible value types to avoid unexpected errors due to lack of type safety
Installation
Swift Package Manager (SPM)
To add this package to an Xcode app project, use:
https://github.com/orchetect/xctest-extensions as the URL.
To add this package to a Swift package, add the dependency to your package and target in Package.swift:
let package = Package(
dependencies: [
.package(url: "https://github.com/orchetect/swift-plist", from: "3.0.0")
],
targets: [
.target(
dependencies: [
.product(name: "SwiftPList", package: "swift-plist")
]
)
]
)Documentation
See the online documentation or view it in Xcode's documentation browser by selecting the Product โ Build Documentation menu.
Resources
Author
Coded by a bunch of ๐น hamsters in a trenchcoat that calls itself @orchetect.
License
Licensed under the MIT license. See LICENSE for details.
Community & Support
Please do not email maintainers for technical support. Several options are available for issues and questions:
- Questions and feature ideas can be posted to Discussions.
- If an issue is a verifiable bug with reproducible steps it may be posted in Issues.
Contributions
Contributions are welcome. Posting in Discussions first prior to new submitting PRs for features or modifications is encouraged.
Legacy
This repository was formerly known as PListKit.