mogenerator + Xmo'd
Visit the project's pretty homepage.
Read the project's backgrounder. Or, for the impatient:
mogeneratoris a command-line tool that, given an
.xcdatamodelfile, will generate two classes per entity. The first class,
_MyEntity, is intended solely for machine consumption and will be continuously overwritten to stay in sync with your data model. The second class,
_MyEntity, won't ever be overwritten and is a great place to put your custom logic.
Xmo'd (pronounced ex-mowed) is an Xcode plugin that integrates mogenerator into Xcode. It saves you the hassle of having to write a Run Script Build Phase and/or manually adding+removing source files from your project as you add+remove entities.
Xmo'd works by noticing when your
*.xcdatamodel is saved. If the model file's Xcode project item comment contains
xmod, an AppleScript is fired that creates a folder based on your model's file name and populates it with derived source code files from your model. It then adds the new folder to your project as a Group Reference and adds all the source files to your project.
[NEW] Xmo'd: model comments that start with
--are passed as args to mogenerator. This allows accessing command-line options such as
--base-class. (David LeBer)
[CHANGE] LLVM 2/Xcode 4 doesn't like
[NSDictionary dictionaryWithObjectsAndKeys:nil], issuing a "missing sentinel in method dispatch" warning. Add
prettyFetchRequestsso we can just generate
NSDictionary *substitutionVariables = nilin that case. (Anthony Mittaz)
[FIX] Variable shadowing bug which would cause v1.19's
xcode-selectfunctionality to always fail. (Nikita Zhuk)
- [NEW] Use
xcode-selectto dynamically discover our way to
momcinstead of only hard-coding
/Developer. (Josh Abernathy)
[NEW] Xmo'd works with versioned data models. (rentzsch)
[NEW] Support for fetched properties (Nikita Zhuk)
NSParameterAssert(moc)in fetch request wrappers. (rentzsch)
--list-source-filesoption, which lists model-related source files. (rentzsch)
--model to get a listing of source files that no longer have corresponding entities in the model. The intent is to be able to pipe its output to xargs + git to remove deleted and renamed entities in one command, something like:
$ mogenerator --model ../MyModel.xcdatamodel --orphaned | xargs git rm
[NEW] machine.h template now produces type-safe scalar attribute property declarations. (rentzsch)
[CHANGE] Remove machine.m implementations of to-many relationship setters. (rentzsch)
[CHANGE] Xmo'd: change file ordering to human.m, human.h, machine.m, machine.h (from human.h, human.m, machine.h, machine.m). (rentzsch)
[FIX] Missing space for fetch requests with multiple bindings. (Frederik Seiffert)
[CHANGE] Xmo'd: now adds
.hhuman+machine header files to project (in addition to current
[NEW] Now supports key paths in fetch request predicates so long as they're relationships. (Jon Olson)
[FIX] Log fetch-request-wrapper errors to
NSLog()on iPhone since it lacks
-[NSApp presentError:]. (rentzsch)
IMPORTANT: 1.14 generates code that may be incompatible with clients of 1.13-or-earlier generated code.
+newInManagedObjectContext:has been replaced with
+insertInManagedObjectContext:and method implementations have been replaced with
@dynamic, which don't work so well with overriding (most of these uses can be replaced with Cocoa Bindings). Upgrade only if you have spare cycles to fix-up existing projects.
+insertInManagedObjectContext:to satisfy the LLVM/clang static analyser. (Ruotger Skupin)
[CHANGE] Default machine templates now use @dynamic. The old templates still available in
contributed templates/rentzsch non-dynamic. (Pierre Bernard)
[CHANGE] Xmo'd included again in default mogenerator installation -- the first time since 1.6. (rentzsch)
[CHANGE] Migrated project to github from self-hosted svn+trac installation.
[NEW] Xmo'd version checking whitelists Xcode versions 3.1(.x) and 3.2(.x).
[NEW] Dropped ppc support for Xmo'd. May reconsider if folks yelp. (rentzsch)