Core Data code generation
Switch branches/tags
Nothing to show
Pull request Compare This branch is 530 commits behind rentzsch:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
contributed templates


#mogenerator + Xmo'd

Visit the project's pretty homepage.

Read the project's backgrounder. Or, for the impatient:

mogenerator is a command-line tool that, given an .xcdatamodel file, 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, subclasses _MyEntity, won't ever be overwritten and is a great place to put your custom logic.

Using Xmo'd

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.

Version History

  • 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)

    • [FIX] Missing space for fetch requests with multiple bindings. (Frederik Seiffert)

  • 1.15 Mon 2 Nov 2009 download

    • [CHANGE] Xmo'd: now adds .h human+machine header files to project (in addition to current .m + .mm files). (rentzsch)

    • [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)

    • [NEW] +insertInManagedObjectContext: NSParameterAssert()'s its moc arg. (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.

    • [CHANGE] changed +newInManagedObjectContext: to +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)