Awesome
Gyro
Gyro is a tool to generate Realm model classes, for both Android (Java & Kotlin) and iOS/macOS (Swift), from an .xcdatamodel
file.
<center><table><tr> <td><img src='logo.png' width='200' height='200' /></td> <td> <strong>G</strong> enerate<br/> <strong>Y</strong> our<br/> <strong>R</strong> ealm<br/> <strong>O</strong> bjects </td> </tr></table></center>
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.
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:
- android-java (Java)
- Note:
android
is an alias name for the android-java template - android-kotlin (Kotlin)
- swift3 (Swift 3 & 4)
- Note:
swift4
is an alias name for the swift3 template - decodable (for Anviking's
Decodable
pod) - swift3-variant (Deprecated, only for use with the
object-mapper
template) - object-mapper (Deprecated)
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.
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.