Gyro

gem version build circle ci Twitter

Gyro is a tool to generate Realm model classes, for both Android (Java & Kotlin) and iOS/macOS (Swift), from an .xcdatamodel file.


G enerate
Y our
R ealm
O bjects

Introduction

The .xcdatamodel file is usually used to represent Core Data entities in Xcode in a graphical way. It can be created or edited with a graphical user interface in Xcode.

But with Gyro, you will now be able to use an xcdatamodel to create a Realm model files as well!

This will allow you to design your model in a visual way (rather than by code), only once (rather than once for Android and once for iOS), and have the code generated for you.

Simple Entity

The .xcdatamodel file is the input of the script.

Installation

Gyro is on RubyGems, so this means you can simply install it by using this command in your terminal:

gem install gyro

Alternativly, you could also clone this repository anywhere you want on your machine, then build and install the local gem

gem build gyro.gemspec
gem install gyro-*.gem

Usage

Invoke it with the appropriate options like this:

gyro --model <model> --template <template-name> --output <output-dir> --param <key>:<value>

<model> is the path to the xcdatamodel file

<output-dir> is the path to the output directory file

<template-name> is the name of the template. Below you have the list of templates.

Templates

You can use gyro -l to list the names of all the bundled templates available.

If you want additional information about a specific template, you can use gyro -i <template_name> to print its README documentation, which is also directly accessible on GitHub via the following links:

Annotating your xcdatamodel

The .xcdatamodel Xcode editor allows you to add "user infos" to your entities, attributes or relationships. Each "user info" entry is an arbitrary key/value pair.

To define a User Info key in Xcode's xcdatamodel editor, select the entity or attribute you want to add a User Info to, then select the 3rd tab in the inspector on the right ("Data Model Inspector", or Cmd-Alt-3), and fill the information you want in the "User Info" section there.

enum_json

With the help of these "user infos", you will be able to give Gyro extra information about your model classes. For example, you can tell which attribute is the primary key, the attributes to ignore, the JSON mappings, …

📖 Documentation of User Info Keys

For more information about each "user infos" keys supported, you can see the 📖 dedicated documentation here.

License

This tool is under the Apache 2 License.

It has been initially developed by Niji and is in no way affiliated to the Realm company.