Swiftpack.co - LeoNatan/LNPropertyListEditor as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
A property list editor for macOS, similar to Xcode's.
.package(url: "https://github.com/LeoNatan/LNPropertyListEditor.git", from: "2.1.0")


A property list editor for macOS, similar to Xcode's. Has full support for macOS Mojave light and dark appearance.

Property list editor

Property list editor

Adding to Your Project

Swift Package Manager

Swift Package Manager is the recommended way to integrate LNPropertyListEditor in your project.

LNPropertyListEditor supports SPM versions 5.1.0 and above. To use SPM, you should use Xcode 11 to open your project. Click File -> Swift Packages -> Add Package Dependency, enter https://github.com/LeoNatan/LNPropertyListEditor. Select the version you’d like to use.

You can also manually add the package to your Package.swift file:

.package(url: "https://github.com/LeoNatan/LNPropertyListEditor.git", from: "1.0")

And the dependency in your target:

.target(name: "BestExampleApp", dependencies: ["LNPropertyListEditor"]),


Add the following to your Cartfile:

github "LeoNatan/LNPropertyListEditor"

Make sure you follow the Carthage integration instructions here.


Drag the LNPropertyListEditor.xcodeproj project to your project, and add LNPropertyListEditor.framework to Embedded Binaries in your project target's General tab. Xcode should sort everything else on its own.


CocoaPods is not supported. There are many reasons for this. Instead of CocoaPods, use Carthage. You can continue using CocoaPods for for your other dependencies and Carthage for LNPropertyListEditor.

Using the Framework


While the framework is written in Objective C, it uses modern Objective C syntax, so using the framework in Swift should be very easy and intuitive.

Project Integration

Import the module in your project:

@import LNPropertyListEditor;


Either using Interface Builder or in code, add an LNPropertyListEditor view to your user interface.

To set a represented object, set the propertyList property.

guard let propertyListURL = Bundle.main.url(forResource: "Some", withExtension: "plist"),
   let propertyListData = try? Data(contentsOf: propertyListURL),
   let propertyListObject = try? PropertyListSerialization.propertyList(from: propertyListData, options: [], format: nil) as? [String: AnyObject] else {

plistEditor.propertyListObject = propertyListObject

Supported object types: Dictionaries, arrays, strings, dates, datas, booleans and numbers (dictionaries and arrays can contains nested children of the aforementioned types).


Implement the LNPropertyListEditorDelegate protocol to listen to various events, or control what aspects of the property list can be edited.

plistEditor.delegate = self
func propertyListEditor(_ editor: LNPropertyListEditor, didChange node: LNPropertyListNode, changeType: LNPropertyListNodeChangeType, previousKey: String?) {
	switch changeType {
	case .insert:
	case .move:
	case .update:
	case .delete:
  @unknown default:

For full documentation, see the LNPropertyListEditor.h header.

Data Transformer

Implement the LNPropertyListEditorDataTransformer protocol to provide display and data transformations for your property list objects.

plistEditor.dataTransformer = self
func propertyListEditor(_ editor: LNPropertyListEditor, displayNameFor node: LNPropertyListNode) -> String? {
	// ...
	if let key = node.key,
	   key == "CFBundleShortVersionString" {
		return "Bundle version string (short)"

For full documentation, see the LNPropertyListEditor.h header.


The framework uses:

  • HexFiend © ridiculous_fish, 2011-2020


Stars: 73
Last commit: 4 weeks ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Submit a free job ad (while I'm testing this). The analytics numbers for this website are here.

Release Notes

4 weeks ago
  • Added support for data editing in property lists
  • Improved data transformer functionality

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics