Property lists allow for storage of a wide variety of different data types. There are only seven basic types to work with, but data can be manipulated in many different ways to be stored as one of these seven types. However, this sometimes means transforming the data into a form that is not easily recognized or edited when viewing the property list.
PlistEdit Pro helps alleviate this problem by providing formatters for many common types of data that have to be manipulated to be stored in a property list. To view a value using a formatter, select the row you want to view and select the data type you want to view it as using the “View As” submenu in the Edit menu (or by control-clicking and selecting from the contextual menu). Below is a list of the formatters that are included with the current version of PlistEdit Pro:
|HMS (hours/minutes/seconds)||If a time value is stored in a number, this formatter can be used to interpret the number as a number of seconds and display the value divided up into hours, minutes, and seconds. For example, if the base value of the number is 3672, using the HMS formatter will display the value as 1:01:12 (one hour, one minute, and twelve seconds).|
|Hex (big-endian or little-endian)||Displays the number value as either big-endian or little-endian hexadecimal. Values are interpreted as signed integers and padded with zeros up to the nearest number of bytes that is a power of two. Any decimal portion of a floating-point number will be ignored.|
|OSType (a.k.a. four character codes)||OSType values are used in many ways in macOS as an easily readable four character code that is actually stored as a 32 bit integer. These values are often stored in property lists as their numeric value, which is not easily readable. Using this formatter will interpret and display a number as a four character OSType.|
|Storage size||Useful for numbers used to store file sizes as a raw number of bytes. The storage size formatter will instead display the number as a number of KB, MB, GB, or TB.|
|Time interval date||While property lists do provide a specific date type for storing dates, in some places you will still see dates stored as a time interval from a certain starting date. PlistEdit Pro provides formatters for interpreting these numbers as UNIX-style dates, using a reference date of 1/1/1970, Cocoa-style dates, which use a reference date of 1/1/2001, or Carbon style dates, which start at 1/1/1904.|
|Alias record||An alias record in macOS is an opaque data type that can be stored as a chunk of data. The most common storage method is in the resource fork of the alias files you can create using the Finder, but many programs also store aliases internally using data objects in property lists. This formatter will attempt to interpret the data object as an alias record and display the path the alias resolves to. If the data object is not an alias, or cannot be resolved, an error message is displayed instead of the path.|
|Strings (ASCII, MacOS Roman, UTF-8, or UTF-16)||This set of formatters will interpret the data object as a string encoded using a certain encoding.|
|Bookmark data||Bookmarks are data type that function very similarly to aliases, but are accessed through the CFURL/NSURL APIs. This formatter behaves the same as the one for alias records, only translating to/from bookmark data blobs instead of alias record data blobs.|
Note that not only do formatters allow you to view data as different types, they also allow you to edit the data in the same form. For example, you can type in a new hex value for a number, or type in a new path to make an alias record point to a different location.
View By Subkey
When viewing a list of dictionaries, it’s often difficult to find a particular dictionary, since the only value that’s displayed by default for each dictionary is the number of key/value pairs it contains. If you select such a list and use the “View By Subkey” menu command, you can select a key whose value will be displayed next to the dictionary. This makes it easy to find a particular dictionary in a large list without having to open each dictionary to see its contents.