David Sinclair, owner and developer of Dejal, has released the following Cocoa/Objective-C code as open source for macOS and iOS.

You are welcome to download and use this code, subject to the License Agreement. Read on for more information.

Note: most work nowadays is done in Swift; some of this code will be open-sourced at a later date.

Consulting Available

Looking for a developer for your macOS or iOS project? David may be able to help. With more than a quarter century of commercial Mac programming experience, and nearly a decade on iOS, he brings a rich set of skills to any project. David is willing to consider long- or short-term projects, on an hourly, milestone, or per-job basis, working from his home office near Portland, Oregon. Learn more on the Consulting page.

If you want or need to use the code without giving Dejal credit, non-attribution licenses are available for purchase from the Developer Store.

Donations

You can use this code completely free of charge, if you give Dejal credit. But if this code helps you solve a problem or saves you time, David always appreciates a donation to support and encourage future open source development.

Alternatively, a fun option is to send David a gift from his Amazon.com Wish List. It's always nice to receive a surprise package in the mail.

Get In Touch!

If you use this code, David wants to hear from you! In the future we might link to apps that use these projects, which would help your Google juice. David can't promise to help with the code, but will try to answer questions about it or licensing. Contact us.

If you find issues or want to request enhancements, please use the issue tracker for each project (hosted on GitHub). Or better yet, fork the code and implement the feature/fix yourself, then submit a pull request.

Keep Up To Date

Preferably use the GitHub repositories rather than zip archives to make it easier to get any updates.

DejalObject is an abstract data model class that can represent subclasses as dictionary or JSON data for saving to disk or over the network.

Features:

DejalObject: This is an abstract subclass of NSObject that adds methods to represent the receiver as a dictionary or JSON data, load default values, track changes, enumerate an array of DejalObject instances, and more.

DejalColor: A concrete subclass of DejalObject to represent a color (for macOS or iOS), enabling it to be stored in a DejalObject subclass.

DejalDate: Another concrete subclass to represent a date, primarily so it can automatically be represented as JSON.

DejalInterval: A subclass to represent a time interval or a range of intervals, including an amount and units, with methods to represent the interval or range in various ways, including as human-readable strings (see also the DejalIntervalPicker project for macOS).