Raizlabs/RZVinyl — pull request #4 by ndonald2 (2014-06-09 20:51:54+00:00)
Title: Core feature set

@Raizlabs/maintainers-ios
I have been working on a replacement for RZDataManager, and this is it. I would love some eyes on the code and feedback about the interface.

#### Features
- Modular and flexible core data stack wrapper
- Currently required in order to support ActiveRecord extensions
- Uses the Zarra-inspired topology for persistent store writes
- Provides convenient background import/transaction block API, as well as temporary context creation.
- Category on `NSManagedObject` for ActiveRecord-style object creation, query, deletion, etc
- Categories for easy `NSFetchedResultsController` and `NSFetchRequest` creation
- RZAutoImport extensions
- Implicit key/property mapping and type conversion
- Default, but overloadable, import behavior with `RZAutoImportable` protocol
- Handles relationship imports
- Requires RZAutoImport, but can be excluded using the CocoaPod subspec `RZVinyl/Core`
- Thread safe (I hope)

#### Notes

Right now this requires CocoaPods, as it's the only reasonable way of managing cross-library dependencies (the unit tests and import extension depend on `RZAutoImport`). Submodules requires the entire project root to be cloned, with no way to specify a persistent sparse-checkout spec. Install the CocoaPods gem, `cd Example` and `pod install`. Then the tests/demo (TODO) will build correctly from the resulting `.xcworkspace` file.

See unit tests for examples until the README docs are filled out. I also want to try CocoaPods' auto documentation generation feature, since I commented using AppleDoc syntax.

#### TODO:

- [ ] #1 Real demo project
- [ ] #2 README
- [ ] #3 Finalize/submit podspec

**Note:** This is intended to be a living pull request until this is vetted and all the TODOs above are addressed.