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.
1.16 Mon 4 Jan 2010 download
[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)
1.15 Mon 2 Nov 2009 download
[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)
1.14 Fri 9 Oct 2009 download
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)