[
  {
    "path": ".clang-format",
    "content": "BasedOnStyle: Chromium\nAlignTrailingComments: true\nBraceWrapping:\n  AfterClass:      true\n  AfterControlStatement: true\n  AfterEnum:       true\n  AfterFunction:   true\n  AfterNamespace:  true\n  AfterObjCDeclaration: true\n  AfterStruct:     true\n  AfterUnion:      false\n  BeforeCatch:     true\n  BeforeElse:      true\n  IndentBraces:    false\nBreakBeforeBraces: Allman\nColumnLimit: 0\nIndentCaseLabels: true\nIndentWidth: 4\nKeepEmptyLinesAtTheStartOfBlocks: false\nMaxEmptyLinesToKeep: 1\nNamespaceIndentation: None\nObjCBlockIndentWidth: 4\nObjCSpaceAfterProperty: true\nObjCSpaceBeforeProtocolList: true\nPointerAlignment: Right\nSpaceAfterCStyleCast: false\nSpaceBeforeAssignmentOperators: true\nSpaceBeforeParens: ControlStatements\nSpaceInEmptyParentheses: false\nSpacesBeforeTrailingComments: 1\nSpacesInAngles:  false\nSpacesInContainerLiterals: true\nSpacesInCStyleCastParentheses: false\nSpacesInParentheses: false\nSpacesInSquareBrackets: false\nStandard:        Auto\nTabWidth:        4\nUseTab:          Never\n"
  },
  {
    "path": ".cocoadocs.yml",
    "content": "additional_guides:\n  - https://github.com/magicalpanda/MagicalRecord/wiki/Installing-MagicalRecord\n  - https://github.com/magicalpanda/MagicalRecord/wiki/Getting-Started\n  - https://github.com/magicalpanda/MagicalRecord/wiki/Working-with-Managed-Object-Contexts\n  - https://github.com/magicalpanda/MagicalRecord/wiki/Creating-Entities\n  - https://github.com/magicalpanda/MagicalRecord/wiki/Deleting-Entities\n  - https://github.com/magicalpanda/MagicalRecord/wiki/Fetching-Entities\n  - https://github.com/magicalpanda/MagicalRecord/wiki/Saving\n  - https://github.com/magicalpanda/MagicalRecord/wiki/Usage-Patterns\n  - https://github.com/magicalpanda/MagicalRecord/wiki/Importing-Data\n  - https://github.com/magicalpanda/MagicalRecord/wiki/Logging\n  - https://github.com/magicalpanda/MagicalRecord/wiki/Upgrading-to-MagicalRecord-2.3\n"
  },
  {
    "path": ".gitignore",
    "content": "# Finder\n.DS_Store\n\n# Xcode\nbuild/*\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\n*.xcworkspace\n!default.xcworkspace\nxcuserdata\nprofile\n*.moved-aside\n\nDerivedData\nCarthage/Build\n\n*.gcno\n*.gcda\n\nMagicalRecord.framework.zip\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: objective-c\nxcode_project: MagicalRecord.xcodeproj\nmatrix:\n  include:\n    - osx_image: xcode11.1\n      xcode_scheme: MagicalRecord for iOS\n      xcode_destination: platform=iOS Simulator,OS=13.1,name=iPhone 11 Pro Max\n      env: DEVICE=\"iPhone 11 Pro Max (13.1)\"\n    - osx_image: xcode11.1\n      xcode_scheme: libMagicalRecord for iOS\n      xcode_destination: platform=iOS Simulator,OS=13.1,name=iPhone 11 Pro Max\n      env: DEVICE=\"iPhone 11 Pro Max (13.1)\"\n    - osx_image: xcode10.3\n      xcode_scheme: MagicalRecord for iOS\n      xcode_destination: platform=iOS Simulator,OS=12.4,name=iPhone Xʀ\n      env: DEVICE=\"iPhone Xʀ (12.4)\"\n    - osx_image: xcode10.3\n      xcode_scheme: libMagicalRecord for iOS\n      xcode_destination: platform=iOS Simulator,OS=12.4,name=iPhone Xʀ\n      env: DEVICE=\"iPhone Xʀ (12.4)\"\n    #- osx_image: xcode10.3\n    #  xcode_scheme: MagicalRecord for iOS\n    #  xcode_destination: platform=iOS Simulator,OS=11.4,name=iPhone X\n    #  env: DEVICE=\"iPhone X (11.4)\"\n    #- osx_image: xcode10.3\n    #  xcode_scheme: libMagicalRecord for iOS\n    #  xcode_destination: platform=iOS Simulator,OS=11.4,name=iPhone X\n    #  env: DEVICE=\"iPhone X (11.4)\"\n    #- osx_image: xcode10.3\n    #  xcode_scheme: MagicalRecord for iOS\n    #  xcode_destination: platform=iOS Simulator,OS=10.3.1,name=iPhone 7 Plus\n    #  env: DEVICE=\"iPhone 7 Plus (10.3.1)\"\n    #- osx_image: xcode10.3\n    #  xcode_scheme: libMagicalRecord for iOS\n    #  xcode_destination: platform=iOS Simulator,OS=10.3.1,name=iPhone 7 Plus\n    #  env: DEVICE=\"iPhone 7 Plus (10.3.1)\"\n    #- osx_image: xcode10.3\n    #  xcode_scheme: MagicalRecord for iOS\n    #  xcode_destination: platform=iOS Simulator,OS=9.3,name=iPhone 6s Plus\n    #  env: DEVICE=\"iPhone 6s Plus (9.3)\"\n    #- osx_image: xcode10.3\n    #  xcode_scheme: libMagicalRecord for iOS\n    #  xcode_destination: platform=iOS Simulator,OS=9.3,name=iPhone 6s Plus\n    #  env: DEVICE=\"iPhone 6s Plus (9.3)\"\n    - osx_image: xcode10.1\n      xcode_scheme: MagicalRecord for iOS\n      xcode_destination: platform=iOS Simulator,OS=8.1,name=iPhone 4s\n      env: DEVICE=\"iPhone 4s (8.1)\"\n    - osx_image: xcode10.1\n      xcode_scheme: libMagicalRecord for iOS\n      xcode_destination: platform=iOS Simulator,OS=8.1,name=iPhone 4s\n      env: DEVICE=\"iPhone 4s (8.1)\"\n    - osx_image: xcode11.1\n      xcode_scheme: MagicalRecord for OS X\n      xcode_destination: platform=macOS\n      env: DEVICE=\"OS X 10.15\"\n    - osx_image: xcode11.1\n      xcode_scheme: libMagicalRecord for OS X\n      xcode_destination: platform=macOS\n      env: DEVICE=\"OS X 10.15\"\n    #- osx_image: xcode10.3\n    #  xcode_scheme: MagicalRecord for OS X\n    #  xcode_destination: platform=macOS\n    #  env: DEVICE=\"OS X 10.14\"\n    #- osx_image: xcode10.3\n    #  xcode_scheme: libMagicalRecord for OS X\n    #  xcode_destination: platform=macOS\n    #  env: DEVICE=\"OS X 10.14\"\n    #- osx_image: xcode9.4\n    #  xcode_scheme: MagicalRecord for OS X\n    #  xcode_destination: platform=macOS\n    #  env: DEVICE=\"OS X 10.13\"\n    #- osx_image: xcode9.4\n    #  xcode_scheme: libMagicalRecord for OS X\n    #  xcode_destination: platform=macOS\n    #  env: DEVICE=\"OS X 10.13\"\n    #- osx_image: xcode8.3\n    #  xcode_scheme: MagicalRecord for OS X\n    #  xcode_destination: platform=macOS\n    #  env: DEVICE=\"OS X 10.12\"\n    #- osx_image: xcode8.3\n    #  xcode_scheme: libMagicalRecord for OS X\n    #  xcode_destination: platform=macOS\n    #  env: DEVICE=\"OS X 10.12\"\n    - osx_image: xcode7.3\n      xcode_scheme: MagicalRecord for OS X\n      xcode_destination: platform=OS X\n      env: DEVICE=\"OS X 10.11\"\n    - osx_image: xcode7.3\n      xcode_scheme: libMagicalRecord for OS X\n      xcode_destination: platform=OS X\n      env: DEVICE=\"OS X 10.11\"\n    - osx_image: xcode11.1\n      xcode_scheme: MagicalRecord for tvOS\n      xcode_destination: platform=tvOS Simulator,OS=13.0,name=Apple TV 4K (at 1080p)\n      env: DEVICE=\"Apple TV 4K (at 1080p) (13.0)\"\n    - osx_image: xcode11.1\n      xcode_scheme: libMagicalRecord for tvOS\n      xcode_destination: platform=tvOS Simulator,OS=13.0,name=Apple TV 4K (at 1080p)\n      env: DEVICE=\"Apple TV 4K (at 1080p) (13.0)\"\n    # Xcode 7.3 gives \"Platform 'appletvos' is not yet supported.\", so we use Xcode 8.0 as minimal requirement\n    - osx_image: xcode8.0\n      xcode_scheme: MagicalRecord for tvOS\n      xcode_destination: platform=tvOS Simulator,OS=9.0,name=Apple TV 1080p\n      env: DEVICE=\"Apple TV 1080p (9.0)\"\n    # Xcode 7.3 gives \"Platform 'appletvos' is not yet supported.\", so we use Xcode 8.0 as minimal requirement\n    - osx_image: xcode8.0\n      xcode_scheme: libMagicalRecord for tvOS\n      xcode_destination: platform=tvOS Simulator,OS=9.0,name=Apple TV 1080p\n      env: DEVICE=\"Apple TV 1080p (9.0)\"\n\nenv:\n  global:\n  - FRAMEWORK_NAME=MagicalRecord\n  - secure: WIm8vwQHOrBPCkWGmV0YMV+k92Dva6ORd0hfi96UzGRC/FTghzrelvLmTzr5kJXCeStv5ZxCNCUvJZm8q4J4y+6UdMQu5FPnx4+EKoogC4quJV8H1pXlXmoetITQdK7t2ldRH1EOuELdmpx2g5hydinu5Z5KMHb0vgLqtn9PvAc=\n# before_script:\n# - carthage bootstrap\nbefore_deploy:\n- carthage build --no-skip-current\n- carthage archive $FRAMEWORK_NAME\ndeploy:\n  provider: script\n  script: ./Support/Scripts/push_podspec.sh\n  on:\n    repo: magicalpanda/MagicalRecord\n    tags: true\ndeploy:\n  provider: releases\n  api_key:\n    secure: 1exCONwRvGbV+hi1N4n1VSbqJYpOaJW9zloj17Lxx14dQCyv7p2cSwB79A3RVOifJQg9pgC7eeyn4njKaIB9SZiDznhAiUlvFhNcuOdVrwmjqyxiYFByXNr4f0GVa7opIn9s/WDqGW8qQUQSOdoql5U9B/n5Mt86Jt5cws1BoYE=\n  file: \"$FRAMEWORK_NAME.framework.zip\"\n  skip_cleanup: true\n  on:\n    repo: magicalpanda/MagicalRecord\n    tags: true\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Changelog\n\n## Version 2.4.0\n* Adding tvOS support (Cœur, #1362)\n* Adding watchOS support, CocoaPods only (Cœur, #1363)\n* Updating CocoaLumberjack for 3.x support (LaurentiuUngur, #1352)\n* Fix date format parsing when local isn't US (Cœur, #964)\n* Importing 'NSNull' for relationship sets its value to 'nil' instead of ignoring it. (burczyk, #1194)\n* Fix honouring multiple sort flags (deanWombourne, #1251)\n* CGFloat precision for `MR_colorFromString()` (Cœur, #1324)\n* To allow custom options like Data Protection level on the Core Data store files, we expose `MR_coordinatorWithSqliteStoreNamed:withOptions:` and `MR_coordinatorWithAutoMigratingSqliteStoreNamed:withOptions:` (leslie-lei, #1185)\n* Documentation in Swift (ssuhanov, #1295)\n* Removed obsolete expecta matchers for tests (Cœur)\n* Fixed and improved CI tests (Cœur)\n\n## Version 2.3.2\nThis release fixes an issue where the OS X framework was being built with instrumentation data, and included in the binary builds posted to GitHub. It contains no other fixes over MagicalRecord v2.3.1.\n\n## Version 2.3.1\n- CocoaPods users who want to use:\n    - Shorthand method aliases should add `pod 'MagicalRecord/ShorthandMethodAliases'` to their Podfile, and run `pod update`\n    - CocoaLumberjack should add `pod 'MagicalRecord/CocoaLumberjack'` to their Podfile, and run `pod update`\n- Fixed a Core Data multithreading violation when setting a context's working name\n- Fixed the check for whether `NSPersistentStoreUbiquitousContentNameKey` is valid when using iCloud containers\n- Attempting to delete a `nil` managed object, or a managed object not present in the context will do nothing (previously it crashed)\n- Add a fix for CocoaLumberjack reporting duplicate definitions of LOG_MAYBE\n- Added error logging when the passed value for `relatedByAttribute` is invalid during a relationship import\n- Added more lightweight generics and nullability annotations\n\n## Version 2.3\n* Dynamic framework targets are provided for both OS X 10.8+ and iOS 8.0+\n* Logging is enabled by default, change the logging level using `+[MagicalRecord setLoggingLevel: MagicalRecordLogLevelOff];` — [see the documentation in the wiki](https://github.com/magicalpanda/MagicalRecord/wiki/Logging)\n* CocoaLumberjack 2.0 support\n* Enabling shorthand category method names can now be done by importing:\n    \n    ```objective-c\n    #import <MagicalRecord/MagicalRecord.h>\n    #import <MagicalRecord/MagicalRecord+ShorthandMethods.h>\n    #import <MagicalRecord/MagicalRecordShorthandMethodAliases.h>\n    ```\n    Then calling `+[MagicalRecord enableShorthandMethods]`.  \n    [See the documentation in the wiki](https://github.com/magicalpanda/MagicalRecord/wiki/Installing-MagicalRecord#shorthand-category-methods).\n    \n* Support for running with Core Data's concurrency debugging checks enabled\n* Many, many, many, many fixes to reported issues\n\n## Version 2.2\n* Updated examples and fixed errors in README - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Changes block saves to use child context of rootSavingContext so that large saves do not channel through the default context and block the main thread - r-peck\n* Using contextDidSave notifications to perform merges - r-peck\n* Included CoreDataRecipies sample application updated to use Magical Record - [Saul Mora](mailto:saul@magicalpanda.com)\n\n## Version 2.1.0\n* Fixed issue #287 - MR_findByAttribute:withValue:andOrderBy:ascending:inContext does not pass context through `4b97d0e` - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Adding changelog `da70884` - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Cleanup contextWillSave method Update deleting incompatible store `2eaec27` - [Saul Mora](mailto:saul@magicalpanda.com)\n* don't check the error, rely only on the return value of methods to determine success `64a81c6` - [Saul Mora](mailto:saul@magicalpanda.com)\n* removed MR_saveErrorHandler, as it and MR_saveWithErrorCallback were essentially duplicates MR_save now only saves the current context (it was essentially doing a MR_saveNestedContexts). If you need to save all the way out to disk, use MR_saveNestedContexts. Removed the action queue, unnecessary since core data introduced it's own queue support `f7c4350` - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Separate printing context chain method into its own method change contextWorkingName to property workingName `0fb7d36` - [Saul Mora](mailto:saul@magicalpanda.com)\n* Added fetchAllWithDelegate: method for NSFRC `c0a1657` - [Saul Mora](mailto:saul@magicalpanda.com)\n* Fixed Issue #294 - MR_requestAllSortedBy:ascending:inContext: did not use correct context `3656e74` - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Bumping podspec version `fb81b5b` - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Updating changelog `20f02ba` - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Re-Added obtaining permanent ids automatically `cfccd40` - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Minor formatting updates `1440623` - [Saul Mora](mailto:saul@magicalpanda.com)\n* Pass errorCallback through convenience method `5376700` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Implement new save methods `4f35e4e` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Update existing save tests to reflect save changes. Also begin adding tests for deprecated methods to ensure consistent behaviour in unmodified code. `c763d4a` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Fix compilation problems under latest Xcode. `af84aff` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Update gitignore and remove user specific xcuserdata `d0e771d` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Add Kiwi for saner asynchronous testing and remove existing GHUnit tests for save methods `55af799` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Flesh out tests for MagicalRecord+Actions and the NSManagedObjectContext+MagicalSaves category `a28d421` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* The deprecated saveWithBlock: method should do it's work on the current thread `2c66056` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* All deprecated and non-deprecated methods have tests to ensure their function `c2fa8c4` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Update README with details of the changes in this branch `4316422` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Update shorthand methods and import the magical saves category so that MRSaveCompletionHandler resolves `1af1201` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Updated podspec to 2.1.beta.1 `5ed45f6` - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Minor text editing. `710d643` - [nerdery-isaac](mailto:isaac.greenspan@nerdery.com)\n* Added additional case that will trigger persistent store cleanup `36d1630` - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Alter saveWithBlock: so that it runs asynchronously. Fixes #349. `357b62e` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Execute save completion blocks on the main dispatch queue. `065352d` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Fix broken GHUnit tests after recent changes to the save methods `0c83121` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Add Clang-style documentation for the MagicalSaves category. Also add Clang's -Wdocumentation warning to assist in writing in future documentation. `eb8865a` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Remove unused notification constant `5a40bcc` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Finalise documentation for MagicalRecord 2.1.0 `f370cdb` - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Update pod spec to MagicalRecord 2.1.0 `46b6004` - [Tony Arnold](mailto:tony@thecocoabots.com)\n\n## Version 2.0.8\n* Fixed issue #287 - MR_findByAttribute:withValue:andOrderBy:ascending:inContext does not pass context through `4b97d0e` - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Adding changelog `da70884` - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Cleanup contextWillSave method Update deleting incompatible store `2eaec27` - [Saul Mora](mailto:saul@magicalpanda.com)\n* don't check the error, rely only on the return value of methods to determine success `64a81c6` - [Saul Mora](mailto:saul@magicalpanda.com)\n* removed MR_saveErrorHandler, as it and MR_saveWithErrorCallback were essentially duplicates MR_save now only saves the current context (it was essentially do\n* Separate printing context chain method into its own method change contextWorkingName to property workingName `0fb7d36` - [Saul Mora](mailto:saul@magicalpanda\n* Added fetchAllWithDelegate: method for NSFRC `c0a1657` - [Saul Mora](mailto:saul@magicalpanda.com)\n* Fixed Issue #294 - MR_requestAllSortedBy:ascending:inContext: did not use correct context `3656e74` - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Bumping podspec version `fb81b5b` - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n\n## Version 2.0.7\n* Fix small error in README with regard to MR_SHORTHAND - [Maik Gosenshuis](mailto:maik@gosenshuis.nl)\n* Hide intended private cleanUpErrorHandling method - [Saul Mora](mailto:saul@magicalpanda.com)\n* Call completion handler on main thread. - [Brandon Williams](mailto:brandon@opetopic.com)\n* Persist changes to disk when using: - [NSManagedObjectContext MR_saveInBackgroundErrorHandler:completion:] methods, AND the context is the default context - [MagicalRecord saveInBackground…] methods - [Saul Mora](mailto:saul@magicalpanda.com)\n* [NSManagedObjectContext MR_saveInBackgroundErrorHandler:completion:] - [Jwie](mailto:joey.daman@twoup.eu)\n* [NSManagedObjectContext MR_saveInBackgroundErrorHandler:completion:] - [Jwie](mailto:joey.daman@twoup.eu)\n* update - [Peter Paulis](mailto:peterpaulis@Admins- acBook-Air-2.local)\n* Correct typo - [Ryan Maxwell](mailto:ryanm@xwell.co.nz)\n* Update MR_SHORTHAND installation note to match main readme - [Ryan Maxwell](mailto:ryanm@xwell.co.nz)\n* Correct typo of \"persistent\" in method name  - m[Ryan Maxwell](mailto:ryanm@xwell.co.nz)\n* Make all requestAllSortedBy* methods consistent (allows sortTerms with commas) - [vguerci](mailto:vguerci@gmail.com)\n* dispatch_release is not needed by the <REDACTED> compiler - [Saul Mora](mailto:saul@magicalpanda.com)\n* Don't run completion block if non specified - [Saul Mora](mailto:saul@magicalpanda.com)\n* Make platform requirements more explicit - [Saul Mora](mailto:saul@magicalpanda.com)\n* Update MagicalRecord/Core/MagicalRecordShorthand.h - [Ryan Maxwell](mailto:ryanm@xwell.co.nz)\n* Added automatic store deletion if the store does not match the model - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Missed the configuration - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Updating readme with a short blurb - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Cleanup code is now debug-only - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Clarified the DEBUG only nature of the fix - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Making background save asynchronous and fix the callback not firing - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Added expecta matchers for tests - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Fixing formatting issues to match project style - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Fixed KVC relationship mapping bug. - [Joshua Greene](mailto:jrg.developer@gmail.com)\n* Fixed an issue with aggregate actions not being performed in the specified context - [Brian King](mailto:bking@agamatrix.com)\n* Adding an observer to check for icloud being setup after default context has been set. Should fix race condition in Issue #241 - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Updated test model to actually build - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Clean up comments - [Saul Mora](mailto:saul@magicalpanda.com)\n* Remove compile warnings - [Saul Mora](mailto:saul@magicalpanda.com)\n* Cleaning up iCloud setup observer code some - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Removes dispatch_release when iOS >= 6 || OSX >= 1080 - [Rod Wilhelmy](mailto:rwilhelmy@gmail.com)\n* Modifiying generateShorthand.rb to use user specified ruby - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Automatically obtain permanent IDs when saving the default context. This should fix several crashes the community is hitting - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Making all relevant contexts obtain a permanent id before saving - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Adding recommended journalling mode - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* fixup compiler warnings in Xcode 4.5 - [Saul Mora](mailto:saul@magicalpanda.com)\n* Fix compile warnings once and for all :/ - [Saul Mora](mailto:saul@magicalpanda.com)\n* refactor internal method names to match more general objects to traverse fix another compile warning - [Saul Mora](mailto:saul@magicalpanda.com)\n* - auto- igration options bug fix - [Alexander Belyavskiy](mailto:diejmon@me.com)\n* Don't adjust incoming NSDates for DST - [Saul Mora](mailto:saul@magicalpanda.com)\n* fix compile error with pragma option - [Saul Mora](mailto:saul@magicalpanda.com)\n* Add findFirstOrderedByAttribute:ascending:context: method for getting min/max values easier - [Saul Mora](mailto:saul@magicalpanda.com)\n* Bumping podspec to 2.0.4 - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Added new nestedContextSave method with completion handler - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Bumping podspec with bugfix - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Fixing rookie mistake :/ - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Require ARC in podspec (was compiling with retain/release in pod installations) - [Ryan Maxwell](mailto:ryanm@xwell.co.nz)\n* Bump tag to 2.0.6 - [Ryan Maxwell](mailto:ryanm@xwell.co.nz)\n* Properly removing existing on-save notifications before replacing the default or root contexts - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Fixing potential concurrency issue with creating the actionQueue - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Cherry picking changes that make the context description more... descriptive - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* Rolled back a commit that broke things if cleanup was used. It created the action_queue in a dispatch_once block, and never recreated it after a cleanup - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n* saveWithBlock was not saving parent contexts - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Test that the current thread saveWith method actually saves - [Tony Arnold](mailto:tony@thecocoabots.com)\n* Bumped podspec to 2.0.7 - [Stephen Vanterpool](mailto:stephen@vanterpool.net)\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "Thanks for contributing to this project!\n\nTo make the process as easy as possible, we've got a few guidelines that we'd appreciate you following:\n\n## Filing Issues\n\nBefore you file an issue, please ensure that:\n\n1. **It's a bug or a feature request** — if you're looking for help using MagicalRecord, please ask your question on [Stack Overflow](https://stackoverflow.com/). We monitor the [**MagicalRecord** tag](https://stackoverflow.com/questions/tagged/magicalrecord) so be sure to tag your question so that we see it\n1. **Search for an existing issue** — there's a good chance you're not the only one experiencing the problem you've come to tell us about\n2. **Include as much information as you can** — if we can't reproduce the problem you've filed, we can't fix it. Include crash logs, exception reports and code if you can.\n\n## We Prefer Pull Requests\n\nIf you know exactly how to implement the feature being suggested or fix the bug being reported, please open a pull request instead of an issue. Pull requests are easier than patches or inline code blocks for discussing and merging the changes. Please ensure that you include tests in the Pull Request — we use XCTest.\n\nIf you can't make the change yourself, please open an issue after making sure that one isn't already logged.\n\n## Contributing Code\n\nFork this repository, make some great changes (preferably in a branch named for the topic of the changes you're making) and send a pull request!\n\nAll code contributions should match our [coding conventions](https://github.com/magicalpanda/MagicalRecord/wiki/Coding-Conventions).\n\nThanks for reading the guidelines!\n"
  },
  {
    "path": "Docs/Creating-Entities.md",
    "content": "# Creating Entities\n\nTo create and insert a new instance of an Entity in the default context, you can use:\n\n```objective-c\n// Objective-C\nPerson *myPerson = [Person MR_createEntity];\n```\n\n```swift\n// Swift\nlet myPerson = Person.mr_createEntity()\n```\n\n\nTo create and insert an entity into specific context:\n\n```objective-c\n// Objective-C\nPerson *myPerson = [Person MR_createEntityInContext:otherContext];\n```\n\n```swift\n// Swift\nlet myPerson = Person.mr_createEntity(in: otherContext)\n```\n"
  },
  {
    "path": "Docs/Deleting-Entities.md",
    "content": "# Deleting Entities\n\nTo delete a single entity in the default context:\n\n```objective-c\n// Objective-C\n[myPerson MR_deleteEntity];\n```\n\n```swift\n// Swift\nmyPerson.mr_deleteEntity()\n```\n\n\nTo delete the entity from a specific context:\n\n```objective-c\n// Objective-C\n[myPerson MR_deleteEntityInContext:otherContext];\n```\n\n```swift\n// Swift\nmyPerson.mr_deleteEntity(in: otherContext)\n```\n\n\nTo truncate all entities from the default context:\n\n```objective-c\n// Objective-C\n[Person MR_truncateAll];\n```\n\n```swift\n// Swift\nPerson.mr_truncateAll()\n```\n\nTo truncate all entities in a specific context:\n\n```objective-c\n// Objective-C\n[Person MR_truncateAllInContext:otherContext];\n```\n\n```swift\n// Swift\nPerson.mr_truncateAll(in: otherContext)\n```\n"
  },
  {
    "path": "Docs/Fetching-Entities.md",
    "content": "# Fetching Entities\n\n#### Basic Finding\n\nMost methods in MagicalRecord return an `NSArray` of results.\n\nAs an example, if you have an entity named *Person* related to a *Department* entity (as seen in many of [Apple's Core Data examples](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html)), you can retrieve all of the *Person* entities from your persistent store using the following method:\n\n```objective-c\n// Objective-C\nNSArray *people = [Person MR_findAll];\n```\n\n```swift\n// Swift\nlet people = Person.mr_findAll()\n```\n\nTo return the same entities sorted by a specific attribute:\n\n```objective-c\n// Objective-C\nNSArray *peopleSorted = [Person MR_findAllSortedBy:@\"LastName\"\n                                         ascending:YES];\n```\n\n```swift\n// Swift\nlet peopleSorted = Person.mr_findAllSorted(by: \"LastName\", ascending: true)\n```\n\nTo return the entities sorted by multiple attributes:\n\n```objective-c\n// Objective-C\nNSArray *peopleSorted = [Person MR_findAllSortedBy:@\"LastName,FirstName\"\n                                         ascending:YES];\n```\n\n```swift\n// Swift\nlet peopleSorted = Person.mr_findAllSorted(by: \"LastName,FirstName\", ascending: true)\n```\n\nTo return the results sorted by multiple attributes with different values. If you don't provide a value for any attribute, it will default to whatever you've set in your model:\n\n```objective-c\n// Objective-C\nNSArray *peopleSorted = [Person MR_findAllSortedBy:@\"LastName:NO,FirstName\"\n                                         ascending:YES];\n\n// OR\n\nNSArray *peopleSorted = [Person MR_findAllSortedBy:@\"LastName,FirstName:YES\"\n                                         ascending:NO];\n```\n\n```swift\n// Swift\nlet peopleSorted = Person.mr_findAllSorted(by: \"LastName:NO,FirstName\", ascending: true)\n\n// OR\n\nlet peopleSorted = Person.mr_findAllSorted(by: \"LastName,FirstName:YES\", ascending: false)\n```\n\nIf you have a unique way of retrieving a single object from your data store (such as an identifier attribute), you can use the following method:\n\n```objective-c\n// Objective-C\nPerson *person = [Person MR_findFirstByAttribute:@\"FirstName\"\n                                       withValue:@\"Forrest\"];\n```\n\n```swift\n// Swift\nlet person = Person.mr_findFirst(byAttribute: \"FirstName\", withValue: \"Forrest\")\n```\n\n#### Advanced Finding\n\nIf you want to be more specific with your search, you can use a predicate:\n\n```objective-c\n// Objective-C\nNSPredicate *peopleFilter = [NSPredicate predicateWithFormat:@\"Department IN %@\", @[dept1, dept2]];\nNSArray *people = [Person MR_findAllWithPredicate:peopleFilter];\n```\n\n```swift\n// Swift\nlet peopleFilter = NSPredicate(format: \"Department IN %@\", [dept1, dept2])\nlet people = Person.mr_findAll(with: peopleFilter)\n```\n\n#### Returning an NSFetchRequest\n\n```objective-c\n// Objective-C\nNSPredicate *peopleFilter = [NSPredicate predicateWithFormat:@\"Department IN %@\", departments];\nNSFetchRequest *people = [Person MR_requestAllWithPredicate:peopleFilter];\n```\n\n```swift\n// Swift\nlet peopleFilter = NSPredicate(format: \"Department IN %@\", departments)\nlet people = Person.mr_requestAll(with: peopleFilter)\n```\n\nFor each of these single line calls, an `NSFetchRequest` and `NSSortDescriptor`s for any sorting criteria  are created.\n\n#### Customizing the Request\n\n```objective-c\n// Objective-C\nNSPredicate *peopleFilter = [NSPredicate predicateWithFormat:@\"Department IN %@\", departments];\n\nNSFetchRequest *peopleRequest = [Person MR_requestAllWithPredicate:peopleFilter];\n[peopleRequest setReturnsDistinctResults:NO];\n[peopleRequest setPropertiesToFetch:@[@\"FirstName\", @\"LastName\"]];\n\nNSArray *people = [Person MR_executeFetchRequest:peopleRequest];\n```\n\n```swift\n// Swift\nlet peopleFilter = NSPredicate(format: \"Department IN %@\", departments)\n\nlet peopleRequest = Person.mr_requestAll(with: peopleFilter)\npeopleRequest.returnsDistinctResults = false\npeopleRequest.propertiesToFetch = [\"FirstName\", \"LastName\"]\n\nlet people = Person.mr_executeFetchRequest(peopleRequest)\n```\n\n#### Find excluding subentities\n\nTo fetch all sorted, excluding subentities:\n\n```objective-c\n// Objective-C\nNSFetchRequest *peopleRequest = [Person MR_requestAllSortedBy:@\"LastName\" ascending:YES withPredicate:nil];\nNSFetchedResultsController *controller = [Person MR_fetchController:peopleRequest delegate:nil useFileCache:NO groupedBy:nil inContext:[NSManagedObjectContext MR_defaultContext]];\ncontroller.fetchRequest.includesSubentities = NO;\n[Person MR_performFetch:controller];\n\nNSArray *people = controller.fetchedObjects;\n```\n\n```swift\n// Swift\nlet peopleRequest = Person.mr_requestAllSorted(by: \"LastName\", ascending: true, with: nil)\nlet controller = Person.mr_fetchController(peopleRequest, delegate: nil, useFileCache: false, groupedBy: nil, in: NSManagedObjectContext.mr_default())\ncontroller.fetchRequest.includesSubentities = false\nPerson.mr_performFetch(controller)\n\nlet people = controller.fetchedObjects\n```\n\nNote: `MR_defaultContext`/`mr_default()` is for main thread. See `Working-with-Managed-Object-Contexts.md` for other contexts.\n\n#### Find the number of entities\n\nYou can also perform a count of all entities of a specific type in your persistent store:\n\n```objective-c\n// Objective-C\nNSNumber *count = [Person MR_numberOfEntities];\n```\n\n```swift\n// Swift\nlet count = Person.mr_numberOfEntities()\n```\n\nOr, if you're looking for a count of entities based on a predicate or some filter:\n\n```objective-c\n// Objective-C\nNSNumber *count = [Person MR_numberOfEntitiesWithPredicate:...];\n```\n\n```swift\n// Swift\nlet count = Person.mr_numberOfEntities(with: ...)\n```\n\nThere are also complementary methods which return `NSUInteger` (`UInt` in Swift) rather than `NSNumber` instances:\n\n```objective-c\n// Objective-C\n+ (NSUInteger) MR_countOfEntities;\n+ (NSUInteger) MR_countOfEntitiesWithContext:(NSManagedObjectContext *)context;\n+ (NSUInteger) MR_countOfEntitiesWithPredicate:(NSPredicate *)searchFilter;\n+ (NSUInteger) MR_countOfEntitiesWithPredicate:(NSPredicate *)searchFilter\n                                     inContext:(NSManagedObjectContext *)context;\n```\n\n```swift\n// Swift\nopen class func mr_countOfEntities() -> UInt\nopen class func mr_countOfEntities(with context: NSManagedObjectContext) -> UInt\nopen class func mr_countOfEntities(with searchFilter: NSPredicate?) -> UInt\nopen class func mr_countOfEntities(with searchFilter: NSPredicate?,\n                                   in context: NSManagedObjectContext) -> UInt\n```\n\n#### Aggregate Operations\n\n```objective-c\n// Objective-C\nNSNumber *totalCalories = [CTFoodDiaryEntry MR_aggregateOperation:@\"sum:\"\n                                                      onAttribute:@\"calories\"\n                                                    withPredicate:predicate];\n\nNSNumber *mostCalories  = [CTFoodDiaryEntry MR_aggregateOperation:@\"max:\"\n                                                      onAttribute:@\"calories\"\n                                                    withPredicate:predicate];\n\nNSArray *caloriesByMonth = [CTFoodDiaryEntry MR_aggregateOperation:@\"sum:\"\n                                                       onAttribute:@\"calories\"\n                                                     withPredicate:predicate\n                                                           groupBy:@\"month\"];\n```\n\n```swift\n// Swift\nlet totalCalories = CTFoodDiaryEntry.mr_aggregateOperation(\"sum:\",\n                                                           onAttribute: \"calories\",\n                                                           with: predicate)\n\nlet mostCalories = CTFoodDiaryEntry.mr_aggregateOperation(\"max:\",\n                                                          onAttribute: \"calories\",\n                                                          with: predicate)\n\nlet caloriesByMonth = CTFoodDiaryEntry.mr_aggregateOperation(\"sum:\",\n                                                             onAttribute: \"calories\",\n                                                             with: predicate,\n                                                             groupBy: \"month\")\n```\n\n#### Finding entities in a specific context\n\nAll find, fetch, and request methods have an `inContext:` method parameter that allows you to specify which managed object context you'd like to query:\n\n```objective-c\n// Objective-C\nNSArray *peopleFromAnotherContext = [Person MR_findAllInContext:someOtherContext];\n\nPerson *personFromContext = [Person MR_findFirstByAttribute:@\"lastName\"\n                                                  withValue:@\"Gump\"\n                                                  inContext:someOtherContext];\n\nNSUInteger count = [Person MR_numberOfEntitiesWithContext:someOtherContext];\n```\n\n```swift\n// Swift\nlet peopleFromAnotherContext = Person.mr_findAll(in: someOtherContext)\n\nlet personFromContext = Person.mr_findFirst(byAttribute: \"lastName\",\n                                            withValue: \"Gump\",\n                                            in: someOtherContext)\n\nlet count = Person.mr_numberOfEntities(with: someOtherContext)\n```\n"
  },
  {
    "path": "Docs/Getting-Started.md",
    "content": "To get started, import the `MagicalRecord.h` header file in your project's pch file. This will allow a global include of all the required headers.\n\nIf you're using CocoaPods or MagicalRecord.framework, your import should look like:\n\n```objective-c\n// Objective-C\n#import <MagicalRecord/MagicalRecord.h>\n```\n\n```swift\n// Swift\nimport MagicalRecord\n```\n\nOtherwise, if you've added MagicalRecord's source files directly to your Objective-C project, your import should be:\n\n```objective-c\n#import \"MagicalRecord.h\"\n```\n\nNext, somewhere in your app delegate, in either the `- applicationDidFinishLaunching: withOptions:` method, or `-awakeFromNib`, use **one** of the following setup calls with the **MagicalRecord** class:\n\n```objective-c\n// Objective-C\n+ (void)setupCoreDataStack;\n+ (void)setupAutoMigratingCoreDataStack;\n+ (void)setupCoreDataStackWithInMemoryStore;\n+ (void)setupCoreDataStackWithStoreNamed:(NSString *)storeName;\n+ (void)setupCoreDataStackWithAutoMigratingSqliteStoreNamed:(NSString *)storeName;\n+ (void)setupCoreDataStackWithStoreAtURL:(NSURL *)storeURL;\n+ (void)setupCoreDataStackWithAutoMigratingSqliteStoreAtURL:(NSURL *)storeURL;\n```\n\n```swift\n// Swift\nopen class func setupCoreDataStack()\nopen class func setupCoreDataStackWithInMemoryStore()\nopen class func setupAutoMigratingCoreDataStack()\nopen class func setupCoreDataStack(withStoreNamed storeName: String)\nopen class func setupCoreDataStack(withAutoMigratingSqliteStoreNamed storeName: String)\nopen class func setupCoreDataStackWithStore(at storeURL: URL)\nopen class func setupCoreDataStackWithAutoMigratingSqliteStore(at storeURL: URL)\n```\n\nEach call instantiates one of each piece of the Core Data stack, and provides getter and setter methods for these instances. These well known instances to MagicalRecord, and are recognized as \"defaults\".\n\nWhen using the default SQLite data store with the `DEBUG` flag set, changing your model without creating a new model version will cause MagicalRecord to delete the old store and create a new one automatically. This can be a huge time saver — no more needing to uninstall and reinstall your app every time you make a change your data model! **Please be sure not to ship your app with `DEBUG` enabled: Deleting your app's data without telling the user about it is really bad form!**\n\nBefore your app exits, you should call `+cleanUp` class method:\n\n```objective-c\n// Objective-C\n[MagicalRecord cleanUp];\n```\n\n```swift\n// Swift\nMagicalRecord.cleanUp()\n```\n\nThis tidies up after MagicalRecord, tearing down our custom error handling and setting all of the Core Data stack created by MagicalRecord to nil.\n\n## iCloud-enabled Persistent Stores\n\nTo take advantage of Apple's iCloud Core Data syncing, use **one** of the following setup methods in place of the standard methods listed in the previous section:\n\n```objective-c\n// Objective-C\n+ (void)setupCoreDataStackWithiCloudContainer:(NSString *)containerID\n                              localStoreNamed:(NSString *)localStore;\n\n+ (void)setupCoreDataStackWithiCloudContainer:(NSString *)containerID\n                               contentNameKey:(NSString *)contentNameKey\n                              localStoreNamed:(NSString *)localStoreName\n                      cloudStorePathComponent:(NSString *)pathSubcomponent;\n\n+ (void)setupCoreDataStackWithiCloudContainer:(NSString *)containerID\n                               contentNameKey:(NSString *)contentNameKey\n                              localStoreNamed:(NSString *)localStoreName\n                      cloudStorePathComponent:(NSString *)pathSubcomponent\n                                   completion:(void (^)(void))completion;\n\n+ (void)setupCoreDataStackWithiCloudContainer:(NSString *)containerID\n                              localStoreAtURL:(NSURL *)storeURL;\n\n+ (void)setupCoreDataStackWithiCloudContainer:(NSString *)containerID\n                               contentNameKey:(NSString *)contentNameKey\n                              localStoreAtURL:(NSURL *)storeURL\n                      cloudStorePathComponent:(NSString *)pathSubcomponent;\n\n+ (void)setupCoreDataStackWithiCloudContainer:(NSString *)containerID\n                               contentNameKey:(NSString *)contentNameKey\n                              localStoreAtURL:(NSURL *)storeURL\n                      cloudStorePathComponent:(NSString *)pathSubcomponent\n                                   completion:(void (^)(void))completion;\n```\n\n```swift\n// Swift\nopen class func setupCoreDataStackWithiCloudContainer(_ containerID: String,\n                                                      localStoreNamed localStore: String)\n\n\nopen class func setupCoreDataStackWithiCloudContainer(_ containerID: String,\n                                                      contentNameKey: String?,\n                                                      localStoreNamed localStoreName: String,\n                                                      cloudStorePathComponent pathSubcomponent: String?)\n\n\nopen class func setupCoreDataStackWithiCloudContainer(_ containerID: String,\n                                                      contentNameKey: String?,\n                                                      localStoreNamed localStoreName: String,\n                                                      cloudStorePathComponent pathSubcomponent: String?,\n                                                      completion: (() -> Swift.Void)? = nil)\n\n\nopen class func setupCoreDataStackWithiCloudContainer(_ containerID: String,\n                                                      localStoreAt storeURL: URL)\n\n\nopen class func setupCoreDataStackWithiCloudContainer(_ containerID: String,\n                                                      contentNameKey: String?,\n                                                      localStoreAt storeURL: URL,\n                                                      cloudStorePathComponent pathSubcomponent: String?)\n\n\nopen class func setupCoreDataStackWithiCloudContainer(_ containerID: String,\n                                                      contentNameKey: String?,\n                                                      localStoreAt storeURL: URL,\n                                                      cloudStorePathComponent pathSubcomponent: String?,\n                                                      completion: (() -> Swift.Void)? = nil)\n```\n\nFor further details, please refer to [Apple's \"iCloud Programming Guide for Core Data\"](https://developer.apple.com/library/archive/documentation/DataManagement/Conceptual/UsingCoreDataWithiCloudPG/Introduction/Introduction.html).\n\n\n### Notes\n\nIf you are managing multiple iCloud-enabled stores, we recommended that you use one of the longer setup methods that allows you to specify your own **contentNameKey**. The shorter setup methods automatically generate the **NSPersistentStoreUbiquitousContentNameKey** based on your app's bundle identifier (`CFBundleIdentifier`):\n"
  },
  {
    "path": "Docs/Importing-Data.md",
    "content": "# Importing Data\n\n> We're working on updating this documentation — thanks for your patience.\n> For the moment, please refer to [Importing Data Made Easy](http://www.cimgf.com/2012/05/29/importing-data-made-easy/) at [Cocoa Is My Girlfriend](http://www.cimgf.com/). Much of this document is based upon Saul's work in that original article.\n>\n> <cite>MagicalRecord Team</cite>\n\nMagicalRecord can help import data from standard NSObject instances such as NSArray and NSDictionary directly into your Core Data store.\n\nIt's a two step process to import data from an external source into your persistent store using MagicalRecord:\n\n1. **Define how the data you're importing maps to your store** using your data model (it's pretty much codeless!)\n2. **Perform the data import**\n\n\n## Define Your Import\n\nData from external sources can be wildly variable in quality and structure, so we've done our best to make MagicalRecord's import processes flexible.\n\n**MagicalRecord can import data from any Key-Value Coding (KVC) compliant object**. We usually find people work with `NSArray` and `NSDictionary` instances, but it works just fine with any KVC compliant `NSObject` subclass.\n\nMagicalRecord makes use of the Xcode data modeling tool's \"**User Info**\" values to allow configuration of import options and mappings possible without having to edit any code.\n\n<p align=\"center\">\n<img src=\"https://cl.ly/image/1e333E3W2Y3E/datamodeller_userinfogroup.png\" alt=\"Xcode's 'User Info' group in the data modeller\" width=\"324\" height=\"374\" style=\"margin: 0 auto;\" />\n</p>\n\n> **For reference**: The user info keys and values are held in an NSDictionary that is attached to every entity, attribute and relationship in your data model, and can be accessed via the `userInfo` method on your `NSEntityDescription` instances.\n\nXcode's data modelling tools give you access to this dictionary via the Data Model Inspector's \"User Info\" group. When editing a data model, you can open this inspector using Xcode's menus — **View > Utilities > Show Data Model Inspector**, or press <kbd>⌥⌘3</kbd> on your keyboard.\n\nBy default, MagicalRecord will automatically try to match attribute and relationship names with the keys in your imported data. **If an attribute or relationship name in your model matches a key in your data, you don't need to do anything — the value attached to the key will be imported automatically**.\n\nFor example, if an attribute on an entity has the name 'firstName', MagicalRecord will assume the key in the data to import will also have a key of 'firstName' — if it does, your entity's `firstName` attribute will be set to the value of the `firstName` key in your data.\n\nMore often than not, the keys and structure in the data you are importing will not match your entity's attributes and relationships. In this case, you will need to tell MagicalRecord how to map your import data's keys to the correct attribute or relationship in your data model.\n\n\nEach of the three key objects we deal with in Core Data — Entities, Attributes and Relationships — have options that may need to be specified via user info keys:\n\n### Attributes\n\n| Key | Type | Purpose |\n|-----|------|---------|\n| **attributeValueClassName** | String | TBD |\n| **dateFormat** | String | TBD. Defaults to `yyyy-MM-dd'T'HH:mm:ssz`. |\n| **mappedKeyName**       | String | Specifies the name of the keypath in your data to import the value from. Supports keypaths, delimited by `.`, eg. `location.latitude` |\n| **mappedKeyName.[0-9]** | String | Specifies backup keypath names if the key specified by **mappedKeyName** doesn't exist. Supports the same syntax. |\n| **useDefaultValueWhenNotPresent** | Boolean | If this is true, the default value for the attribute will be set on the imported instance if no value is found for any key. |\n\n### Entities\n\n| Key | Type | Purpose |\n|-----|------|---------|\n| **relatedByAttribute**  | String | Specifies the attribute in the target of the relationship that links the two. |\n\n### Relationships\n\n| Key | Type | Purpose |\n|-----|------|---------|\n| **mappedKeyName**       | String | Specifies the name of the keypath in your data to import the value from. Supports keypaths, delimited by `.`, eg. `location.latitude` |\n| **mappedKeyName.[0-9]** | String | Specifies backup keypath names if the key specified by **mappedKeyName** doesn't exist. Supports the same syntax. |\n| **relatedByAttribute**  | String | Specifies the attribute in the target of the relationship that links the two. |\n| **type** | String | TBD |\n\n\n## Importing Objects\n\nTo import data into your store using MagicalRecord, you need to know two things:\n\n1. The format of the data you're importing, and how it\n\nThe basic idea behind MagicalRecord's importing is that you know the entity the data should be imported into, so you then write a single line of code tying this entity with the data to import. There are a couple of options to kick off the import process.\n\nTo automatically create a new instance from the object, you can use the following, shorter approach:\n\n```objective-c\n// Objective-C\nNSDictionary *contactInfo = // Result from JSON parser or some other source\n\nPerson *importedPerson = [Person MR_importFromObject:contactInfo];\n```\n\n```swift\n// Swift\nlet contactInfo = // Dictionary from JSON parser or some other source\n\nlet importedPerson = Person.mr_import(from: contactInfo)\n```\n\nYou can also use a two-stage approach:\n\n```objective-c\n// Objective-C\nNSDictionary *contactInfo = // Result from JSON parser or some other source\n\nPerson *person = [Person MR_createEntity]; // This doesn't have to be a new entity\n[person MR_importValuesForKeysWithObject:contactInfo];\n```\n\n```swift\n// Swift\nlet contactInfo = // Dictionary from JSON parser or some other source\n\nif let person = Person.mr_createEntity() { // This doesn't have to be a new entity\n    person.mr_importValuesForKeys(with: contactInfo)\n}\n```\n\nThe two-stage approach can be helpful if you’re looking to update an existing object by overwriting its attributes.\n\n`+MR_importFromObject:` will look for an existing object based on the configured lookup value (see the _relatedByAttribute_ and _attributeNameID_). Also notice how this follows the built in paradigm of importing a list of key-value pairs in Cocoa, as well as following the safe way to import data.\n\nThe `+MR_importFromObject:` class method provides a wrapper around creating a new object using the previously mentioned `-MR_importValuesForKeysWithObject:` instance method, and returns the newly created object filled with data.\n\nA key item of note is that both these methods are synchronous. While some imports will take longer than others, it’s still highly advisable to perform *all imports* in the background so as to not impact user interaction. As previously discussed, MagicalRecord provides a handy API to make using background threads more manageable:\n\n```objective-c\n// Objective-C\n[MagicalRecord saveWithBlock:^(NSManagedObjectContext *)localContext {\n  Person *importedPerson = [Person MR_importFromObject:personRecord inContext:localContext];\n}];\n```\n\n```swift\n// Swift\nMagicalRecord.save({ (localContext) in\n    let importedPerson = Person.mr_import(from: personRecord, in: localContext)\n})\n```\n\n## Importing Arrays\n\nIt’s common for a list of data to be served using a JSON array, or you’re importing a large list of a single type of data. The details of importing such a list are taken care of in the `+MR_importFromArray:` class method.\n\n```objective-c\n// Objective-C\nNSArray *arrayOfPeopleData = /// result from JSON parser\nNSArray *people = [Person MR_importFromArray:arrayOfPeopleData];\n```\n\n```swift\n// Swift\nlet arrayOfPeopleData = /// result from JSON parser\nlet people = Person.mr_import(from: arrayOfPeopleData)\n```\n\nThis method, like `+MR_importFromObject:` is also synchronous, so for background importing, use the previously mentioned helper method for performing blocks in the background.\n\nIf your import data exactly matches your Core Data model, then read no further because the aforementioned methods are all you need to import your data into your Core Data store. However, if your data, like most, has little quirks and minor deviations, then read on, as we’ll walk through some of the features of MagicalRecord that will help you handle several commonly encountered deviations.\n\n\n## Best Practice\n\n### Handling Bad Data When Importing\n\nAPIs can often return data that has inconsistent formatting or values. The best way to handle this is to use the import category methods on your entity classes. There are three provided:\n\nMethod                          | Purpose\n--------------------------------|---------\n`- (BOOL) shouldImport:(id)data;`<br><br>`func shouldImport(_ data: Any) -> Bool` | Called before an data is imported. Use this to cancel importing data on a specific instance of an entity by returning `NO` (`false` in Swift).\n`- (void) willImport:(id)data;`<br><br>`func willImport(_ data: Any)` | Called immediately before data is imported.\n`- (void) didImport:(id)data;`<br><br>`func didImport(_ data: Any)` | Called immediately after data has been imported.\n\n\nGenerally, if your data is bad you'll want to fix what the import did after an attempt has been made to import any values.\n\nA common scenario is importing JSON data where numeric strings can often be misinterpreted as an actual number. If you want to ensure that a value is imported as a string, you could do the following:\n\n```objective-c\n// Objective-C\n\n@interface MyGreatEntity\n\n@property(readwrite, nonatomic, copy) NSString *identifier;\n\n@end\n\n@implementation MyGreatEntity\n\n@dynamic identifier;\n\n- (void)didImport:(id)data\n{\n  if (NO == [data isKindOfClass:[NSDictionary class]]) {\n    return;\n  }\n\n  NSDictionary *dataDictionary = (NSDictionary *)data;\n\n  id identifierValue = dataDictionary[@\"my_identifier\"];\n\n  if ([identifierValue isKindOfClass:[NSNumber class]]) {\n    NSNumber *numberValue = (NSNumber *)identifierValue;\n\n    self.identifier = [numberValue stringValue];\n  }\n}\n\n@end\n```\n\n```swift\n// Swift\nclass MyGreatEntity: NSManagedObject {\n\n    var identifier: String?\n\n    override func didImport(_ data: Any) {\n        guard let dataDictionary = data as? [String: AnyObject] else {\n            return\n        }\n\n        let identifierValue = dataDictionary[\"my_identifier\"]\n\n        if let numberValue = identifierValue as? NSNumber {\n            self.identifier = numberValue.stringValue\n        }\n    }\n\n}\n```\n\n### Deleting local records on import update\n\nSometimes you will want to make sure that subsequent import operations not only update but also delete local records that are not included as part of the remote dataset. To do this, fetch all local records not included in this update via their `relatedByAttribute` (`id` in the example below) and remove them immediately before importing the new dataset.\n\n```objective-c\n// Objective-C\nNSArray *arrayOfPeopleData = /// result from JSON parser\nNSArray *people = [Person MR_importFromArray:arrayOfPeopleData];\nNSArray *idList = [arrayOfPeopleData valueForKey:@\"id\"];\nNSPredicate *predicate = [NSPredicate predicateWithFormat:@\"NOT(id IN %@)\", idList];\n[Person MR_deleteAllMatchingPredicate:predicate];\n```\n\n```swift\n// Swift\nlet arrayOfPeopleData = /// result from JSON parser\nlet people = Person.mr_import(from: arrayOfPeopleData)\nlet idList = arrayOfPeopleData.map { $0.id }\nlet predicate = NSPredicate(format: \"NOT(id IN %@)\", idList)\nPerson.mr_deleteAll(matching: predicate)\n```\n\nIf you also want to make sure that related records are removed during this update, you can use similar logic as above but implement it in the `willImport:` method of `Person`\n\n```objective-c\n// Objective-C\n\n@implementation Person\n\n-(void)willImport:(id)data {\n    NSArray *idList = [data[@\"posts\"] valueForKey:@\"id\"];\n    NSPredicate *predicate = [NSPredicate predicateWithFormat:@\"NOT(id IN %@) AND person.id == %@\", idList, self.id];\n    [Post MR_deleteAllMatchingPredicate:predicate];\n}\n```\n\n```swift\n// Swift\nclass Person: NSManagedObject {\n\n    override func willImport(_ data: Any) {\n        if let data = data as? [String: AnyObject],\n            let dataPosts = data[\"posts\"] as? [Person] {\n            let idList = dataPosts.map { $0.id }\n            let predicate = NSPredicate(format: \"NOT(id IN %@) AND person.id == %@\", idList, self.id)\n            Post.mr_deleteAll(matching: predicate)\n        }\n    }\n\n}\n```\n\nSource: https://stackoverflow.com/a/24252825/401092\n"
  },
  {
    "path": "Docs/Installing-MagicalRecord.md",
    "content": "# Installing MagicalRecord\n\n**Adding MagicalRecord to your project is simple**: Just choose whichever method you're most comfortable with and follow the instructions below.\n\n## Using Carthage\n\n1. Add the following line to your `Cartfile`:\n\n    ```yaml\n    github \"MagicalPanda/MagicalRecord\"\n    ```\n\n2. Run `carthage update` in your project directory.\n3. Drag the appropriate `MagicalRecord.framework` for your platform (located in `Carthage/Build/``) into your application’s Xcode project, and add it to the appropriate target(s).\n\n\n## Using CocoaPods\n\nOne of the easiest ways to integrate MagicalRecord in your project is to use [CocoaPods](https://cocoapods.org/):\n\n1. Add the following line to your `Podfile`:\n\n    a. Plain\n\n    ````ruby\n    pod 'MagicalRecord', :git => 'https://github.com/magicalpanda/MagicalRecord'\n    ````\n    b. With CocoaLumberjack as Logger\n\n    ````ruby\n    pod 'MagicalRecord/CocoaLumberjack', :git => 'https://github.com/magicalpanda/MagicalRecord'\n    ````\n\n2. In your project directory, run `pod update`\n3. You should now be able to add `#import <MagicalRecord/MagicalRecord.h>` to any of your target's source files and begin using MagicalRecord!\n\n## Using an Xcode subproject\n\nXcode sub-projects allow your project to use and build MagicalRecord as an implicit dependency.\n\n1. Add MagicalRecord to your project as a Git submodule:\n\n    ````\n    $ cd MyXcodeProjectFolder\n    $ git submodule add https://github.com/magicalpanda/MagicalRecord.git Vendor/MagicalRecord\n    $ git commit -m \"Add MagicalRecord submodule\"\n    ````\n\n2. Drag `Vendor/MagicalRecord/MagicalRecord.xcproj` into your existing Xcode project\n3. Navigate to your project's settings, then select the target you wish to add MagicalRecord to\n4. Navigate to **Build Phases** and expand the **Link Binary With Libraries** section\n5. Click the **+** and find the version of the MagicalRecord framework appropriate to your target's platform\n6. You should now be able to add `#import <MagicalRecord/MagicalRecord.h>` to any of your target's source files and begin using MagicalRecord!\n\n> **Note** Please be aware that if you've set Xcode's **Link Frameworks Automatically** to **No** then you may need to add the CoreData.framework to your project on iOS, as UIKit does not include Core Data by default. On OS X, Cocoa includes Core Data.\n\n# Shorthand Category Methods\n\nBy default, all of the category methods that MagicalRecord provides are prefixed with `MR_`. This is inline with [Apple's recommendation not to create unadorned category methods to avoid naming clashes](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html#//apple_ref/doc/uid/TP40011210-CH6-SW4).\n\nIf you like, you can include the following headers to use shorter, non-prefixed category methods:\n\n```objective-c\n// Objective-C\n#import <MagicalRecord/MagicalRecord.h>\n#import <MagicalRecord/MagicalRecord+ShorthandMethods.h>\n#import <MagicalRecord/MagicalRecordShorthandMethodAliases.h>\n```\n\n```swift\n// Swift\nimport MagicalRecord\n```\n\nIf you're using Swift, you'll need to add these imports to your target's Objective-C bridging header.\n\nOnce you've included the headers, you should call the `+[MagicalRecord enableShorthandMethods]` class method _before_ you setup/use MagicalRecord:\n\n```objective-c\n// Objective-C\n- (void)theMethodWhereYouSetupMagicalRecord\n{\n    [MagicalRecord enableShorthandMethods];\n\n    // Setup MagicalRecord as per usual\n}\n```\n\n```swift\n// Swift\nfunc theMethodWhereYouSetupMagicalRecord() {\n    MagicalRecord.enableShorthandMethods()\n\n    // Setup MagicalRecord as per usual\n}\n```\n\n**Please note that we do not offer support for this feature**. If it doesn't work, [please file an issue](https://github.com/magicalpanda/MagicalRecord/issues/new) and we'll fix it when we can.\n"
  },
  {
    "path": "Docs/Logging.md",
    "content": "## Logging\n\nMagicalRecord has logging built in to most of its interactions with Core Data. When errors occur during fetching or saving data, these errors are captured and (if you've enabled them) logged to the console.\n\nLogging is configured to output debugging messages (**MagicalRecordLoggingLevelDebug**) by default in debug builds, and will output error messages (**MagicalRecordLoggingLevelError**) in release builds.\n\nLogging can be configured by calling `[MagicalRecord setLoggingLevel:];` using one of the predefined logging levels:\n\n- **MagicalRecordLogLevelOff**: Don't log anything\n- **MagicalRecordLoggingLevelError**: Log all errors\n- **MagicalRecordLoggingLevelWarn**: Log warnings and errors\n- **MagicalRecordLoggingLevelInfo**: Log informative, warning and error messages\n- **MagicalRecordLoggingLevelDebug**: Log all debug, informative, warning and error messages\n- **MagicalRecordLoggingLevelVerbose**: Log verbose diagnostic, informative, warning and error messages\n\nThe logging level defaults to `MagicalRecordLoggingLevelWarn`.\n\n## CocoaLumberjack\n\nIf it's available, MagicalRecord will direct its logs to [CocoaLumberjack](https://github.com/CocoaLumberjack/CocoaLumberjack). All you need to do is make sure you've imported CocoaLumberjack before you import MagicalRecord, like so:\n\n```objective-c\n// Objective-C\n#import <CocoaLumberjack/CocoaLumberjack.h>\n#import <MagicalRecord/MagicalRecord.h>\n```\n\n```swift\n// Swift\nimport CocoaLumberjack\nimport MagicalRecord\n```\n\n## Disabling Logging Completely\n\nFor most people this should be unnecessary. Setting the logging level to **MagicalRecordLogLevelOff** will ensure that no logs are printed.\n\nEven when using `MagicalRecordLogLevelOff`, a very quick check may be performed whenever a log call is made. If you absolutely need to disable the logging, you will need to define the following when compiling MagicalRecord:\n\n```objective-c\n#define MR_LOGGING_DISABLED 1\n```\n\nPlease note that this will only work if you've added MagicalRecord's source to your own project. You can also add this to the MagicalRecord project's `OTHER_CFLAGS` as `-DMR_LOGGING_DISABLED=1`.\n"
  },
  {
    "path": "Docs/Other-Resources.md",
    "content": "# Resources\n\nThe following articles highlight how to install and use aspects of MagicalRecord:\n\n* [How to make Programming with Core Data Pleasant](http://yannickloriot.com/2012/03/magicalrecord-how-to-make-programming-with-core-data-pleasant/)\n* [Using Core Data with MagicalRecord](https://web.archive.org/web/20120702085039/http://ablfx.com/blog/2012/03/using-coredata-magicalrecord/)\n* [Super Happy Easy Fetching in Core Data](http://www.cimgf.com/2011/03/13/super-happy-easy-fetching-in-core-data/)\n* [Core Data and Threads, without the Headache](http://www.cimgf.com/2011/05/04/core-data-and-threads-without-the-headache/)\n* [Unit Testing with Core Data](http://www.cimgf.com/2012/05/15/unit-testing-with-core-data/)\n* [Using MagicalRecord with Swift](https://www.raywenderlich.com/1696-getting-started-with-magicalrecord)\n"
  },
  {
    "path": "Docs/Saving-Entities.md",
    "content": "# Saving Entities\n\n## When should I save?\n\nIn general, your app should save to it's persistent store(s) when data changes. Some applications choose to save on application termination, however this shouldn't be necessary in most circumstances — in fact, **if you're only saving when your app terminates, you're risking data loss**! What happens if your app crashes? The user will lose all the changes they've made — that's a terrible experience, and easily avoided.\n\nIf you find that saving is taking a long time, there are a couple of things you should consider doing:\n\n1. **Save in a background thread**: MagicalRecord provides a simple, clean API for making changes to your entities and subsequently saving them in a background thread — for example:\n\t````objective-c\n\t// Objective-C\n\t[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {\n\n\t\t// Do your work to be saved here, against the `localContext` instance\n\t\t// Everything you do in this block will occur on a background thread\n\n\t} completion:^(BOOL success, NSError *error) {\n\t\t[application endBackgroundTask:bgTask];\n\t\tbgTask = UIBackgroundTaskInvalid;\n\t}];\n\t````\n\n\t````swift\n\t// Swift\n\tMagicalRecord.save({ (localContext) in\n\n\t\t// Do your work to be saved here, against the `localContext` instance\n\t\t// Everything you do in this block will occur on a background thread\n\n\t}) { (success, error) in\n\t\tapplication.endBackgroundTask(bgTask)\n\t\tbgTask = UIBackgroundTaskInvalid\n\t}\n\t````\n\n2. **Break the task down into smaller saves**: tasks like importing large amounts of data should always be broken down into smaller chunks. There's no one-size-fits all rule for how much data you should be saving in one go, so you'll need to measure your application's performance using a tool like Apple's Instruments and tune appropriately.\n\n\n## Handling Long-running Saves\n\n### On iOS\n\nWhen an application terminates on iOS, it is given a small window of opportunity to tidy up and save any data to disk. If you know that a save operation is likely to take a while, the best approach is to request an extension to your application's expiration, like so:\n\n````objective-c\n// Objective-C\nUIApplication *application = [UIApplication sharedApplication];\n\n__block UIBackgroundTaskIdentifier bgTask = [application beginBackgroundTaskWithExpirationHandler:^{\n    [application endBackgroundTask:bgTask];\n    bgTask = UIBackgroundTaskInvalid;\n}];\n\n[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {\n\n\t// Do your work to be saved here\n\n} completion:^(BOOL success, NSError *error) {\n\t[application endBackgroundTask:bgTask];\n\tbgTask = UIBackgroundTaskInvalid;\n}];\n````\n\n````swift\n// Swift\nlet application = UIApplication.shared\n\nvar bgTask = application.beginBackgroundTask {\n    application.endBackgroundTask(bgTask)\n    bgTask = UIBackgroundTaskInvalid\n}\n\nMagicalRecord.save({ (localContext) in\n\n\t// Do your work to be saved here\n\n}) { (success, error) in\n\tapplication.endBackgroundTask(bgTask)\n\tbgTask = UIBackgroundTaskInvalid\n}\n````\n\nBe sure to carefully [read the documentation for `beginBackgroundTaskWithExpirationHandler`](https://developer.apple.com/documentation/uikit/uiapplication/1623031-beginbackgroundtaskwithexpiratio), as inappropriately or unnecessarily extending your application's lifetime may earn your app a rejection from the App Store.\n\n### On OS X\n\nOn OS X Mavericks (10.9) and later, App Nap can cause your application to act as though it is effectively terminated when it is in the background. If you know that a save operation is likely to take a while, the best approach is to disable automatic and sudden termination temporarily (assuming that your app supports these features):\n\n````objective-c\n// Objective-C\nNSProcessInfo *processInfo = [NSProcessInfo processInfo];\n\n[processInfo disableSuddenTermination];\n[processInfo disableAutomaticTermination:@\"Application is currently saving to persistent store\"];\n\n[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {\n\n\t// Do your work to be saved here\n\n} completion:^(BOOL success, NSError *error) {\n\t[processInfo enableSuddenTermination];\n\t[processInfo enableAutomaticTermination:@\"Application has finished saving to the persistent store\"];\n}];\n````\n\n````swift\n// Swift\nlet processInfo = NSProcessInfo.processInfo()\n\nprocessInfo.disableSuddenTermination()\nprocessInfo.disableAutomaticTermination(\"Application is currently saving to persistent store\")\n\nMagicalRecord.save({ (localContext) in\n\n\t// Do your work to be saved here\n\n}) { (success, error) in\n\tprocessInfo.enableSuddenTermination()\n\tprocessInfo.enableAutomaticTermination(\"Application has finished saving to the persistent store\")\n}\n````\n\nAs with the iOS approach, be sure to [read the documentation on NSProcessInfo](https://developer.apple.com/documentation/foundation/nsprocessinfo) before implementing this approach in your app.\n\n---\n\n## Changes to saving in MagicalRecord 2.3.0\n\n### Context For Current Thread Deprecation\n\nIn earlier releases of MagicalRecord, we provided methods to retrieve the managed object context for the thread that the method was called on. Unfortunately, **it's not possible to return the context for the currently executing thread in a reliable manner** anymore. Grand Central Dispatch (GCD) makes no guarantees that a queue will be executed on a single thread, and our approach was based upon the older NSThread API while CoreData has transitioned to use GCD. For more details, please see Saul's post \"[Why contextForCurrentThread Doesn't Work in MagicalRecord](https://web.archive.org/web/20161024234224/http://saulmora.com/coredata/magicalrecord/2013/09/15/why-contextforcurrentthread-doesn-t-work-in-magicalrecord.html)\".\n\nIn MagicalRecord 2.3.0, we continue to use `+MR_contextForCurrentThread` internally in a few places to maintain compatibility with older releases. These methods are deprecated, and you will be warned if you use them.\n\nIn particular, **do not use `+MR_contextForCurrentThread` from within any of the `+[MagicalRecord saveWithBlock:…]` methods — the returned context may not be correct!**\n\nIf you'd like to begin preparing for the change now, please use the method variants that accept a \"context\" parameter, and use the context that's passed to you in the `+[MagicalRecord saveWithBlock:…]` method block. Instead of:\n\n```objective-c\n// Objective-C\n[MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext) {\n\tNSManagedObject *inserted = [SingleEntityWithNoRelationships MR_createEntity];\n\t// …\n}];\n```\n\n```swift\n// Swift\nMagicalRecord.save(blockAndWait: { (localContext) in\n\tlet inserted = SingleEntityWithNoRelationships.mr_createEntity()\n\t// …\n})\n```\n\nYou should now use:\n\n```objective-c\n// Objective-C\n[MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext) {\n\tNSManagedObject *inserted = [SingleEntityWithNoRelationships MR_createEntityInContext:localContext];\n\t// …\n}];\n```\n\n```swift\n// Swift\nMagicalRecord.save(blockAndWait: { (localContext) in\n\tlet inserted = SingleEntityWithNoRelationships.mr_createEntity(in: localContext)\n\t// …\n})\n```\n\n**When MagicalRecord 3.0 is released, the context for current thread methods will be removed entirely**. The methods that do not accept a \"context\" parameter will move to using the default context of the default stack — please see the MagicalRecord 3.0 release notes for more details.\n\n---\n\n## Changes to saving in MagicalRecord 2.2.0\n\nIn MagicalRecord 2.2, the APIs for saving were revised to behave more consistently, and also to follow naming patterns present in Core Data. Extensive work has gone into adding automated tests that ensure the save methods (both new and deprecated) continue to work as expected through future updates.\n\n`MR_save` has been temporarily restored to it's original state of running synchronously on the current thread, and saving to the persistent store. However, the __`MR_save` method is marked as deprecated and will be removed in the next major release of MagicalRecord (version 3.0)__. You should use `MR_saveToPersistentStoreAndWait` if you want the same behaviour in future versions of the library.\n\n### New Methods\nThe following methods have been added:\n\n#### NSManagedObjectContext+MagicalSaves\n- `- (void) MR_saveOnlySelfWithCompletion:(MRSaveCompletionHandler)completion;`\n- `- (void) MR_saveToPersistentStoreWithCompletion:(MRSaveCompletionHandler)completion;`\n- `- (void) MR_saveOnlySelfAndWait;`\n- `- (void) MR_saveToPersistentStoreAndWait;`\n- `- (void) MR_saveWithOptions:(MRSaveContextOptions)mask completion:(MRSaveCompletionHandler)completion;`\n\n#### __MagicalRecord+Actions__\n- `+ (void) saveWithBlock:(void(^)(NSManagedObjectContext *localContext))block;`\n- `+ (void) saveWithBlock:(void(^)(NSManagedObjectContext *localContext))block completion:(MRSaveCompletionHandler)completion;`\n- `+ (void) saveWithBlockAndWait:(void(^)(NSManagedObjectContext *localContext))block;`\n- `+ (void) saveUsingCurrentThreadContextWithBlock:(void (^)(NSManagedObjectContext *localContext))block completion:(MRSaveCompletionHandler)completion;`\n- `+ (void) saveUsingCurrentThreadContextWithBlockAndWait:(void (^)(NSManagedObjectContext *localContext))block;`\n\n### Deprecations\n\nThe following methods have been deprecated in favour of newer alternatives, and will be removed in MagicalRecord 3.0:\n\n#### NSManagedObjectContext+MagicalSaves\n- `- (void) MR_save;`\n- `- (void) MR_saveWithErrorCallback:(void(^)(NSError *error))errorCallback;`\n- `- (void) MR_saveInBackgroundCompletion:(void (^)(void))completion;`\n- `- (void) MR_saveInBackgroundErrorHandler:(void (^)(NSError *error))errorCallback;`\n- `- (void) MR_saveInBackgroundErrorHandler:(void (^)(NSError *error))errorCallback completion:(void (^)(void))completion;`\n- `- (void) MR_saveNestedContexts;`\n- `- (void) MR_saveNestedContextsErrorHandler:(void (^)(NSError *error))errorCallback;`\n- `- (void) MR_saveNestedContextsErrorHandler:(void (^)(NSError *error))errorCallback completion:(void (^)(void))completion;`\n\n### MagicalRecord+Actions\n- `+ (void) saveWithBlock:(void(^)(NSManagedObjectContext *localContext))block;`\n- `+ (void) saveInBackgroundWithBlock:(void(^)(NSManagedObjectContext *localContext))block;`\n- `+ (void) saveInBackgroundWithBlock:(void(^)(NSManagedObjectContext *localContext))block completion:(void(^)(void))completion;`\n- `+ (void) saveInBackgroundUsingCurrentContextWithBlock:(void (^)(NSManagedObjectContext *localContext))block completion:(void (^)(void))completion errorHandler:(void (^)(NSError *error))errorHandler;`\n"
  },
  {
    "path": "Docs/Threads.md",
    "content": "## Performing Core Data operations on Threads\n\nMagicalRecord also provides some handy methods to set up background context for use with threading. The background saving operations are inspired by the UIView animation block methods, with few minor differences:\n\n* The block in which you add your data saving code will never be on the main thread.\n* a single NSManagedObjectContext is provided for your operations.\n\nFor example, if we have Person entity, and we need to set the firstName and lastName fields, this is how you would use MagicalRecord to setup a background context for your use:\n\n```objective-c\n// Objective-C\nPerson *person; // Retrieve person entity\n[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {\n\n\tPerson *localPerson = [person MR_inContext:localContext];\n\n\tlocalPerson.firstName = @\"John\";\n\tlocalPerson.lastName = @\"Appleseed\";\n\n}];\n```\n\n```swift\n// Swift\nlet person = Person() // Retrieve person entity\nMagicalRecord.save({ (localContext) in\n\n\tif let localPerson = person.mr_(in: localContext) {\n\t\tlocalPerson.firstName = \"John\"\n\t\tlocalPerson.lastName = \"Appleseed\"\n\t}\n\n})\n```\n\nIn this method, the specified block provides you with the proper context in which to perform your operations, you don't need to worry about setting up the context so that it tells the Default Context that it's done, and should update because changes were performed on another thread.\n\nTo perform an action after this save block is completed, you can fill in a completion block:\n\n```objective-c\n// Objective-C\nPerson *person; // Retrieve person entity\n[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext){\n\n\tPerson *localPerson = [person MR_inContext:localContext];\n\n\tlocalPerson.firstName = @\"John\";\n\tlocalPerson.lastName = @\"Appleseed\";\n\n} completion:^(BOOL success, NSError *error) {\n\n\tself.everyoneInTheDepartment = [Person findAll];\n\n}];\n```\n\n```swift\n// Swift\nlet person = Person() // Retrieve person entity\nMagicalRecord.save({ (localContext) in\n\n\tif let localPerson = person.mr_(in: localContext) {\n\t\tlocalPerson.firstName = \"John\"\n\t\tlocalPerson.lastName = \"Appleseed\"\n\t}\n\n}) { (success, error) in\n\n\tself.everyoneInTheDepartment = Person.findAll()\n\t\n}\n```\n\nThis completion block is called on the main thread (queue), so this is also safe for triggering UI updates.\n\n### Perform blocks synchronously\n\nIf you want to have your code wait until the save block is done, use `[MagicalRecord saveWithBlockAndWait:]`.\n\n## Creating custom contexts\n\nIf you need to create a custom context, you can do so by using `[NSManagedObjectContext MR_context];`. This will return a new context of type `NSPrivateQueueConcurrencyType`, with the root saving context as it's parent.\n\nTo perform operations on the context's queue, use `[context performBlock:]` or `[context performBlockAndWait:]`.\n\nTo save the context, you can use one of the following:\n\n* `[context MR_saveOnlySelfWithCompletion:]` - Save asynchronously to self and it's parent, but not to the persistent store\n* `[context MR_saveToPersistentStoreWithCompletion:]` - Save asynchronously all the way down to the persistent store\n* `[context MR_saveOnlySelfAndWait]` - Save synchronously to self and it's parent, but not to the persistent store\n* `[context MR_saveToPersistentStoreAndWait]` - Save synchronously all the way down to the persistent store\n\n## Debugging Core Data threading-related issues\nYou can enable core data threading assertions by adding `-com.apple.CoreData.ConcurrencyDebug 1` to your scheme's launch parameters. This will stop your app and open the debugger every time your app tries to do a context operation on the wrong thread. This is very helpful, especially in finding bugs that are rare and hard to reproduce.\n\nMore info on this can be found in the \"225 - What's New in Core Data\" session from WWDC 2014.\n"
  },
  {
    "path": "Docs/Working-with-Managed-Object-Contexts.md",
    "content": "# Working with Managed Object Contexts\n\n## Creating New Contexts\n\nA variety of simple class methods are provided to help you create new contexts:\n\n- `+ [NSManagedObjectContext MR_context]`: Sets the default context as it's parent context. Has a concurrency type of **NSPrivateQueueConcurrencyType**.\n- `+ [NSManagedObjectContext MR_newMainQueueContext]`: Has a concurrency type of **NSMainQueueConcurrencyType**.\n- `+ [NSManagedObjectContext MR_newPrivateQueueContext]`: Has a concurrency type of **NSPrivateQueueConcurrencyType**.\n- `+ [NSManagedObjectContext MR_contextWithParent:…]`: Allows you to specify the parent context that will be set. Has a concurrency type of **NSPrivateQueueConcurrencyType**.\n- `+ [NSManagedObjectContext MR_contextWithStoreCoordinator:…]`: Allows you to specify the persistent store coordinator for the new context. Has a concurrency type of **NSPrivateQueueConcurrencyType**.\n\n## The Default Context\n\nWhen working with Core Data, you will regularly deal with two main objects: `NSManagedObject` and `NSManagedObjectContext`.\n\nMagicalRecord provides a simple class method to retrieve a default `NSManagedObjectContext` that can be used throughout your app. This context operates on the main thread, and is great for simple, single-threaded apps.\n\nTo access the default context, call:\n\n```objective-c\n// Objective-C\nNSManagedObjectContext *defaultContext = [NSManagedObjectContext MR_defaultContext];\n```\n\n```swift\n// Swift\nlet defaultContext = NSManagedObjectContext.mr_default()\n```\n\nThis context will be used throughout MagicalRecord in any method that uses a context, but does not provide a specific managed object context parameter.\n\nIf you need to create a new managed object context for use in non-main threads, use the following method:\n\n```objective-c\n// Objective-C\nNSManagedObjectContext *myNewContext = [NSManagedObjectContext MR_context];\n```\n\n```swift\n// Swift\nlet myNewContext = NSManagedObjectContext.mr_()\n```\n\nThis will create a new managed object context which has the same object model and persistent store as the default context, but is safe for use on another thread. It automatically sets the default context as it's parent context.\n\nIf you'd like to make your `myNewContext` instance the default for all fetch requests, use the following class method:\n\n```objective-c\n// Objective-C\n[NSManagedObjectContext MR_initializeDefaultContextWithCoordinator:myNewContext.persistentStoreCoordinator];\n```\n\n```swift\n// Swift\nNSManagedObjectContext.mr_initializeDefaultContext(with: myNewContext.persistentStoreCoordinator!)\n```\n\n> **NOTE:** It is *highly* recommended that the default context is created and set on the main thread using a managed object context with a concurrency type of `NSMainQueueConcurrencyType`.\n\n\n## Performing Work on Background Threads\n\nMagicalRecord provides methods to set up and work with contexts for use in background threads. The background saving operations are inspired by the UIView animation block methods, with a few minor differences:\n\n* The block in which you make changes to your entities will never be executed on the main thread.\n* A single **NSManagedObjectContext** is provided for you within these blocks.\n\nFor example, if we have Person entity, and we need to set the firstName and lastName fields, this is how you would use MagicalRecord to setup a background context for your use:\n\n```objective-c\n// Objective-C\nPerson *person = ...;\n\n[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext){\n\n  Person *localPerson = [person MR_inContext:localContext];\n  localPerson.firstName = @\"John\";\n  localPerson.lastName = @\"Appleseed\";\n\n}];\n```\n\n```swift\n// Swift\nlet person = ...\n\nMagicalRecord.save({ (localContext) in\n\n\tif let localPerson = person.mr_(in: localContext) {\n\t\tlocalPerson.firstName = \"John\"\n\t\tlocalPerson.lastName = \"Appleseed\"\n\t}\n\n})\n```\n\nIn this method, the specified block provides you with the proper context in which to perform your operations, you don't need to worry about setting up the context so that it tells the Default Context that it's done, and should update because changes were performed on another thread.\n\nTo perform an action after this save block is completed, you can fill in a completion block:\n\n```objective-c\n// Objective-C\nPerson *person = ...;\n\n[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext){\n\n  Person *localPerson = [person MR_inContext:localContext];\n  localPerson.firstName = @\"John\";\n  localPerson.lastName = @\"Appleseed\";\n\n} completion:^(BOOL success, NSError *error) {\n\n  self.everyoneInTheDepartment = [Person findAll];\n\n}];\n```\n\n```swift\n// Swift\nlet person = ...\n\nMagicalRecord.save({ (localContext) in\n\n\tif let localPerson = person.mr_(in: localContext) {\n\t\tlocalPerson.firstName = \"John\"\n\t\tlocalPerson.lastName = \"Appleseed\"\n\t}\n\n}) { (success, error) in\n\n\tself.everyoneInTheDepartment = Person.findAll()\n\n}\n```\n\nThis completion block is called on the main thread (queue), so this is also safe for triggering UI updates.\n"
  },
  {
    "path": "LICENSE",
    "content": " Copyright (c) 2010-2015, Magical Panda Software, LLC\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation\n files (the \"Software\"), to deal in the Software without\n restriction, including without limitation the rights to use,\n copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the\n Software is furnished to do so, subject to the following\n conditions:\n \n * Link to the MagicalRecord Repository at https://github.com/magicalpanda/MagicalRecord in the credits section of your application\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n This software license is in accordance with the standard MIT License.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "MagicalRecord/Categories/DataImport/MagicalImportFunctions.h",
    "content": "//\n//  MagicalImportFunctions.h\n//  Magical Record\n//\n//  Created by Saul Mora on 3/7/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\nNSDate *  __MR_nonnull MR_adjustDateForDST(NSDate *__MR_nonnull date);\nNSDate * __MR_nonnull MR_dateFromString(NSString *__MR_nonnull value, NSString *__MR_nonnull format);\nNSDate * __MR_nonnull MR_dateFromNumber(NSNumber *__MR_nonnull value, BOOL milliseconds);\nNSNumber * __MR_nonnull MR_numberFromString(NSString *__MR_nonnull value);\nNSString * __MR_nonnull MR_attributeNameFromString(NSString *__MR_nonnull value);\nNSString * __MR_nonnull MR_primaryKeyNameFromString(NSString *__MR_nonnull value);\n\n#if TARGET_OS_IPHONE\n#import <UIKit/UIKit.h>\nUIColor * __MR_nullable MR_colorFromString(NSString *__MR_nonnull serializedColor);\n#else\n#import <AppKit/AppKit.h>\nNSColor * __MR_nullable MR_colorFromString(NSString *__MR_nonnull serializedColor);\n#endif\n\nNSInteger * __MR_nullable MR_newColorComponentsFromString(NSString *__MR_nonnull serializedColor);\n"
  },
  {
    "path": "MagicalRecord/Categories/DataImport/MagicalImportFunctions.m",
    "content": "//\n//  MagicalImportFunctions.m\n//  Magical Record\n//\n//  Created by Saul Mora on 3/7/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalImportFunctions.h\"\n\n\n#pragma mark - Data import helper functions\n\nNSString * MR_attributeNameFromString(NSString *value)\n{\n    NSString *firstCharacter = [[value substringToIndex:1] capitalizedString];\n    return [firstCharacter stringByAppendingString:[value substringFromIndex:1]];\n}\n\nNSString * MR_primaryKeyNameFromString(NSString *value)\n{\n    NSString *firstCharacter = [[value substringToIndex:1] lowercaseString];\n    return [firstCharacter stringByAppendingFormat:@\"%@ID\", [value substringFromIndex:1]];\n}\n\nNSDate * MR_adjustDateForDST(NSDate *date)\n{\n    NSTimeInterval dstOffset = [[NSTimeZone localTimeZone] daylightSavingTimeOffsetForDate:date];\n    NSDate *actualDate = [date dateByAddingTimeInterval:dstOffset];\n    \n    return actualDate;\n}\n\nNSDate * MR_dateFromString(NSString *value, NSString *format)\n{\n    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];\n    [formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];\n    [formatter setLocale:[NSLocale localeWithLocaleIdentifier:@\"en_US_POSIX\"]];\n    [formatter setDateFormat:format];\n    \n    NSDate *parsedDate = [formatter dateFromString:value];\n    \n    if (parsedDate == nil) {\n        // fallback to legacy behavior from MagicalRecord 2.3 and older\n        [formatter setLocale:[NSLocale currentLocale]];\n        parsedDate = [formatter dateFromString:value];\n    }\n    \n    return parsedDate;\n}\n\nNSDate * MR_dateFromNumber(NSNumber *value, BOOL milliseconds)\n{\n    NSTimeInterval timeInterval = [value doubleValue];\n    if (milliseconds) {\n        timeInterval = timeInterval / 1000.00;\n    }\n    return [NSDate dateWithTimeIntervalSince1970:timeInterval];\n}\n\nNSNumber * MR_numberFromString(NSString *value) {\n    return [NSNumber numberWithDouble:[value doubleValue]];\n}\n\nNSInteger* MR_newColorComponentsFromString(NSString *serializedColor)\n{\n    NSScanner *colorScanner = [NSScanner scannerWithString:serializedColor];\n    NSString *colorType;\n    [colorScanner scanUpToString:@\"(\" intoString:&colorType];\n    \n    NSInteger *componentValues = malloc(4 * sizeof(NSInteger));\n    if (componentValues == NULL)\n    {\n        return NULL;\n    }\n  \n    if ([colorType hasPrefix:@\"rgba\"])\n    {\n        NSCharacterSet *rgbaCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@\"(,)\"];\n        \n        NSInteger *componentValue = componentValues;\n        while (![colorScanner isAtEnd]) \n        {\n            [colorScanner scanCharactersFromSet:rgbaCharacterSet intoString:nil];\n            [colorScanner scanInteger:componentValue];\n            componentValue++;\n        }\n    }\n\n    return componentValues;\n}\n\n#if TARGET_OS_IPHONE\n\nUIColor * MR_colorFromString(NSString *serializedColor)\n{\n    NSInteger *componentValues = MR_newColorComponentsFromString(serializedColor);\n    if (componentValues == NULL)\n    {\n        return nil;\n    }\n    \n    UIColor *color = [UIColor colorWithRed:(componentValues[0] / (CGFloat)255.)\n                                     green:(componentValues[1] / (CGFloat)255.)\n                                      blue:(componentValues[2] / (CGFloat)255.)\n                                     alpha:componentValues[3]];\n    \n    free(componentValues);\n    return color;\n}\n\n#else\n\nNSColor * MR_colorFromString(NSString *serializedColor)\n{\n    NSInteger *componentValues = MR_newColorComponentsFromString(serializedColor);\n    if (componentValues == NULL)\n    {\n        return nil;\n    }\n    \n    NSColor *color = [NSColor colorWithDeviceRed:(componentValues[0] / (CGFloat)255.)\n                                           green:(componentValues[1] / (CGFloat)255.)\n                                            blue:(componentValues[2] / (CGFloat)255.)\n                                           alpha:componentValues[3]];\n    free(componentValues);\n    return color;\n}\n\n#endif\n"
  },
  {
    "path": "MagicalRecord/Categories/DataImport/NSAttributeDescription+MagicalDataImport.h",
    "content": "//\n//  NSAttributeDescription+MagicalDataImport.h\n//  Magical Record\n//\n//  Created by Saul Mora on 9/4/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface NSAttributeDescription (MagicalRecord_DataImport)\n\n- (MR_nullable NSString *) MR_primaryKey;\n- (MR_nullable id) MR_valueForKeyPath:(MR_nonnull NSString *)keyPath fromObjectData:(MR_nonnull id)objectData;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/DataImport/NSAttributeDescription+MagicalDataImport.m",
    "content": "//\n//  NSAttributeDescription+MagicalDataImport.m\n//  Magical Record\n//\n//  Created by Saul Mora on 9/4/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"NSAttributeDescription+MagicalDataImport.h\"\n#import \"NSManagedObject+MagicalDataImport.h\"\n#import \"MagicalImportFunctions.h\"\n\n@implementation NSAttributeDescription (MagicalRecord_DataImport)\n\n- (NSString *) MR_primaryKey\n{\n    return nil;\n}\n\n- (id) MR_valueForKeyPath:(NSString *)keyPath fromObjectData:(id)objectData\n{\n    id value = [objectData valueForKeyPath:keyPath];\n    \n    NSAttributeType attributeType = [self attributeType];\n    NSString *desiredAttributeType = [[self userInfo] objectForKey:kMagicalRecordImportAttributeValueClassNameKey];\n    if (desiredAttributeType) \n    {\n        if ([desiredAttributeType hasSuffix:@\"Color\"])\n        {\n            value = MR_colorFromString(value);\n        }\n    }\n    else \n    {\n        if (attributeType == NSDateAttributeType)\n        {\n            if (![value isKindOfClass:[NSDate class]]) \n            {\n                NSString *dateFormat = [[self userInfo] objectForKey:kMagicalRecordImportCustomDateFormatKey];\n                if ([value isKindOfClass:[NSNumber class]]) {\n                    value = MR_dateFromNumber(value, [dateFormat isEqualToString:kMagicalRecordImportUnixTimeString]);\n                }\n                else {\n                    value = MR_dateFromString([value description], dateFormat ?: kMagicalRecordImportDefaultDateFormatString);\n                }\n            }\n        }\n        else if (attributeType == NSInteger16AttributeType ||\n                 attributeType == NSInteger32AttributeType ||\n                 attributeType == NSInteger64AttributeType ||\n                 attributeType == NSDecimalAttributeType ||\n                 attributeType == NSDoubleAttributeType ||\n                 attributeType == NSFloatAttributeType) {\n            if (![value isKindOfClass:[NSNumber class]] && value != [NSNull null]) {\n                value = MR_numberFromString([value description]);\n            }\n        }\n        else if (attributeType == NSBooleanAttributeType) {\n            if (![value isKindOfClass:[NSNumber class]] && value != [NSNull null]) {\n            value = [NSNumber numberWithBool:[value boolValue]];\n            }\n        }\n        else if (attributeType == NSStringAttributeType) {\n            if (![value isKindOfClass:[NSString class]] && value != [NSNull null]) {\n                value = [value description];\n            }\n        }\n    }\n    \n    return value == [NSNull null] ? nil : value;   \n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/DataImport/NSEntityDescription+MagicalDataImport.h",
    "content": "//\n//  NSEntityDescription+MagicalDataImport.h\n//  Magical Record\n//\n//  Created by Saul Mora on 9/5/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface NSEntityDescription (MagicalRecord_DataImport)\n\n- (MR_nullable NSAttributeDescription *) MR_primaryAttributeToRelateBy;\n- (MR_nonnull NSManagedObject *) MR_createInstanceInContext:(MR_nonnull NSManagedObjectContext *)context;\n\n/**\n *\tSafely returns an attribute description for the given name, otherwise returns nil. In certain circumstances, the keys of the dictionary returned by `attributesByName` are not standard NSStrings and won't match using object subscripting or standard `objectForKey:` lookups.\n *\n *  There may be performance implications to using this method if your entity has hundreds or thousands of attributes.\n *\n *\t@param\tname\tName of the attribute description in the `attributesByName` dictionary on this instance\n *\n *\t@return\tThe attribute description for the given name, otherwise nil\n */\n- (MR_nullable NSAttributeDescription *) MR_attributeDescriptionForName:(MR_nonnull NSString *)name;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/DataImport/NSEntityDescription+MagicalDataImport.m",
    "content": "//\n//  NSEntityDescription+MagicalDataImport.m\n//  Magical Record\n//\n//  Created by Saul Mora on 9/5/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"NSEntityDescription+MagicalDataImport.h\"\n#import \"NSManagedObject+MagicalDataImport.h\"\n#import \"NSManagedObject+MagicalRecord.h\"\n#import \"MagicalImportFunctions.h\"\n#import \"MagicalRecordLogging.h\"\n\n@implementation NSEntityDescription (MagicalRecord_DataImport)\n\n- (NSAttributeDescription *) MR_primaryAttributeToRelateBy\n{\n    NSString *lookupKey = [[self userInfo] objectForKey:kMagicalRecordImportRelationshipLinkedByKey] ?: MR_primaryKeyNameFromString([self name]);\n    NSAttributeDescription *attributeDescription = [self MR_attributeDescriptionForName:lookupKey];\n\n    if (attributeDescription == nil)\n    {\n        MRLogError(\n            @\"Invalid value for key '%@' in '%@' entity. Remove this key or add attribute '%@'\\n\",\n            kMagicalRecordImportRelationshipLinkedByKey,\n            self.name,\n            lookupKey);\n    }\n\n    return attributeDescription;\n}\n\n- (NSManagedObject *) MR_createInstanceInContext:(NSManagedObjectContext *)context\n{\n    Class relatedClass = NSClassFromString([self managedObjectClassName]);\n    NSManagedObject *newInstance = [relatedClass MR_createEntityInContext:context];\n   \n    return newInstance;\n}\n\n- (NSAttributeDescription *) MR_attributeDescriptionForName:(NSString *)name\n{\n    __block NSAttributeDescription *attributeDescription;\n\n    NSDictionary *attributesByName = [self attributesByName];\n\n    if ([attributesByName count] == 0) {\n        return nil;\n    }\n\n    [attributesByName enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {\n        if ([key isEqualToString:name]) {\n            attributeDescription = obj;\n\n            *stop = YES;\n        }\n    }];\n\n    return attributeDescription;\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/DataImport/NSNumber+MagicalDataImport.h",
    "content": "//\n//  NSNumber+MagicalDataImport.h\n//  Magical Record\n//\n//  Created by Saul Mora on 9/4/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface NSNumber (MagicalRecord_DataImport)\n\n- (MR_nullable NSString *)MR_lookupKeyForAttribute:(MR_nonnull NSAttributeDescription *)attributeInfo;\n- (MR_nonnull id)MR_relatedValueForRelationship:(MR_nonnull NSRelationshipDescription *)relationshipInfo;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/DataImport/NSNumber+MagicalDataImport.m",
    "content": "//\n//  NSNumber+MagicalDataImport.m\n//  Magical Record\n//\n//  Created by Saul Mora on 9/4/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"NSNumber+MagicalDataImport.h\"\n\n@implementation NSNumber (MagicalRecord_DataImport)\n\n- (NSString *)MR_lookupKeyForAttribute:(NSAttributeDescription *)attributeInfo\n{\n    return nil;\n}\n\n- (id)MR_relatedValueForRelationship:(NSRelationshipDescription *)relationshipInfo\n{\n    return self;\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/DataImport/NSObject+MagicalDataImport.h",
    "content": "//\n//  NSDictionary+MagicalDataImport.h\n//  Magical Record\n//\n//  Created by Saul Mora on 9/4/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface NSObject (MagicalRecord_DataImport)\n\n- (MR_nullable NSString *) MR_lookupKeyForAttribute:(MR_nonnull NSAttributeDescription *)attributeInfo;\n- (MR_nullable id) MR_valueForAttribute:(MR_nonnull NSAttributeDescription *)attributeInfo;\n\n- (MR_nullable NSString *) MR_lookupKeyForRelationship:(MR_nonnull NSRelationshipDescription *)relationshipInfo;\n- (MR_nullable id) MR_relatedValueForRelationship:(MR_nonnull NSRelationshipDescription *)relationshipInfo;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/DataImport/NSObject+MagicalDataImport.m",
    "content": "//\n//  NSDictionary+MagicalDataImport.m\n//  Magical Record\n//\n//  Created by Saul Mora on 9/4/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"NSObject+MagicalDataImport.h\"\n#import \"NSAttributeDescription+MagicalDataImport.h\"\n#import \"NSEntityDescription+MagicalDataImport.h\"\n#import \"NSManagedObject+MagicalDataImport.h\"\n#import \"NSRelationshipDescription+MagicalDataImport.h\"\n#import \"MagicalRecordLogging.h\"\n\nNSUInteger const kMagicalRecordImportMaximumAttributeFailoverDepth = 10;\n\n\n@implementation NSObject (MagicalRecord_DataImport)\n\n- (NSString *) MR_lookupKeyForAttribute:(NSAttributeDescription *)attributeInfo\n{\n    NSString *attributeName = [attributeInfo name];\n    NSString *lookupKey = [[attributeInfo userInfo] objectForKey:kMagicalRecordImportAttributeKeyMapKey] ?: attributeName;\n    \n    id value = [self valueForKeyPath:lookupKey];\n    \n    for (NSUInteger i = 1; i < kMagicalRecordImportMaximumAttributeFailoverDepth && value == nil; i++)\n    {\n        attributeName = [NSString stringWithFormat:@\"%@.%lu\", kMagicalRecordImportAttributeKeyMapKey, (unsigned long)i];\n        lookupKey = [[attributeInfo userInfo] objectForKey:attributeName];\n        if (lookupKey == nil) \n        {\n            return nil;\n        }\n        value = [self valueForKeyPath:lookupKey];\n    }\n    \n    return value != nil ? lookupKey : nil;\n}\n\n- (id) MR_valueForAttribute:(NSAttributeDescription *)attributeInfo\n{\n    NSString *lookupKey = [self MR_lookupKeyForAttribute:attributeInfo];\n    return lookupKey ? [self valueForKeyPath:lookupKey] : nil;\n}\n\n- (NSString *) MR_lookupKeyForRelationship:(NSRelationshipDescription *)relationshipInfo\n{\n    NSEntityDescription *destinationEntity = [relationshipInfo destinationEntity];\n    if (destinationEntity == nil) \n    {\n        MRLogError(@\"Unable to find entity for type '%@'\", [self valueForKey:kMagicalRecordImportRelationshipTypeKey]);\n        return nil;\n    }\n    \n    NSString               *primaryKeyName      = [relationshipInfo MR_primaryKey];\n    NSAttributeDescription *primaryKeyAttribute = [destinationEntity MR_attributeDescriptionForName:primaryKeyName];\n    NSString               *lookupKey           = [self MR_lookupKeyForAttribute:primaryKeyAttribute] ?: [primaryKeyAttribute name];\n\n    return lookupKey;\n}\n\n- (id) MR_relatedValueForRelationship:(NSRelationshipDescription *)relationshipInfo\n{\n    NSString *lookupKey = [self MR_lookupKeyForRelationship:relationshipInfo];\n    return lookupKey ? [self valueForKeyPath:lookupKey] : nil;\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/DataImport/NSRelationshipDescription+MagicalDataImport.h",
    "content": "//\n//  NSRelationshipDescription+MagicalDataImport.h\n//  Magical Record\n//\n//  Created by Saul Mora on 9/4/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface NSRelationshipDescription (MagicalRecord_DataImport)\n\n- (MR_nonnull NSString *) MR_primaryKey;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/DataImport/NSRelationshipDescription+MagicalDataImport.m",
    "content": "//\n//  NSRelationshipDescription+MagicalDataImport.m\n//  Magical Record\n//\n//  Created by Saul Mora on 9/4/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"NSRelationshipDescription+MagicalDataImport.h\"\n#import \"NSManagedObject+MagicalDataImport.h\"\n#import \"MagicalImportFunctions.h\"\n\n@implementation NSRelationshipDescription (MagicalRecord_DataImport)\n\n- (NSString *) MR_primaryKey\n{\n    NSString *primaryKeyName = [[self userInfo] objectForKey:kMagicalRecordImportRelationshipLinkedByKey] ?: \n    MR_primaryKeyNameFromString([[self destinationEntity] name]);\n    \n    return primaryKeyName;\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/DataImport/NSString+MagicalDataImport.h",
    "content": "//\n//  NSString+MagicalDataImport.h\n//  Magical Record\n//\n//  Created by Saul Mora on 12/10/11.\n//  Copyright (c) 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface NSString (MagicalRecord_DataImport)\n\n- (MR_nonnull NSString *) MR_capitalizedFirstCharacterString;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/DataImport/NSString+MagicalDataImport.m",
    "content": "//\n//  NSString+MagicalDataImport.m\n//  Magical Record\n//\n//  Created by Saul Mora on 12/10/11.\n//  Copyright (c) 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"NSString+MagicalDataImport.h\"\n\n\n@implementation NSString (MagicalRecord_DataImport)\n\n- (NSString *) MR_capitalizedFirstCharacterString\n{\n    if ([self length] > 0)\n    {\n        NSString *firstChar = [[self substringToIndex:1] capitalizedString];\n        return [firstChar stringByAppendingString:[self substringFromIndex:1]];\n    }\n    return self;\n}\n\n- (id) MR_relatedValueForRelationship:(NSRelationshipDescription *)relationshipInfo\n{\n    return self;\n}\n\n- (NSString *) MR_lookupKeyForAttribute:(NSAttributeDescription *)attributeInfo\n{\n    return nil;\n}\n\n@end\n\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObject/NSManagedObject+MagicalAggregation.h",
    "content": "//\n//  NSManagedObject+MagicalAggregation.h\n//  Magical Record\n//\n//  Created by Saul Mora on 3/7/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface NSManagedObject (MagicalAggregation)\n\n+ (MR_nonnull NSNumber *) MR_numberOfEntities;\n+ (MR_nonnull NSNumber *) MR_numberOfEntitiesWithContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull NSNumber *) MR_numberOfEntitiesWithPredicate:(MR_nullable NSPredicate *)searchTerm;\n+ (MR_nonnull NSNumber *) MR_numberOfEntitiesWithPredicate:(MR_nullable NSPredicate *)searchTerm inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (NSUInteger) MR_countOfEntities;\n+ (NSUInteger) MR_countOfEntitiesWithContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (NSUInteger) MR_countOfEntitiesWithPredicate:(MR_nullable NSPredicate *)searchFilter;\n+ (NSUInteger) MR_countOfEntitiesWithPredicate:(MR_nullable NSPredicate *)searchFilter inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (BOOL) MR_hasAtLeastOneEntity;\n+ (BOOL) MR_hasAtLeastOneEntityInContext:(MR_nonnull NSManagedObjectContext *)context;\n\n- (MR_nullable id) MR_minValueFor:(MR_nonnull NSString *)property;\n- (MR_nullable id) MR_maxValueFor:(MR_nonnull NSString *)property;\n\n+ (MR_nullable id) MR_aggregateOperation:(MR_nonnull NSString *)function onAttribute:(MR_nonnull NSString *)attributeName withPredicate:(MR_nullable NSPredicate *)predicate inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable id) MR_aggregateOperation:(MR_nonnull NSString *)function onAttribute:(MR_nonnull NSString *)attributeName withPredicate:(MR_nullable NSPredicate *)predicate;\n\n/**\n *  Supports aggregating values using a key-value collection operator that can be grouped by an attribute.\n *  See https://developer.apple.com/library/ios/documentation/cocoa/conceptual/KeyValueCoding/Articles/CollectionOperators.html for a list of valid collection operators.\n *\n *  @since 2.3.0\n *\n *  @param collectionOperator   Collection operator\n *  @param attributeName        Entity attribute to apply the collection operator to\n *  @param predicate            Predicate to filter results\n *  @param groupingKeyPath      Key path to group results by\n *  @param context              Context to perform the request in\n *\n *  @return Results of the collection operator, filtered by the provided predicate and grouped by the provided key path\n */\n+ (MR_nullable NSArray *) MR_aggregateOperation:(MR_nonnull NSString *)collectionOperator onAttribute:(MR_nonnull NSString *)attributeName withPredicate:(MR_nullable NSPredicate *)predicate groupBy:(MR_nullable NSString*)groupingKeyPath inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n/**\n *  Supports aggregating values using a key-value collection operator that can be grouped by an attribute.\n *  See https://developer.apple.com/library/ios/documentation/cocoa/conceptual/KeyValueCoding/Articles/CollectionOperators.html for a list of valid collection operators.\n *\n *  This method is run against the default MagicalRecordStack's context.\n *\n *  @since 2.3.0\n *\n *  @param collectionOperator   Collection operator\n *  @param attributeName        Entity attribute to apply the collection operator to\n *  @param predicate            Predicate to filter results\n *  @param groupingKeyPath      Key path to group results by\n *\n *  @return Results of the collection operator, filtered by the provided predicate and grouped by the provided key path\n */\n+ (MR_nullable NSArray *) MR_aggregateOperation:(MR_nonnull NSString *)collectionOperator onAttribute:(MR_nonnull NSString *)attributeName withPredicate:(MR_nullable NSPredicate *)predicate groupBy:(MR_nullable NSString*)groupingKeyPath;\n\n- (MR_nullable instancetype) MR_objectWithMinValueFor:(MR_nonnull NSString *)property;\n- (MR_nullable instancetype) MR_objectWithMinValueFor:(MR_nonnull NSString *)property inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObject/NSManagedObject+MagicalAggregation.m",
    "content": "//\n//  NSManagedObject+MagicalAggregation.m\n//  Magical Record\n//\n//  Created by Saul Mora on 3/7/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"NSManagedObject+MagicalAggregation.h\"\n#import \"NSEntityDescription+MagicalDataImport.h\"\n#import \"NSManagedObjectContext+MagicalRecord.h\"\n#import \"NSManagedObjectContext+MagicalThreading.h\"\n#import \"NSManagedObject+MagicalRequests.h\"\n#import \"NSManagedObject+MagicalRecord.h\"\n#import \"NSManagedObject+MagicalFinders.h\"\n#import \"MagicalRecord+ErrorHandling.h\"\n\n@implementation NSManagedObject (MagicalAggregation)\n\n#pragma mark -\n#pragma mark Number of Entities\n\n+ (NSNumber *) MR_numberOfEntitiesWithContext:(NSManagedObjectContext *)context\n{\n\treturn [NSNumber numberWithUnsignedInteger:[self MR_countOfEntitiesWithContext:context]];\n}\n\n+ (NSNumber *) MR_numberOfEntities\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_numberOfEntitiesWithContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSNumber *) MR_numberOfEntitiesWithPredicate:(NSPredicate *)searchTerm inContext:(NSManagedObjectContext *)context\n{\n\treturn [NSNumber numberWithUnsignedInteger:[self MR_countOfEntitiesWithPredicate:searchTerm inContext:context]];\n}\n\n+ (NSNumber *) MR_numberOfEntitiesWithPredicate:(NSPredicate *)searchTerm\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_numberOfEntitiesWithPredicate:searchTerm\n                                        inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSUInteger) MR_countOfEntities\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_countOfEntitiesWithContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSUInteger) MR_countOfEntitiesWithContext:(NSManagedObjectContext *)context\n{\n    return [self MR_countOfEntitiesWithPredicate:nil inContext:context];\n}\n\n+ (NSUInteger) MR_countOfEntitiesWithPredicate:(NSPredicate *)searchFilter\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_countOfEntitiesWithPredicate:searchFilter inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSUInteger) MR_countOfEntitiesWithPredicate:(NSPredicate *)searchFilter inContext:(NSManagedObjectContext *)context\n{\n\tNSError *error = nil;\n\tNSFetchRequest *request = [self MR_createFetchRequestInContext:context];\n\n    if (searchFilter)\n    {\n        [request setPredicate:searchFilter];\n    }\n\t\n\tNSUInteger count = [context countForFetchRequest:request error:&error];\n\t[MagicalRecord handleErrors:error];\n    \n    return count;\n}\n\n+ (BOOL) MR_hasAtLeastOneEntity\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_hasAtLeastOneEntityInContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (BOOL) MR_hasAtLeastOneEntityInContext:(NSManagedObjectContext *)context\n{\n    return [[self MR_numberOfEntitiesWithContext:context] intValue] > 0;\n}\n\n- (id) MR_minValueFor:(NSString *)property\n{\n\tNSManagedObject *obj = [[self class] MR_findFirstByAttribute:property\n                                                       withValue:[NSString stringWithFormat:@\"min(%@)\", property]];\n\n\treturn [obj valueForKey:property];\n}\n\n- (id) MR_maxValueFor:(NSString *)property\n{\n\tNSManagedObject *obj = [[self class] MR_findFirstByAttribute:property\n                                                       withValue:[NSString stringWithFormat:@\"max(%@)\", property]];\n\n\treturn [obj valueForKey:property];\n}\n\n- (id) MR_objectWithMinValueFor:(NSString *)property inContext:(NSManagedObjectContext *)context\n{\n\tNSFetchRequest *request = [[self class] MR_createFetchRequestInContext:context];\n    \n\tNSPredicate *searchFor = [NSPredicate predicateWithFormat:@\"SELF = %@ AND %K = min(%@)\", self, property, property];\n\t[request setPredicate:searchFor];\n\t\n\treturn [[self class] MR_executeFetchRequestAndReturnFirstObject:request inContext:context];\n}\n\n- (id) MR_objectWithMinValueFor:(NSString *)property\n{\n\treturn [self MR_objectWithMinValueFor:property inContext:[self  managedObjectContext]];\n}\n\n+ (id) MR_aggregateOperation:(NSString *)function onAttribute:(NSString *)attributeName withPredicate:(NSPredicate *)predicate inContext:(NSManagedObjectContext *)context\n{\n    NSExpression *ex = [NSExpression expressionForFunction:function \n                                                 arguments:[NSArray arrayWithObject:[NSExpression expressionForKeyPath:attributeName]]];\n    \n    NSExpressionDescription *ed = [[NSExpressionDescription alloc] init];\n    [ed setName:@\"result\"];\n    [ed setExpression:ex];\n    \n    // determine the type of attribute, required to set the expression return type    \n    NSAttributeDescription *attributeDescription = [[self MR_entityDescriptionInContext:context] MR_attributeDescriptionForName:attributeName];\n    [ed setExpressionResultType:[attributeDescription attributeType]];    \n    NSArray *properties = [NSArray arrayWithObject:ed];\n    \n    NSFetchRequest *request = [self MR_requestAllWithPredicate:predicate inContext:context];\n    [request setPropertiesToFetch:properties];\n    [request setResultType:NSDictionaryResultType];    \n    \n    NSDictionary *resultsDictionary = [self MR_executeFetchRequestAndReturnFirstObject:request inContext:context];\n    \n    return [resultsDictionary objectForKey:@\"result\"];\n}\n\n+ (id) MR_aggregateOperation:(NSString *)function onAttribute:(NSString *)attributeName withPredicate:(NSPredicate *)predicate\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_aggregateOperation:function\n                           onAttribute:attributeName \n                         withPredicate:predicate\n                             inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSArray *) MR_aggregateOperation:(NSString *)collectionOperator onAttribute:(NSString *)attributeName withPredicate:(NSPredicate *)predicate groupBy:(NSString *)groupingKeyPath inContext:(NSManagedObjectContext *)context\n{\n    NSExpression *expression = [NSExpression expressionForFunction:collectionOperator arguments:[NSArray arrayWithObject:[NSExpression expressionForKeyPath:attributeName]]];\n\n    NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];\n\n    [expressionDescription setName:@\"result\"];\n    [expressionDescription setExpression:expression];\n\n    NSAttributeDescription *attributeDescription = [[[self MR_entityDescriptionInContext:context] attributesByName] objectForKey:attributeName];\n    [expressionDescription setExpressionResultType:[attributeDescription attributeType]];\n    NSArray *properties = @[groupingKeyPath, expressionDescription];\n\n    NSFetchRequest *fetchRequest = [self MR_requestAllWithPredicate:predicate inContext:context];\n    [fetchRequest setPropertiesToFetch:properties];\n    [fetchRequest setResultType:NSDictionaryResultType];\n    [fetchRequest setPropertiesToGroupBy:@[groupingKeyPath]];\n\n    NSArray *results = [self MR_executeFetchRequest:fetchRequest inContext:context];\n\n    return results;\n}\n\n+ (NSArray *) MR_aggregateOperation:(NSString *)collectionOperator onAttribute:(NSString *)attributeName withPredicate:(NSPredicate *)predicate groupBy:(NSString *)groupingKeyPath\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_aggregateOperation:collectionOperator\n                           onAttribute:attributeName\n                         withPredicate:predicate groupBy:groupingKeyPath\n                             inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObject/NSManagedObject+MagicalDataImport.h",
    "content": "//\n//  NSManagedObject+MagicalDataImport.h\n//\n//  Created by Saul Mora on 6/28/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordImportCustomDateFormatKey;\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordImportDefaultDateFormatString;\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordImportUnixTimeString;\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordImportAttributeKeyMapKey;\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordImportAttributeValueClassNameKey;\n\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordImportRelationshipMapKey;\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordImportRelationshipLinkedByKey;\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordImportRelationshipTypeKey;\n\n@protocol MagicalRecordDataImportProtocol <NSObject>\n\n@optional\n- (BOOL) shouldImport:(MR_nonnull id)data;\n- (void) willImport:(MR_nonnull id)data;\n- (void) didImport:(MR_nonnull id)data;\n\n@end\n\n@interface NSManagedObject (MagicalRecord_DataImport) <MagicalRecordDataImportProtocol>\n\n- (BOOL) MR_importValuesForKeysWithObject:(MR_nonnull id)objectData;\n\n+ (MR_nonnull instancetype) MR_importFromObject:(MR_nonnull id)data;\n+ (MR_nonnull instancetype) MR_importFromObject:(MR_nonnull id)data inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (MR_nonnull MR_NSArrayOfNSManagedObjects) MR_importFromArray:(MR_nonnull MR_GENERIC(NSArray, NSDictionary *) *)listOfObjectData;\n+ (MR_nonnull MR_NSArrayOfNSManagedObjects) MR_importFromArray:(MR_nonnull MR_GENERIC(NSArray, NSDictionary *) *)listOfObjectData inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObject/NSManagedObject+MagicalDataImport.m",
    "content": "//\n//  NSManagedObject+MagicalDataImport.m\n//\n//  Created by Saul Mora on 6/28/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"NSObject+MagicalDataImport.h\"\n#import \"NSAttributeDescription+MagicalDataImport.h\"\n#import \"NSEntityDescription+MagicalDataImport.h\"\n#import \"NSManagedObjectContext+MagicalThreading.h\"\n#import \"NSManagedObject+MagicalDataImport.h\"\n#import \"NSManagedObject+MagicalFinders.h\"\n#import \"NSManagedObject+MagicalRecord.h\"\n#import \"NSRelationshipDescription+MagicalDataImport.h\"\n#import \"NSString+MagicalDataImport.h\"\n#import \"MagicalImportFunctions.h\"\n#import \"MagicalRecordLogging.h\"\n#import <objc/runtime.h>\n\nNSString * const kMagicalRecordImportCustomDateFormatKey            = @\"dateFormat\";\nNSString * const kMagicalRecordImportDefaultDateFormatString        = @\"yyyy-MM-dd'T'HH:mm:ssz\";\nNSString * const kMagicalRecordImportUnixTimeString                 = @\"UnixTime\";\n\nNSString * const kMagicalRecordImportAttributeKeyMapKey             = @\"mappedKeyName\";\nNSString * const kMagicalRecordImportAttributeValueClassNameKey     = @\"attributeValueClassName\";\n\nNSString * const kMagicalRecordImportRelationshipMapKey             = @\"mappedKeyName\";\nNSString * const kMagicalRecordImportRelationshipLinkedByKey        = @\"relatedByAttribute\";\nNSString * const kMagicalRecordImportRelationshipTypeKey            = @\"type\";  //this needs to be revisited\n\nNSString * const kMagicalRecordImportAttributeUseDefaultValueWhenNotPresent = @\"useDefaultValueWhenNotPresent\";\n\n@implementation NSManagedObject (MagicalRecord_DataImport)\n\n- (BOOL) MR_importValue:(id)value forKey:(NSString *)key\n{\n    NSString *selectorString = [NSString stringWithFormat:@\"import%@:\", [key MR_capitalizedFirstCharacterString]];\n    SEL selector = NSSelectorFromString(selectorString);\n\n    if ([self respondsToSelector:selector])\n    {\n        NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:selector]];\n        [invocation setTarget:self];\n        [invocation setSelector:selector];\n        [invocation setArgument:&value atIndex:2];\n        [invocation invoke];\n\n        BOOL returnValue = YES;\n        [invocation getReturnValue:&returnValue];\n        return returnValue;\n    }\n\n    return NO;\n}\n\n- (void) MR_setAttributes:(NSDictionary *)attributes forKeysWithObject:(id)objectData\n{    \n    for (NSString *attributeName in attributes) \n    {\n        NSAttributeDescription *attributeInfo = [attributes valueForKey:attributeName];\n        NSString *lookupKeyPath = [objectData MR_lookupKeyForAttribute:attributeInfo];\n        \n        if (lookupKeyPath) \n        {\n            id value = [attributeInfo MR_valueForKeyPath:lookupKeyPath fromObjectData:objectData];\n            if (![self MR_importValue:value forKey:attributeName])\n            {\n                [self setValue:value forKey:attributeName];\n            }\n        } \n        else \n        {\n            if ([[[attributeInfo userInfo] objectForKey:kMagicalRecordImportAttributeUseDefaultValueWhenNotPresent] boolValue]) \n            {\n                id value = [attributeInfo defaultValue];\n                if (![self MR_importValue:value forKey:attributeName])\n                {\n                    [self setValue:value forKey:attributeName];\n                }\n            }\n        }\n    }\n}\n\n- (NSManagedObject *) MR_findObjectForRelationship:(NSRelationshipDescription *)relationshipInfo withData:(id)singleRelatedObjectData\n{\n    NSEntityDescription *destinationEntity = [relationshipInfo destinationEntity];\n    NSManagedObject *objectForRelationship = nil;\n\n    id relatedValue;\n\n    // if its a primitive class, than handle singleRelatedObjectData as the key for relationship\n    if ([singleRelatedObjectData isKindOfClass:[NSString class]] ||\n        [singleRelatedObjectData isKindOfClass:[NSNumber class]])\n    {\n        relatedValue = singleRelatedObjectData;\n    }\n    else if ([singleRelatedObjectData isKindOfClass:[NSDictionary class]])\n\t{\n\t\trelatedValue = [singleRelatedObjectData MR_relatedValueForRelationship:relationshipInfo];\n\t}\n\telse\n    {\n        relatedValue = singleRelatedObjectData;\n    }\n\n    if (relatedValue)\n    {\n        NSManagedObjectContext *context = [self managedObjectContext];\n        Class managedObjectClass = NSClassFromString([destinationEntity managedObjectClassName]);\n        NSString *primaryKey = [relationshipInfo MR_primaryKey];\n        objectForRelationship = [managedObjectClass MR_findFirstByAttribute:primaryKey\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  withValue:relatedValue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  inContext:context];\n    }\n\t\n    return objectForRelationship;\n}\n\n- (void) MR_addObject:(NSManagedObject *)relatedObject forRelationship:(NSRelationshipDescription *)relationshipInfo\n{\n    NSAssert2(relatedObject != nil, @\"Cannot add nil to %@ for attribute %@\", NSStringFromClass([self class]), [relationshipInfo name]);    \n    NSAssert2([[relatedObject entity] isKindOfEntity:[relationshipInfo destinationEntity]], @\"related object entity %@ not same as destination entity %@\", [relatedObject entity], [relationshipInfo destinationEntity]);\n\n    //add related object to set\n    NSString *addRelationMessageFormat = @\"set%@:\";\n    id relationshipSource = self;\n    if ([relationshipInfo isToMany]) \n    {\n        addRelationMessageFormat = @\"add%@Object:\";\n        if ([relationshipInfo respondsToSelector:@selector(isOrdered)] && [relationshipInfo isOrdered])\n        {\n            //Need to get the ordered set\n            NSString *selectorName = [[relationshipInfo name] stringByAppendingString:@\"Set\"];\n\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Warc-performSelector-leaks\"\n            relationshipSource = [self performSelector:NSSelectorFromString(selectorName)];\n#pragma clang diagnostic pop\n            addRelationMessageFormat = @\"addObject:\";\n        }\n    }\n\n    NSString *addRelatedObjectToSetMessage = [NSString stringWithFormat:addRelationMessageFormat, MR_attributeNameFromString([relationshipInfo name])];\n \n    SEL selector = NSSelectorFromString(addRelatedObjectToSetMessage);\n\n    @try\n    {\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Warc-performSelector-leaks\"\n        [relationshipSource performSelector:selector withObject:relatedObject];\n#pragma clang diagnostic pop\n    }\n    @catch (NSException *exception)\n    {\n        MRLogError(@\"Adding object for relationship failed: %@\\n\", relationshipInfo);\n        MRLogError(@\"relatedObject.entity %@\", [relatedObject entity]);\n        MRLogError(@\"relationshipInfo.destinationEntity %@\", [relationshipInfo destinationEntity]);\n        MRLogError(@\"Add Relationship Selector: %@\", addRelatedObjectToSetMessage);   \n        MRLogError(@\"perform selector error: %@\", exception);\n    }\n}\n\n- (void)MR_setRelationships:(NSDictionary *)relationships forKeysWithObject:(id)relationshipData withBlock:(void (^)(NSRelationshipDescription *, id))setRelationshipBlock\n{\n    for (NSString *relationshipName in relationships)\n    {\n        SEL shouldImportSelector = NSSelectorFromString([NSString stringWithFormat:@\"shouldImport%@:\", [relationshipName MR_capitalizedFirstCharacterString]]);\n        BOOL implementsShouldImport = (BOOL)[self respondsToSelector:shouldImportSelector];\n\n        NSRelationshipDescription *relationshipInfo = [relationships valueForKey:relationshipName];\n\n        NSString *lookupKey = [[relationshipInfo userInfo] objectForKey:kMagicalRecordImportRelationshipMapKey] ?: relationshipName;\n\n        id relatedObjectData;\n\n        @try\n        {\n            relatedObjectData = [relationshipData valueForKeyPath:lookupKey];\n        }\n        @catch (NSException *exception)\n        {\n            MRLogWarn(@\"Looking up a key for relationship failed while importing: %@\\n\", relationshipInfo);\n            MRLogWarn(@\"lookupKey: %@\", lookupKey);\n            MRLogWarn(@\"relationshipInfo.destinationEntity %@\", [relationshipInfo destinationEntity]);\n            MRLogWarn(@\"relationshipData: %@\", relationshipData);\n            MRLogWarn(@\"Exception:\\n%@: %@\", [exception name], [exception reason]);\n        }\n        @finally\n        {\n            if (relatedObjectData == nil)\n            {\n                continue;\n            }\n        }\n\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \\\n    \"-Warc-performSelector-leaks\"\n        if (implementsShouldImport && !(BOOL)[self performSelector:shouldImportSelector withObject:relatedObjectData])\n        {\n            continue;\n        }\n#pragma clang diagnostic pop\n        // Different values provided to the -shouldImport and -import methods??\n        if ([self MR_importValue:relationshipData forKey:relationshipName])\n        {\n            continue;\n        }\n\n        if ([relatedObjectData isEqual:[NSNull null]])\n        {\n            [self setValue:nil forKey:relationshipName];\n            continue;\n        }\n        \n        if ([relationshipInfo isToMany] && [relatedObjectData isKindOfClass:[NSArray class]])\n        {\n            for (id singleRelatedObjectData in relatedObjectData)\n            {\n                setRelationshipBlock(relationshipInfo, singleRelatedObjectData);\n            }\n        }\n        else\n        {\n            setRelationshipBlock(relationshipInfo, relatedObjectData);\n        }\n    }\n}\n\n- (BOOL) MR_preImport:(id)objectData\n{\n    if ([self respondsToSelector:@selector(shouldImport:)])\n    {\n        BOOL shouldImport = (BOOL)[self shouldImport:objectData];\n        if (!shouldImport) \n        {\n            return NO;\n        }\n    }   \n\n    if ([self respondsToSelector:@selector(willImport:)])\n    {\n        [self willImport:objectData];\n    }\n\n    return YES;\n}\n\n- (BOOL) MR_postImport:(id)objectData\n{\n    if ([self respondsToSelector:@selector(didImport:)])\n    {\n        [self performSelector:@selector(didImport:) withObject:objectData];\n    }\n\n    return YES;\n}\n\n- (BOOL) MR_performDataImportFromObject:(id)objectData relationshipBlock:(void(^)(NSRelationshipDescription*, id))relationshipBlock\n{\n    BOOL didStartImporting = [self MR_preImport:objectData];\n    if (!didStartImporting) return NO;\n    \n    NSDictionary *attributes = [[self entity] attributesByName];\n    [self MR_setAttributes:attributes forKeysWithObject:objectData];\n    \n    NSDictionary *relationships = [[self entity] relationshipsByName];\n    [self MR_setRelationships:relationships forKeysWithObject:objectData withBlock:relationshipBlock];\n    \n    return [self MR_postImport:objectData];  \n}\n\n- (BOOL)MR_importValuesForKeysWithObject:(id)objectData\n{\n    __weak typeof(self) weakSelf = self;\n    return [self MR_performDataImportFromObject:objectData\n                              relationshipBlock:^(NSRelationshipDescription *relationshipInfo, id localObjectData) {\n\n                                  NSManagedObject *relatedObject = [weakSelf MR_findObjectForRelationship:relationshipInfo withData:localObjectData];\n\n                                  if (relatedObject == nil)\n                                  {\n                                      NSEntityDescription *entityDescription = [relationshipInfo destinationEntity];\n                                      relatedObject = [entityDescription MR_createInstanceInContext:[weakSelf managedObjectContext]];\n                                  }\n                                  if ([localObjectData isKindOfClass:[NSDictionary class]])\n                                  {\n                                      [relatedObject MR_importValuesForKeysWithObject:localObjectData];\n                                  }\n                                  else if (localObjectData)\n                                  {\n                                      NSString *relatedByAttribute = [relationshipInfo MR_primaryKey];\n\n                                      if (relatedByAttribute)\n                                      {\n                                          if (![relatedObject MR_importValue:localObjectData forKey:relatedByAttribute])\n                                          {\n                                              [relatedObject setValue:localObjectData forKey:relatedByAttribute];\n                                          }\n                                      }\n                                  }\n\n                                  [weakSelf MR_addObject:relatedObject forRelationship:relationshipInfo];\n                              }];\n}\n\n+ (id) MR_importFromObject:(id)objectData inContext:(NSManagedObjectContext *)context\n{\n    __block NSManagedObject *managedObject;\n\n    [context performBlockAndWait:^{\n        NSAttributeDescription *primaryAttribute = [[self MR_entityDescriptionInContext:context] MR_primaryAttributeToRelateBy];\n\n        if (primaryAttribute != nil)\n        {\n            id value = [objectData MR_valueForAttribute:primaryAttribute];\n            managedObject = [self MR_findFirstByAttribute:[primaryAttribute name] withValue:value inContext:context];\n        }\n        if (managedObject == nil)\n        {\n            managedObject = [self MR_createEntityInContext:context];\n        }\n\n        [managedObject MR_importValuesForKeysWithObject:objectData];\n    }];\n\n    return managedObject;\n}\n\n+ (id) MR_importFromObject:(id)objectData\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_importFromObject:objectData inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSArray *) MR_importFromArray:(NSArray *)listOfObjectData\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_importFromArray:listOfObjectData inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSArray *) MR_importFromArray:(NSArray *)listOfObjectData inContext:(NSManagedObjectContext *)context\n{\n    NSMutableArray *dataObjects = [NSMutableArray array];\n\n    [listOfObjectData enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop)\n    {\n        NSDictionary *objectData = (NSDictionary *)obj;\n\n        NSManagedObject *dataObject = [self MR_importFromObject:objectData inContext:context];\n\n        [dataObjects addObject:dataObject];\n    }];\n\n    return dataObjects;\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObject/NSManagedObject+MagicalFinders.h",
    "content": "//\n//  NSManagedObject+MagicalFinders.h\n//  Magical Record\n//\n//  Created by Saul Mora on 3/7/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface NSManagedObject (MagicalFinders)\n\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) MR_findAll;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) MR_findAllInContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) MR_findAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) MR_findAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) MR_findAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(MR_nullable NSPredicate *)searchTerm;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) MR_findAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(MR_nullable NSPredicate *)searchTerm inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) MR_findAllWithPredicate:(MR_nullable NSPredicate *)searchTerm;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) MR_findAllWithPredicate:(MR_nullable NSPredicate *)searchTerm inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (MR_nullable instancetype) MR_findFirst;\n+ (MR_nullable instancetype) MR_findFirstInContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable instancetype) MR_findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm;\n+ (MR_nullable instancetype) MR_findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable instancetype) MR_findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)property ascending:(BOOL)ascending;\n+ (MR_nullable instancetype) MR_findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)property ascending:(BOOL)ascending inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable instancetype) MR_findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm andRetrieveAttributes:(MR_nullable NSArray *)attributes;\n+ (MR_nullable instancetype) MR_findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm andRetrieveAttributes:(MR_nullable NSArray *)attributes inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable instancetype) MR_findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)sortBy ascending:(BOOL)ascending andRetrieveAttributes:(MR_nullable id)attributes, ...;\n+ (MR_nullable instancetype) MR_findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)sortBy ascending:(BOOL)ascending inContext:(MR_nonnull NSManagedObjectContext *)context andRetrieveAttributes:(MR_nullable id)attributes, ...;\n+ (MR_nullable instancetype) MR_findFirstByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue;\n+ (MR_nullable instancetype) MR_findFirstByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable instancetype) MR_findFirstOrderedByAttribute:(MR_nonnull NSString *)attribute ascending:(BOOL)ascending;\n+ (MR_nullable instancetype) MR_findFirstOrderedByAttribute:(MR_nonnull NSString *)attribute ascending:(BOOL)ascending inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (MR_nonnull instancetype) MR_findFirstOrCreateByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue;\n+ (MR_nonnull instancetype) MR_findFirstOrCreateByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) MR_findByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) MR_findByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) MR_findByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue andOrderBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) MR_findByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue andOrderBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n\n+ (MR_nonnull NSFetchedResultsController *) MR_fetchController:(MR_nonnull NSFetchRequest *)request delegate:(MR_nullable id<NSFetchedResultsControllerDelegate>)delegate useFileCache:(BOOL)useFileCache groupedBy:(MR_nullable NSString *)groupKeyPath inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (MR_nonnull NSFetchedResultsController *) MR_fetchAllWithDelegate:(MR_nullable id<NSFetchedResultsControllerDelegate>)delegate;\n+ (MR_nonnull NSFetchedResultsController *) MR_fetchAllWithDelegate:(MR_nullable id<NSFetchedResultsControllerDelegate>)delegate inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (MR_nonnull NSFetchedResultsController *) MR_fetchAllSortedBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(MR_nullable NSPredicate *)searchTerm groupBy:(MR_nullable NSString *)groupingKeyPath delegate:(MR_nullable id<NSFetchedResultsControllerDelegate>)delegate;\n+ (MR_nonnull NSFetchedResultsController *) MR_fetchAllSortedBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(MR_nullable NSPredicate *)searchTerm groupBy:(MR_nullable NSString *)groupingKeyPath delegate:(MR_nullable id<NSFetchedResultsControllerDelegate>)delegate inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (MR_nonnull NSFetchedResultsController *) MR_fetchAllGroupedBy:(MR_nullable NSString *)group withPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending;\n+ (MR_nonnull NSFetchedResultsController *) MR_fetchAllGroupedBy:(MR_nullable NSString *)group withPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (MR_nonnull NSFetchedResultsController *) MR_fetchAllGroupedBy:(MR_nullable NSString *)group withPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending delegate:(MR_nullable id<NSFetchedResultsControllerDelegate>)delegate;\n+ (MR_nonnull NSFetchedResultsController *) MR_fetchAllGroupedBy:(MR_nullable NSString *)group withPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending delegate:(MR_nullable id<NSFetchedResultsControllerDelegate>)delegate inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n#endif\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObject/NSManagedObject+MagicalFinders.m",
    "content": "    //\n//  NSManagedObject+MagicalFinders.m\n//  Magical Record\n//\n//  Created by Saul Mora on 3/7/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"NSManagedObject+MagicalFinders.h\"\n#import \"NSManagedObject+MagicalRequests.h\"\n#import \"NSManagedObject+MagicalRecord.h\"\n#import \"NSManagedObjectContext+MagicalThreading.h\"\n\n@implementation NSManagedObject (MagicalFinders)\n\n#pragma mark - Finding Data\n\n\n+ (NSArray *) MR_findAllInContext:(NSManagedObjectContext *)context\n{\n\treturn [self MR_executeFetchRequest:[self MR_requestAllInContext:context] inContext:context];\n}\n\n+ (NSArray *) MR_findAll\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_findAllInContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSArray *) MR_findAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending inContext:(NSManagedObjectContext *)context\n{\n\tNSFetchRequest *request = [self MR_requestAllSortedBy:sortTerm ascending:ascending inContext:context];\n\t\n\treturn [self MR_executeFetchRequest:request inContext:context];\n}\n\n+ (NSArray *) MR_findAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_findAllSortedBy:sortTerm\n                          ascending:ascending \n                          inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSArray *) MR_findAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(NSPredicate *)searchTerm inContext:(NSManagedObjectContext *)context\n{\n\tNSFetchRequest *request = [self MR_requestAllSortedBy:sortTerm\n                                                ascending:ascending\n                                            withPredicate:searchTerm\n                                                inContext:context];\n\t\n\treturn [self MR_executeFetchRequest:request inContext:context];\n}\n\n+ (NSArray *) MR_findAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(NSPredicate *)searchTerm\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_findAllSortedBy:sortTerm\n                          ascending:ascending\n                      withPredicate:searchTerm \n                          inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n\n+ (NSArray *) MR_findAllWithPredicate:(NSPredicate *)searchTerm inContext:(NSManagedObjectContext *)context\n{\n\tNSFetchRequest *request = [self MR_createFetchRequestInContext:context];\n\t[request setPredicate:searchTerm];\n\t\n\treturn [self MR_executeFetchRequest:request\n                              inContext:context];\n}\n\n+ (NSArray *) MR_findAllWithPredicate:(NSPredicate *)searchTerm\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_findAllWithPredicate:searchTerm\n                               inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (instancetype) MR_findFirstInContext:(NSManagedObjectContext *)context\n{\n\tNSFetchRequest *request = [self MR_createFetchRequestInContext:context];\n\t\n\treturn [self MR_executeFetchRequestAndReturnFirstObject:request inContext:context];\n}\n\n+ (instancetype) MR_findFirst\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_findFirstInContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (instancetype) MR_findFirstByAttribute:(NSString *)attribute withValue:(id)searchValue inContext:(NSManagedObjectContext *)context\n{\t\n\tNSFetchRequest *request = [self MR_requestFirstByAttribute:attribute withValue:searchValue inContext:context];\n\treturn [self MR_executeFetchRequestAndReturnFirstObject:request inContext:context];\n}\n\n+ (instancetype) MR_findFirstByAttribute:(NSString *)attribute withValue:(id)searchValue\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_findFirstByAttribute:attribute\n                               withValue:searchValue \n                               inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (instancetype) MR_findFirstOrderedByAttribute:(NSString *)attribute ascending:(BOOL)ascending inContext:(NSManagedObjectContext *)context\n{\n    NSFetchRequest *request = [self MR_requestAllSortedBy:attribute ascending:ascending inContext:context];\n    [request setFetchLimit:1];\n\n    return [self MR_executeFetchRequestAndReturnFirstObject:request inContext:context];\n}\n\n+ (instancetype) MR_findFirstOrderedByAttribute:(NSString *)attribute ascending:(BOOL)ascending\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_findFirstOrderedByAttribute:attribute\n                                      ascending:ascending\n                                      inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (instancetype) MR_findFirstOrCreateByAttribute:(NSString *)attribute withValue:(id)searchValue\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_findFirstOrCreateByAttribute:attribute\n                                       withValue:searchValue\n                                       inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (instancetype) MR_findFirstOrCreateByAttribute:(NSString *)attribute withValue:(id)searchValue inContext:(NSManagedObjectContext *)context\n{\n    id result = [self MR_findFirstByAttribute:attribute\n                                    withValue:searchValue\n                                    inContext:context];\n\n    if (result != nil) {\n        return result;\n    }\n\n    result = [self MR_createEntityInContext:context];\n    [result setValue:searchValue forKey:attribute];\n\n    return result;\n}\n\n+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchTerm\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_findFirstWithPredicate:searchTerm inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchTerm inContext:(NSManagedObjectContext *)context\n{\n    NSFetchRequest *request = [self MR_requestFirstWithPredicate:searchTerm inContext:context];\n    \n    return [self MR_executeFetchRequestAndReturnFirstObject:request inContext:context];\n}\n\n+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchTerm sortedBy:(NSString *)property ascending:(BOOL)ascending inContext:(NSManagedObjectContext *)context\n{\n\tNSFetchRequest *request = [self MR_requestAllSortedBy:property ascending:ascending withPredicate:searchTerm inContext:context];\n    \n\treturn [self MR_executeFetchRequestAndReturnFirstObject:request inContext:context];\n}\n\n+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchTerm sortedBy:(NSString *)property ascending:(BOOL)ascending\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_findFirstWithPredicate:searchTerm\n                                  sortedBy:property \n                                 ascending:ascending \n                                 inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchTerm andRetrieveAttributes:(NSArray *)attributes inContext:(NSManagedObjectContext *)context\n{\n\tNSFetchRequest *request = [self MR_createFetchRequestInContext:context];\n\t[request setPredicate:searchTerm];\n\t[request setPropertiesToFetch:attributes];\n\t\n\treturn [self MR_executeFetchRequestAndReturnFirstObject:request inContext:context];\n}\n\n+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchTerm andRetrieveAttributes:(NSArray *)attributes\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_findFirstWithPredicate:searchTerm\n                     andRetrieveAttributes:attributes \n                                 inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchTerm sortedBy:(NSString *)sortBy ascending:(BOOL)ascending inContext:(NSManagedObjectContext *)context andRetrieveAttributes:(id)attributes, ...\n{\n\tNSFetchRequest *request = [self MR_requestAllSortedBy:sortBy\n                                                ascending:ascending\n                                            withPredicate:searchTerm\n                                                inContext:context];\n\t[request setPropertiesToFetch:[self MR_propertiesNamed:attributes inContext:context]];\n\t\n\treturn [self MR_executeFetchRequestAndReturnFirstObject:request inContext:context];\n}\n\n+ (instancetype) MR_findFirstWithPredicate:(NSPredicate *)searchTerm sortedBy:(NSString *)sortBy ascending:(BOOL)ascending andRetrieveAttributes:(id)attributes, ...\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_findFirstWithPredicate:searchTerm\n                                  sortedBy:sortBy \n                                 ascending:ascending \n                                 inContext:[NSManagedObjectContext MR_contextForCurrentThread]\n                     andRetrieveAttributes:attributes];\n#pragma clang diagnostic pop\n}\n\n+ (NSArray *) MR_findByAttribute:(NSString *)attribute withValue:(id)searchValue inContext:(NSManagedObjectContext *)context\n{\n    NSFetchRequest *request = [self MR_requestAllWhere:attribute isEqualTo:searchValue inContext:context];\n\t\n\treturn [self MR_executeFetchRequest:request inContext:context];\n}\n\n+ (NSArray *) MR_findByAttribute:(NSString *)attribute withValue:(id)searchValue\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_findByAttribute:attribute\n                          withValue:searchValue \n                          inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSArray *) MR_findByAttribute:(NSString *)attribute withValue:(id)searchValue andOrderBy:(NSString *)sortTerm ascending:(BOOL)ascending inContext:(NSManagedObjectContext *)context\n{\n\tNSPredicate *searchTerm = [NSPredicate predicateWithFormat:@\"%K = %@\", attribute, searchValue];\n\tNSFetchRequest *request = [self MR_requestAllSortedBy:sortTerm ascending:ascending withPredicate:searchTerm inContext:context];\n\t\n\treturn [self MR_executeFetchRequest:request inContext:context];\n}\n\n+ (NSArray *) MR_findByAttribute:(NSString *)attribute withValue:(id)searchValue andOrderBy:(NSString *)sortTerm ascending:(BOOL)ascending\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_findByAttribute:attribute\n                          withValue:searchValue\n                         andOrderBy:sortTerm \n                          ascending:ascending \n                          inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n\n#pragma mark -\n#pragma mark NSFetchedResultsController helpers\n\n\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n\n+ (NSFetchedResultsController *) MR_fetchController:(NSFetchRequest *)request delegate:(id<NSFetchedResultsControllerDelegate>)delegate useFileCache:(BOOL)useFileCache groupedBy:(NSString *)groupKeyPath inContext:(NSManagedObjectContext *)context\n{\n    NSString *cacheName = useFileCache ? [NSString stringWithFormat:@\"MagicalRecord-Cache-%@\", NSStringFromClass([self class])] : nil;\n    \n\tNSFetchedResultsController *controller =\n    [[NSFetchedResultsController alloc] initWithFetchRequest:request\n                                        managedObjectContext:context\n                                          sectionNameKeyPath:groupKeyPath\n                                                   cacheName:cacheName];\n    controller.delegate = delegate;\n    \n    return controller;\n}\n\n+ (NSFetchedResultsController *) MR_fetchAllWithDelegate:(id<NSFetchedResultsControllerDelegate>)delegate\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_fetchAllWithDelegate:delegate inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSFetchedResultsController *) MR_fetchAllWithDelegate:(id<NSFetchedResultsControllerDelegate>)delegate inContext:(NSManagedObjectContext *)context\n{\n    NSFetchRequest *request = [self MR_requestAllInContext:context];\n    NSFetchedResultsController *controller = [self MR_fetchController:request delegate:delegate useFileCache:NO groupedBy:nil inContext:context];\n\n    [self MR_performFetch:controller];\n    return controller;\n}\n\n+ (NSFetchedResultsController *) MR_fetchAllGroupedBy:(NSString *)group withPredicate:(NSPredicate *)searchTerm sortedBy:(NSString *)sortTerm ascending:(BOOL)ascending delegate:(id<NSFetchedResultsControllerDelegate>)delegate inContext:(NSManagedObjectContext *)context\n{\n\tNSFetchRequest *request = [self MR_requestAllSortedBy:sortTerm \n                                                ascending:ascending \n                                            withPredicate:searchTerm\n                                                inContext:context];\n    \n    NSFetchedResultsController *controller = [self MR_fetchController:request \n                                                             delegate:delegate\n                                                         useFileCache:NO\n                                                            groupedBy:group\n                                                            inContext:context];\n    \n    [self MR_performFetch:controller];\n    return controller;\n}\n\n+ (NSFetchedResultsController *) MR_fetchAllGroupedBy:(NSString *)group withPredicate:(NSPredicate *)searchTerm sortedBy:(NSString *)sortTerm ascending:(BOOL)ascending delegate:(id)delegate\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_fetchAllGroupedBy:group\n                        withPredicate:searchTerm\n                             sortedBy:sortTerm\n                            ascending:ascending\n                             delegate:delegate\n                            inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSFetchedResultsController *) MR_fetchAllGroupedBy:(NSString *)group withPredicate:(NSPredicate *)searchTerm sortedBy:(NSString *)sortTerm ascending:(BOOL)ascending inContext:(NSManagedObjectContext *)context\n{\n    return [self MR_fetchAllGroupedBy:group \n                        withPredicate:searchTerm\n                             sortedBy:sortTerm\n                            ascending:ascending\n                             delegate:nil\n                            inContext:context];\n}\n\n+ (NSFetchedResultsController *) MR_fetchAllGroupedBy:(NSString *)group withPredicate:(NSPredicate *)searchTerm sortedBy:(NSString *)sortTerm ascending:(BOOL)ascending \n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_fetchAllGroupedBy:group\n                        withPredicate:searchTerm\n                             sortedBy:sortTerm\n                            ascending:ascending\n                            inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n\n+ (NSFetchedResultsController *) MR_fetchAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(NSPredicate *)searchTerm groupBy:(NSString *)groupingKeyPath inContext:(NSManagedObjectContext *)context\n{\n    NSFetchRequest *request = [self MR_requestAllSortedBy:sortTerm\n                                                ascending:ascending\n                                            withPredicate:searchTerm\n                                                inContext:context];\n\tNSFetchedResultsController *controller = [self MR_fetchController:request\n                                                             delegate:nil\n                                                         useFileCache:NO\n                                                            groupedBy:groupingKeyPath\n                                                            inContext:context];\n\n    [self MR_performFetch:controller];\n    return controller;\n}\n\n+ (NSFetchedResultsController *) MR_fetchAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(NSPredicate *)searchTerm groupBy:(NSString *)groupingKeyPath\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_fetchAllSortedBy:sortTerm\n                           ascending:ascending\n                       withPredicate:searchTerm\n                             groupBy:groupingKeyPath\n                           inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSFetchedResultsController *) MR_fetchAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(NSPredicate *)searchTerm groupBy:(NSString *)groupingKeyPath delegate:(id<NSFetchedResultsControllerDelegate>)delegate inContext:(NSManagedObjectContext *)context\n{\n\treturn [self MR_fetchAllGroupedBy:groupingKeyPath\n                        withPredicate:searchTerm\n                             sortedBy:sortTerm\n                            ascending:ascending\n                             delegate:delegate\n                            inContext:context];\n}\n\n+ (NSFetchedResultsController *) MR_fetchAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(NSPredicate *)searchTerm groupBy:(NSString *)groupingKeyPath delegate:(id<NSFetchedResultsControllerDelegate>)delegate\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_fetchAllSortedBy:sortTerm\n                           ascending:ascending\n                       withPredicate:searchTerm \n                             groupBy:groupingKeyPath \n                            delegate:delegate\n                           inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n#endif\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObject/NSManagedObject+MagicalRecord.h",
    "content": "//\n//\n//  Created by Saul Mora on 11/15/09.\n//  Copyright 2010 Magical Panda Software, LLC All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordDeprecationMacros.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface NSManagedObject (MagicalRecord)\n\n/**\n *  If the NSManagedObject subclass calling this method has implemented the `entityName` method, then the return value of that will be used.\n *  If `entityName` is not implemented, then the name of the class is returned. If the class is written in Swift, the module name will be removed.\n *\n *  @return String based name for the entity\n */\n+ (MR_nonnull NSString *) MR_entityName;\n\n+ (NSUInteger) MR_defaultBatchSize;\n+ (void) MR_setDefaultBatchSize:(NSUInteger)newBatchSize;\n\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) MR_executeFetchRequest:(MR_nonnull NSFetchRequest *)request;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) MR_executeFetchRequest:(MR_nonnull NSFetchRequest *)request inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable instancetype) MR_executeFetchRequestAndReturnFirstObject:(MR_nonnull NSFetchRequest *)request;\n+ (MR_nullable instancetype) MR_executeFetchRequestAndReturnFirstObject:(MR_nonnull NSFetchRequest *)request inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n\n+ (BOOL) MR_performFetch:(MR_nonnull NSFetchedResultsController *)controller;\n\n#endif\n\n+ (MR_nullable NSEntityDescription *) MR_entityDescription;\n+ (MR_nullable NSEntityDescription *) MR_entityDescriptionInContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable MR_GENERIC(NSArray, NSPropertyDescription *) *) MR_propertiesNamed:(MR_nonnull MR_GENERIC(NSArray, NSString *) *)properties;\n+ (MR_nullable MR_GENERIC(NSArray, NSPropertyDescription *) *) MR_propertiesNamed:(MR_nonnull MR_GENERIC(NSArray, NSString *) *)properties inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (MR_nullable instancetype) MR_createEntity;\n+ (MR_nullable instancetype) MR_createEntityInContext:(MR_nonnull NSManagedObjectContext *)context;\n\n- (BOOL) MR_deleteEntity;\n- (BOOL) MR_deleteEntityInContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (BOOL) MR_deleteAllMatchingPredicate:(MR_nonnull NSPredicate *)predicate;\n+ (BOOL) MR_deleteAllMatchingPredicate:(MR_nonnull NSPredicate *)predicate inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (BOOL) MR_truncateAll;\n+ (BOOL) MR_truncateAllInContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (MR_nonnull MR_GENERIC(NSArray, NSSortDescriptor *) *) MR_ascendingSortDescriptors:(MR_nonnull MR_GENERIC(NSArray, NSString *) *)attributesToSortBy;\n+ (MR_nonnull MR_GENERIC(NSArray, NSSortDescriptor *) *) MR_descendingSortDescriptors:(MR_nonnull MR_GENERIC(NSArray, NSString *) *)attributesToSortBy;\n\n- (MR_nullable instancetype) MR_inContext:(MR_nonnull NSManagedObjectContext *)otherContext;\n- (MR_nullable instancetype) MR_inThreadContext;\n\n@end\n\n@protocol MagicalRecord_MOGenerator <NSObject>\n\n@optional\n+ (MR_nonnull NSString *)entityName;\n- (MR_nullable instancetype) entityInManagedObjectContext:(MR_nonnull NSManagedObjectContext *)object;\n- (MR_nullable instancetype) insertInManagedObjectContext:(MR_nonnull NSManagedObjectContext *)object;\n\n@end\n\n#pragma mark - Deprecated Methods — DO NOT USE\n@interface NSManagedObject (MagicalRecordDeprecated)\n\n+ (MR_nullable instancetype) MR_createInContext:(MR_nonnull NSManagedObjectContext *)context MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"4.0\", \"MR_createEntityInContext:\");\n- (BOOL) MR_deleteInContext:(MR_nonnull NSManagedObjectContext *)context MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"4.0\", \"MR_deleteEntityInContext:\");\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObject/NSManagedObject+MagicalRecord.m",
    "content": "\n//  Created by Saul Mora on 11/15/09.\n//  Copyright 2010 Magical Panda Software, LLC All rights reserved.\n//\n\n#import \"NSManagedObject+MagicalRecord.h\"\n#import \"NSManagedObject+MagicalRequests.h\"\n#import \"NSManagedObjectContext+MagicalThreading.h\"\n#import \"MagicalRecord+ErrorHandling.h\"\n#import \"MagicalRecordLogging.h\"\n\nstatic NSUInteger kMagicalRecordDefaultBatchSize = 20;\n\n@implementation NSManagedObject (MagicalRecord)\n\n+ (NSString *) MR_entityName\n{\n    NSString *entityName;\n\n    if ([self respondsToSelector:@selector(entityName)])\n    {\n        entityName = [self performSelector:@selector(entityName)];\n    }\n\n    if ([entityName length] == 0)\n    {\n        // Remove module prefix from Swift subclasses\n        entityName = [NSStringFromClass(self) componentsSeparatedByString:@\".\"].lastObject;\n    }\n\n    return entityName;\n}\n\n+ (void) MR_setDefaultBatchSize:(NSUInteger)newBatchSize\n{\n\t@synchronized(self)\n\t{\n\t\tkMagicalRecordDefaultBatchSize = newBatchSize;\n\t}\n}\n\n+ (NSUInteger) MR_defaultBatchSize\n{\n\treturn kMagicalRecordDefaultBatchSize;\n}\n\n+ (NSArray *) MR_executeFetchRequest:(NSFetchRequest *)request inContext:(NSManagedObjectContext *)context\n{\n    __block NSArray *results = nil;\n    [context performBlockAndWait:^{\n\n        NSError *error = nil;\n        \n        results = [context executeFetchRequest:request error:&error];\n        \n        if (results == nil) \n        {\n            [MagicalRecord handleErrors:error];\n        }\n\n    }];\n\treturn results;\t\n}\n\n+ (NSArray *) MR_executeFetchRequest:(NSFetchRequest *)request\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_executeFetchRequest:request inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (id) MR_executeFetchRequestAndReturnFirstObject:(NSFetchRequest *)request inContext:(NSManagedObjectContext *)context\n{\n\t[request setFetchLimit:1];\n\t\n\tNSArray *results = [self MR_executeFetchRequest:request inContext:context];\n\tif ([results count] == 0)\n\t{\n\t\treturn nil;\n\t}\n\treturn [results firstObject];\n}\n\n+ (id) MR_executeFetchRequestAndReturnFirstObject:(NSFetchRequest *)request\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_executeFetchRequestAndReturnFirstObject:request inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n#if TARGET_OS_IPHONE\n\n+ (BOOL) MR_performFetch:(NSFetchedResultsController *)controller\n{\n\tNSError *error = nil;\n\tBOOL success = [controller performFetch:&error];\n\tif (!success)\n\t{\n\t\t[MagicalRecord handleErrors:error];\n\t}\n\treturn success;\n}\n\n#endif\n\n+ (NSEntityDescription *) MR_entityDescription\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_entityDescriptionInContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSEntityDescription *) MR_entityDescriptionInContext:(NSManagedObjectContext *)context\n{\n    NSString *entityName = [self MR_entityName];\n    return [NSEntityDescription entityForName:entityName inManagedObjectContext:context];\n}\n\n+ (NSArray *) MR_propertiesNamed:(NSArray *)properties\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_propertiesNamed:properties inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSArray *) MR_propertiesNamed:(NSArray *)properties inContext:(NSManagedObjectContext *)context\n{\n\tNSEntityDescription *description = [self MR_entityDescriptionInContext:context];\n\tNSMutableArray *propertiesWanted = [NSMutableArray array];\n\n\tif (properties)\n\t{\n\t\tNSDictionary *propDict = [description propertiesByName];\n\n\t\tfor (NSString *propertyName in properties)\n\t\t{\n\t\t\tNSPropertyDescription *property = [propDict objectForKey:propertyName];\n\t\t\tif (property)\n\t\t\t{\n\t\t\t\t[propertiesWanted addObject:property];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tMRLogWarn(@\"Property '%@' not found in %lx properties for %@\", propertyName, (unsigned long)[propDict count], NSStringFromClass(self));\n\t\t\t}\n\t\t}\n\t}\n\treturn propertiesWanted;\n}\n\n+ (NSArray *) MR_sortAscending:(BOOL)ascending attributes:(NSArray *)attributesToSortBy\n{\n\tNSMutableArray *attributes = [NSMutableArray array];\n    \n    for (NSString *attributeName in attributesToSortBy) \n    {\n        NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:attributeName ascending:ascending];\n        [attributes addObject:sortDescriptor];\n    }\n    \n\treturn attributes;\n}\n\n+ (NSArray *) MR_ascendingSortDescriptors:(NSArray *)attributesToSortBy\n{\n\treturn [self MR_sortAscending:YES attributes:attributesToSortBy];\n}\n\n+ (NSArray *) MR_descendingSortDescriptors:(NSArray *)attributesToSortBy\n{\n\treturn [self MR_sortAscending:NO attributes:attributesToSortBy];\n}\n\n#pragma mark -\n\n+ (id) MR_createEntityInContext:(NSManagedObjectContext *)context\n{\n    if ([self respondsToSelector:@selector(insertInManagedObjectContext:)] && context != nil)\n    {\n        id entity = [self performSelector:@selector(insertInManagedObjectContext:) withObject:context];\n        return entity;\n    }\n    else\n    {\n        NSEntityDescription *entity = nil;\n        if (context == nil)\n        {\n            entity = [self MR_entityDescription];\n        }\n        else\n        {\n            entity  = [self MR_entityDescriptionInContext:context];\n        }\n        \n        if (entity == nil)\n        {\n            return nil;\n        }\n        \n        return [[self alloc] initWithEntity:entity insertIntoManagedObjectContext:context];\n    }\n}\n\n+ (id) MR_createEntity\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\tNSManagedObject *newEntity = [self MR_createEntityInContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n\n\treturn newEntity;\n}\n\n- (BOOL) MR_deleteEntityInContext:(NSManagedObjectContext *)context\n{\n    NSError *error = nil;\n    NSManagedObject *entityInContext = [context existingObjectWithID:[self objectID] error:&error];\n    [MagicalRecord handleErrors:error];\n    if (entityInContext) {\n        [context deleteObject:entityInContext];\n    }\n\n    return YES;\n}\n\n- (BOOL) MR_deleteEntity\n{\n\t[self MR_deleteEntityInContext:[self managedObjectContext]];\n\treturn YES;\n}\n\n+ (BOOL) MR_deleteAllMatchingPredicate:(NSPredicate *)predicate inContext:(NSManagedObjectContext *)context\n{\n    NSFetchRequest *request = [self MR_requestAllWithPredicate:predicate inContext:context];\n    [request setReturnsObjectsAsFaults:YES];\n\t[request setIncludesPropertyValues:NO];\n    \n\tNSArray *objectsToTruncate = [self MR_executeFetchRequest:request inContext:context];\n    \n\tfor (id objectToTruncate in objectsToTruncate) \n    {\n\t\t[objectToTruncate MR_deleteEntityInContext:context];\n\t}\n    \n\treturn YES;\n}\n\n+ (BOOL) MR_deleteAllMatchingPredicate:(NSPredicate *)predicate\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_deleteAllMatchingPredicate:predicate inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (BOOL) MR_truncateAllInContext:(NSManagedObjectContext *)context\n{\n    NSFetchRequest *request = [self MR_requestAllInContext:context];\n    [request setReturnsObjectsAsFaults:YES];\n    [request setIncludesPropertyValues:NO];\n\n    NSArray *objectsToDelete = [self MR_executeFetchRequest:request inContext:context];\n    for (NSManagedObject *objectToDelete in objectsToDelete)\n    {\n        [objectToDelete MR_deleteEntityInContext:context];\n    }\n    return YES;\n}\n\n+ (BOOL) MR_truncateAll\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    [self MR_truncateAllInContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n\n    return YES;\n}\n\n- (id) MR_inContext:(NSManagedObjectContext *)otherContext\n{\n    NSError *error = nil;\n    \n    if ([[self objectID] isTemporaryID])\n    {\n        BOOL success = [[self managedObjectContext] obtainPermanentIDsForObjects:@[self] error:&error];\n        if (!success)\n        {\n            [MagicalRecord handleErrors:error];\n            return nil;\n        }\n    }\n    \n    error = nil;\n    \n    NSManagedObject *inContext = [otherContext existingObjectWithID:[self objectID] error:&error];\n    [MagicalRecord handleErrors:error];\n    \n    return inContext;\n}\n\n- (id) MR_inThreadContext\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n@end\n\n#pragma mark - Deprecated Methods — DO NOT USE\n@implementation NSManagedObject (MagicalRecordDeprecated)\n\n+ (instancetype) MR_createInContext:(NSManagedObjectContext *)context\n{\n    return [self MR_createEntityInContext:context];\n}\n\n- (BOOL) MR_deleteInContext:(NSManagedObjectContext *)context\n{\n    return [self MR_deleteEntityInContext:context];\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObject/NSManagedObject+MagicalRequests.h",
    "content": "//\n//  NSManagedObject+MagicalRequests.h\n//  Magical Record\n//\n//  Created by Saul Mora on 3/7/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface NSManagedObject (MagicalRequests)\n\n+ (MR_nonnull NSFetchRequest *) MR_createFetchRequest;\n+ (MR_nonnull NSFetchRequest *) MR_createFetchRequestInContext:(MR_nonnull NSManagedObjectContext *)context;\n\n+ (MR_nonnull NSFetchRequest *) MR_requestAll;\n+ (MR_nonnull NSFetchRequest *) MR_requestAllInContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull NSFetchRequest *) MR_requestAllWithPredicate:(MR_nullable NSPredicate *)searchTerm;\n+ (MR_nonnull NSFetchRequest *) MR_requestAllWithPredicate:(MR_nullable NSPredicate *)searchTerm inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull NSFetchRequest *) MR_requestAllWhere:(MR_nonnull NSString *)property isEqualTo:(MR_nonnull id)value;\n+ (MR_nonnull NSFetchRequest *) MR_requestAllWhere:(MR_nonnull NSString *)property isEqualTo:(MR_nonnull id)value inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull NSFetchRequest *) MR_requestFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm;\n+ (MR_nonnull NSFetchRequest *) MR_requestFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull NSFetchRequest *) MR_requestFirstByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nullable id)searchValue;\n+ (MR_nonnull NSFetchRequest *) MR_requestFirstByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nullable id)searchValue inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull NSFetchRequest *) MR_requestAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending;\n+ (MR_nonnull NSFetchRequest *) MR_requestAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull NSFetchRequest *) MR_requestAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(MR_nullable NSPredicate *)searchTerm;\n+ (MR_nonnull NSFetchRequest *) MR_requestAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(MR_nullable NSPredicate *)searchTerm inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObject/NSManagedObject+MagicalRequests.m",
    "content": "//\n//  NSManagedObject+MagicalRequests.m\n//  Magical Record\n//\n//  Created by Saul Mora on 3/7/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"NSManagedObject+MagicalRequests.h\"\n#import \"NSManagedObject+MagicalRecord.h\"\n#import \"NSManagedObjectContext+MagicalThreading.h\"\n\n@implementation NSManagedObject (MagicalRequests)\n\n\n+ (NSFetchRequest *)MR_createFetchRequestInContext:(NSManagedObjectContext *)context\n{\n\tNSFetchRequest *request = [[NSFetchRequest alloc] init];\n\t[request setEntity:[self MR_entityDescriptionInContext:context]];\n    \n    return request;\n}\n\n+ (NSFetchRequest *) MR_createFetchRequest\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_createFetchRequestInContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n\n+ (NSFetchRequest *) MR_requestAll\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_createFetchRequestInContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSFetchRequest *) MR_requestAllInContext:(NSManagedObjectContext *)context\n{\n\treturn [self MR_createFetchRequestInContext:context];\n}\n\n+ (NSFetchRequest *) MR_requestAllWithPredicate:(NSPredicate *)searchTerm\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_requestAllWithPredicate:searchTerm inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSFetchRequest *) MR_requestAllWithPredicate:(NSPredicate *)searchTerm inContext:(NSManagedObjectContext *)context\n{\n    NSFetchRequest *request = [self MR_createFetchRequestInContext:context];\n    [request setPredicate:searchTerm];\n    \n    return request;\n}\n\n+ (NSFetchRequest *) MR_requestAllWhere:(NSString *)property isEqualTo:(id)value\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_requestAllWhere:property isEqualTo:value inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSFetchRequest *) MR_requestAllWhere:(NSString *)property isEqualTo:(id)value inContext:(NSManagedObjectContext *)context\n{\n    NSFetchRequest *request = [self MR_createFetchRequestInContext:context];\n    [request setPredicate:[NSPredicate predicateWithFormat:@\"%K = %@\", property, value]];\n    \n    return request;\n}\n\n+ (NSFetchRequest *) MR_requestFirstWithPredicate:(NSPredicate *)searchTerm\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_requestFirstWithPredicate:searchTerm inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSFetchRequest *) MR_requestFirstWithPredicate:(NSPredicate *)searchTerm inContext:(NSManagedObjectContext *)context\n{\n    NSFetchRequest *request = [self MR_createFetchRequestInContext:context];\n    [request setPredicate:searchTerm];\n    [request setFetchLimit:1];\n    \n    return request;\n}\n\n+ (NSFetchRequest *) MR_requestFirstByAttribute:(NSString *)attribute withValue:(id)searchValue\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    return [self MR_requestFirstByAttribute:attribute withValue:searchValue inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSFetchRequest *) MR_requestFirstByAttribute:(NSString *)attribute withValue:(id)searchValue inContext:(NSManagedObjectContext *)context\n{\n    NSFetchRequest *request = [self MR_requestAllWhere:attribute isEqualTo:searchValue inContext:context]; \n    [request setFetchLimit:1];\n    \n    return request;\n}\n\n+ (NSFetchRequest *) MR_requestAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending inContext:(NSManagedObjectContext *)context\n{\n    return [self MR_requestAllSortedBy:sortTerm\n                             ascending:ascending\n                         withPredicate:nil\n                             inContext:context];\n}\n\n+ (NSFetchRequest *) MR_requestAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\treturn [self MR_requestAllSortedBy:sortTerm\n                             ascending:ascending\n                             inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n}\n\n+ (NSFetchRequest *) MR_requestAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(NSPredicate *)searchTerm inContext:(NSManagedObjectContext *)context\n{\n\tNSFetchRequest *request = [self MR_requestAllInContext:context];\n\tif (searchTerm)\n    {\n        [request setPredicate:searchTerm];\n    }\n\t[request setFetchBatchSize:[self MR_defaultBatchSize]];\n\t\n    NSMutableArray* sortDescriptors = [[NSMutableArray alloc] init];\n    NSArray* sortKeys = [sortTerm componentsSeparatedByString:@\",\"];\n    for (__strong NSString* sortKey in sortKeys)\n    {\n        BOOL localAscending = ascending;\n\n        NSArray * sortComponents = [sortKey componentsSeparatedByString:@\":\"];\n        if (sortComponents.count > 1)\n          {\n              NSString * customAscending = sortComponents.lastObject;\n              localAscending = customAscending.boolValue;\n              sortKey = sortComponents[0];\n          }\n      \n        NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:sortKey ascending:localAscending];\n        [sortDescriptors addObject:sortDescriptor];\n    }\n    \n\t[request setSortDescriptors:sortDescriptors];\n    \n\treturn request;\n}\n\n+ (NSFetchRequest *) MR_requestAllSortedBy:(NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(NSPredicate *)searchTerm\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n\tNSFetchRequest *request = [self MR_requestAllSortedBy:sortTerm\n                                                ascending:ascending\n                                            withPredicate:searchTerm \n                                                inContext:[NSManagedObjectContext MR_contextForCurrentThread]];\n#pragma clang diagnostic pop\n\n\treturn request;\n}\n\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObjectContext/NSManagedObjectContext+MagicalChainSave.h",
    "content": "//\n//  NSManagedObjectContext+MagicalChainSave.h\n//  Magical Record\n//\n//  Created by Lee on 8/27/14.\n//  Copyright (c) 2014 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/NSManagedObjectContext+MagicalSaves.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface NSManagedObjectContext (MagicalRecordChainSave)\n/**\n Creates a child context for the current context that you can make changes within, before saving up through all parent contexts to the main queue context, and finally to the saving context. This method will return immediately, and execute the save initially on a background thread, and then on the appropriate thread for each context it saves.\n\n @param block Block that is passed a managed object context.\n*/\n- (void)MR_saveWithBlock:(void (^ __MR_nonnull)(NSManagedObjectContext * __MR_nonnull localContext))block;\n\n/**\n Creates a child context for the current context that you can make changes within, before saving up through all parent contexts to the main queue context, and finally to the saving context. This method will return immediately, and execute the save initially on a background thread, and then on the appropriate thread for each context it saves.\n\n @param block      Block that is passed a managed object context.\n @param completion Completion block that is called once all contexts have been saved, or if an error is encountered.\n */\n- (void)MR_saveWithBlock:(void (^ __MR_nonnull)(NSManagedObjectContext * __MR_nonnull localContext))block completion:(MR_nullable MRSaveCompletionHandler)completion;\n\n/**\n Creates a child context for the current context that you can make changes within, before saving up through all parent contexts to the main queue context, and finally to the saving context. This method will not return until the save has completed, blocking the thread it is called on.\n\n @param block Block that is passed a managed object context.\n */\n- (void)MR_saveWithBlockAndWait:(void (^ __MR_nonnull)(NSManagedObjectContext * __MR_nonnull localContext))block;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObjectContext/NSManagedObjectContext+MagicalChainSave.m",
    "content": "//\n//  NSManagedObjectContext+MagicalChainSave.m\n//  Magical Record\n//\n//  Created by Lee on 8/27/14.\n//  Copyright (c) 2014 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"NSManagedObjectContext+MagicalChainSave.h\"\n#import \"NSManagedObjectContext+MagicalRecord.h\"\n\n@implementation NSManagedObjectContext (MagicalRecord_ChainSave)\n- (void)MR_saveWithBlock:(void (^)(NSManagedObjectContext *localContext))block\n{\n    [self MR_saveWithBlock:block completion:nil];\n}\n\n- (void)MR_saveWithBlock:(void (^)(NSManagedObjectContext *localContext))block completion:(MRSaveCompletionHandler)completion\n{\n    NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextWithParent:self];\n\n    [localContext performBlock:^{\n        [localContext MR_setWorkingName:NSStringFromSelector(_cmd)];\n\n        if (block) {\n            block(localContext);\n        }\n        \n        [localContext MR_saveWithOptions:MRSaveParentContexts completion:completion];\n    }];\n}\n\n#pragma mark - Synchronous saving\n\n- (void)MR_saveWithBlockAndWait:(void (^)(NSManagedObjectContext *localContext))block\n{\n    NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextWithParent:self];\n\n    [localContext performBlockAndWait:^{\n        [localContext MR_setWorkingName:NSStringFromSelector(_cmd)];\n\n        if (block) {\n            block(localContext);\n        }\n        \n        [localContext MR_saveWithOptions:MRSaveParentContexts|MRSaveSynchronously completion:nil];\n    }];\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObjectContext/NSManagedObjectContext+MagicalObserving.h",
    "content": "//\n//  NSManagedObjectContext+MagicalObserving.h\n//  Magical Record\n//\n//  Created by Saul Mora on 3/9/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordDidMergeChangesFromiCloudNotification;\n\n/**\n Category methods to aid in observing changes in other contexts.\n\n @since Available in v2.0 and later.\n */\n@interface NSManagedObjectContext (MagicalObserving)\n\n/**\n Merge changes from another context into self.\n\n @param otherContext Managed object context to observe.\n\n @since Available in v2.0 and later.\n */\n- (void) MR_observeContext:(MR_nonnull NSManagedObjectContext *)otherContext;\n\n/**\n Stops merging changes from the supplied context into self.\n\n @param otherContext Managed object context to stop observing.\n\n @since Available in v2.0 and later.\n */\n- (void) MR_stopObservingContext:(MR_nonnull NSManagedObjectContext *)otherContext;\n\n/**\n Merges changes from another context into self on the main thread.\n\n @param otherContext Managed object context to observe.\n\n @since Available in v2.0 and later.\n */\n- (void) MR_observeContextOnMainThread:(MR_nonnull NSManagedObjectContext *)otherContext;\n\n#if TARGET_OS_OSX || TARGET_OS_IOS\n\n/**\n Merges changes from the supplied persistent store coordinator into self in response to changes from iCloud.\n\n @param coordinator Persistent store coordinator\n\n @see -MR_stopObservingiCloudChangesInCoordinator:\n\n @since Available in v2.0 and later.\n */\n- (void) MR_observeiCloudChangesInCoordinator:(MR_nonnull NSPersistentStoreCoordinator *)coordinator;\n\n/**\n Stops observation and merging of changes from the supplied persistent store coordinator in response to changes from iCloud.\n\n @param coordinator Persistent store coordinator\n\n @see -MR_observeiCloudChangesInCoordinator:\n\n @since Available in v2.0 and later.\n */\n- (void) MR_stopObservingiCloudChangesInCoordinator:(MR_nonnull NSPersistentStoreCoordinator *)coordinator;\n\n#endif\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObjectContext/NSManagedObjectContext+MagicalObserving.m",
    "content": "//\n//  NSManagedObjectContext+MagicalObserving.m\n//  Magical Record\n//\n//  Created by Saul Mora on 3/9/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"NSManagedObjectContext+MagicalObserving.h\"\n#import \"NSManagedObjectContext+MagicalRecord.h\"\n#import \"MagicalRecord+iCloud.h\"\n#import \"MagicalRecordLogging.h\"\n\nNSString * const kMagicalRecordDidMergeChangesFromiCloudNotification = @\"kMagicalRecordDidMergeChangesFromiCloudNotification\";\n\n@implementation NSManagedObjectContext (MagicalObserving)\n\n#pragma mark - Context Observation Helpers\n\n- (void) MR_observeContext:(NSManagedObjectContext *)otherContext\n{\n    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];\n\t[notificationCenter addObserver:self\n                           selector:@selector(MR_mergeChangesFromNotification:)\n                               name:NSManagedObjectContextDidSaveNotification\n                             object:otherContext];\n}\n\n- (void) MR_stopObservingContext:(NSManagedObjectContext *)otherContext\n{\n    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];\n\n\t[notificationCenter removeObserver:self\n                                  name:NSManagedObjectContextDidSaveNotification\n                                object:otherContext];\n}\n\n- (void) MR_observeContextOnMainThread:(NSManagedObjectContext *)otherContext\n{\n    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];\n\t[notificationCenter addObserver:self\n                           selector:@selector(MR_mergeChangesOnMainThread:)\n                               name:NSManagedObjectContextDidSaveNotification\n                             object:otherContext];\n}\n\n#pragma mark - Context iCloud Merge Helpers\n\n- (void) MR_mergeChangesFromiCloud:(NSNotification *)notification\n{\n    [self performBlock:^{\n        \n        MRLogVerbose(@\"Merging changes From iCloud %@context%@\",\n              self == [NSManagedObjectContext MR_defaultContext] ? @\"*** DEFAULT *** \" : @\"\",\n              ([NSThread isMainThread] ? @\" *** on Main Thread ***\" : @\"\"));\n        \n        [self mergeChangesFromContextDidSaveNotification:notification];\n        \n        NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];\n\n        [notificationCenter postNotificationName:kMagicalRecordDidMergeChangesFromiCloudNotification\n                                          object:self\n                                        userInfo:[notification userInfo]];\n    }];\n}\n\n- (void) MR_mergeChangesFromNotification:(NSNotification *)notification\n{\n\tMRLogVerbose(@\"Merging changes to %@context%@\",\n          self == [NSManagedObjectContext MR_defaultContext] ? @\"*** DEFAULT *** \" : @\"\",\n          ([NSThread isMainThread] ? @\" *** on Main Thread ***\" : @\"\"));\n    \n\t[self mergeChangesFromContextDidSaveNotification:notification];\n}\n\n- (void) MR_mergeChangesOnMainThread:(NSNotification *)notification\n{\n\tif ([NSThread isMainThread])\n\t{\n\t\t[self MR_mergeChangesFromNotification:notification];\n\t}\n\telse\n\t{\n\t\t[self performSelectorOnMainThread:@selector(MR_mergeChangesFromNotification:) withObject:notification waitUntilDone:YES];\n\t}\n}\n\n#if TARGET_OS_OSX || TARGET_OS_IOS\n\n- (void) MR_observeiCloudChangesInCoordinator:(NSPersistentStoreCoordinator *)coordinator\n{\n    if (![MagicalRecord isICloudEnabled]) return;\n    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];\n    [notificationCenter addObserver:self\n                           selector:@selector(MR_mergeChangesFromiCloud:)\n                               name:NSPersistentStoreDidImportUbiquitousContentChangesNotification\n                             object:coordinator];\n    \n}\n\n- (void) MR_stopObservingiCloudChangesInCoordinator:(NSPersistentStoreCoordinator *)coordinator\n{\n    if (![MagicalRecord isICloudEnabled]) return;\n    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];\n    [notificationCenter removeObserver:self\n                                  name:NSPersistentStoreDidImportUbiquitousContentChangesNotification\n                                object:coordinator];\n}\n\n#endif\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObjectContext/NSManagedObjectContext+MagicalRecord.h",
    "content": "//\n//  NSManagedObjectContext+MagicalRecord.h\n//\n//  Created by Saul Mora on 11/23/09.\n//  Copyright 2010 Magical Panda Software, LLC All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordDeprecationMacros.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface NSManagedObjectContext (MagicalRecord)\n\n#pragma mark - Setup\n\n/**\n Initializes MagicalRecord's default contexts using the provided persistent store coordinator.\n\n @param coordinator Persistent Store Coordinator\n */\n+ (void) MR_initializeDefaultContextWithCoordinator:(MR_nonnull NSPersistentStoreCoordinator *)coordinator;\n\n#pragma mark - Default Contexts\n/**\n Root context responsible for sending changes to the main persistent store coordinator that will be saved to disk.\n\n @discussion Use this context for making and saving changes. All saves will be merged into the context returned by `MR_defaultContext` as well.\n\n @return Private context used for saving changes to disk on a background thread\n */\n+ (MR_nonnull NSManagedObjectContext *) MR_rootSavingContext;\n\n/**\n @discussion Please do not use this context for saving changes, as it will block the main thread when doing so.\n\n @return Main queue context that can be observed for changes\n */\n+ (MR_nonnull NSManagedObjectContext *) MR_defaultContext;\n\n#pragma mark - Context Creation\n\n/**\n Creates and returns a new managed object context of type `NSPrivateQueueConcurrencyType`, with it's parent context set to the root saving context.\n @return Private context with the parent set to the root saving context\n */\n+ (MR_nonnull NSManagedObjectContext *) MR_context;\n\n/**\n Creates and returns a new managed object context of type `NSPrivateQueueConcurrencyType`, with it's parent context set to the root saving context.\n\n @param parentContext Context to set as the parent of the newly initialized context\n\n @return Private context with the parent set to the provided context\n */\n+ (MR_nonnull NSManagedObjectContext *) MR_contextWithParent:(MR_nonnull NSManagedObjectContext *)parentContext;\n\n/**\n Creates and returns a new managed object context of type `NSPrivateQueueConcurrencyType`, with it's persistent store coordinator set to the provided coordinator.\n \n @param coordinator A persistent store coordinator\n\n @return Private context with it's persistent store coordinator set to the provided coordinator\n */\n+ (MR_nonnull NSManagedObjectContext *) MR_contextWithStoreCoordinator:(MR_nonnull NSPersistentStoreCoordinator *)coordinator;\n\n/**\n Initializes a context of type `NSMainQueueConcurrencyType`.\n\n @return A context initialized using the `NSPrivateQueueConcurrencyType` concurrency type.\n */\n+ (MR_nonnull NSManagedObjectContext *) MR_newMainQueueContext NS_RETURNS_RETAINED;\n\n/**\n Initializes a context of type `NSPrivateQueueConcurrencyType`.\n\n @return A context initialized using the `NSPrivateQueueConcurrencyType` concurrency type.\n */\n+ (MR_nonnull NSManagedObjectContext *) MR_newPrivateQueueContext NS_RETURNS_RETAINED;\n\n#pragma mark - Debugging\n\n/**\n Sets a working name for the context, which will be used in debug logs.\n\n @param workingName Name for the context\n */\n- (void) MR_setWorkingName:(MR_nonnull NSString *)workingName;\n\n/**\n @return Working name for the context\n */\n- (MR_nonnull NSString *) MR_workingName;\n\n/**\n @return Description of this context\n */\n- (MR_nonnull NSString *) MR_description;\n\n/**\n @return Description of the parent contexts of this context\n */\n- (MR_nonnull NSString *) MR_parentChain;\n\n\n#pragma mark - Helpers\n\n/**\n Reset the default context.\n */\n+ (void) MR_resetDefaultContext;\n\n/**\n Delete the provided objects from the context\n\n @param objects An object conforming to `NSFastEnumeration`, containing NSManagedObject instances\n */\n- (void) MR_deleteObjects:(MR_nonnull id <NSFastEnumeration>)objects;\n\n@end\n\n#pragma mark - Deprecated Methods — DO NOT USE\n@interface NSManagedObjectContext (MagicalRecordDeprecated)\n\n+ (MR_nonnull NSManagedObjectContext *) MR_contextWithoutParent MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"4.0\", \"MR_newPrivateQueueContext\");\n+ (MR_nonnull NSManagedObjectContext *) MR_newContext MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"4.0\", \"MR_context\");\n+ (MR_nonnull NSManagedObjectContext *) MR_newContextWithParent:(MR_nonnull NSManagedObjectContext *)parentContext MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"4.0\", \"MR_contextWithParent:\");\n+ (MR_nonnull NSManagedObjectContext *) MR_newContextWithStoreCoordinator:(MR_nonnull NSPersistentStoreCoordinator *)coordinator MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"4.0\", \"MR_contextWithStoreCoordinator:\");\n\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObjectContext/NSManagedObjectContext+MagicalRecord.m",
    "content": "//\n//  NSManagedObjectContext+MagicalRecord.m\n//\n//  Created by Saul Mora on 11/23/09.\n//  Copyright 2010 Magical Panda Software, LLC All rights reserved.\n//\n\n#import \"NSManagedObjectContext+MagicalRecord.h\"\n#import \"NSManagedObjectContext+MagicalObserving.h\"\n#import \"NSManagedObjectContext+MagicalThreading.h\"\n#import \"NSPersistentStoreCoordinator+MagicalRecord.h\"\n#import \"MagicalRecord+ErrorHandling.h\"\n#import \"MagicalRecord+iCloud.h\"\n#import \"MagicalRecordLogging.h\"\n\nstatic NSString * const MagicalRecordContextWorkingName = @\"MagicalRecordContextWorkingName\";\n\nstatic NSManagedObjectContext *MagicalRecordRootSavingContext;\nstatic NSManagedObjectContext *MagicalRecordDefaultContext;\n\nstatic id MagicalRecordUbiquitySetupNotificationObserver;\n\n@implementation NSManagedObjectContext (MagicalRecord)\n\n#pragma mark - Setup\n\n+ (void) MR_initializeDefaultContextWithCoordinator:(NSPersistentStoreCoordinator *)coordinator\n{\n    NSAssert(coordinator, @\"Provided coordinator cannot be nil!\");\n    if (MagicalRecordDefaultContext == nil)\n    {\n        NSManagedObjectContext *rootContext = [self MR_contextWithStoreCoordinator:coordinator];\n        [self MR_setRootSavingContext:rootContext];\n\n        NSManagedObjectContext *defaultContext = [self MR_newMainQueueContext];\n        [self MR_setDefaultContext:defaultContext];\n\n        [defaultContext setParentContext:rootContext];\n    }\n}\n\n#pragma mark - Default Contexts\n\n+ (NSManagedObjectContext *) MR_defaultContext\n{\n    @synchronized(self) {\n        NSAssert(MagicalRecordDefaultContext != nil, @\"Default context is nil! Did you forget to initialize the Core Data Stack?\");\n        return MagicalRecordDefaultContext;\n    }\n}\n\n+ (NSManagedObjectContext *) MR_rootSavingContext\n{\n    NSAssert(MagicalRecordRootSavingContext != nil, @\"Root saving context is nil! Did you forget to initialize the Core Data Stack?\");\n    return MagicalRecordRootSavingContext;\n}\n\n#pragma mark - Context Creation\n\n+ (NSManagedObjectContext *) MR_context\n{\n    return [self MR_contextWithParent:[self MR_rootSavingContext]];\n}\n\n+ (NSManagedObjectContext *) MR_contextWithParent:(NSManagedObjectContext *)parentContext\n{\n    NSManagedObjectContext *context = [self MR_newPrivateQueueContext];\n    [context setParentContext:parentContext];\n    [context MR_obtainPermanentIDsBeforeSaving];\n    return context;\n}\n\n+ (NSManagedObjectContext *) MR_contextWithStoreCoordinator:(NSPersistentStoreCoordinator *)coordinator\n{\n\tNSManagedObjectContext *context = nil;\n    if (coordinator != nil)\n\t{\n        context = [self MR_newPrivateQueueContext];\n        [context performBlockAndWait:^{\n            [context setPersistentStoreCoordinator:coordinator];\n            MRLogVerbose(@\"Created new context %@ with store coordinator: %@\", [context MR_workingName], coordinator);\n        }];\n    }\n    return context;\n}\n\n+ (NSManagedObjectContext *) MR_newMainQueueContext\n{\n    NSManagedObjectContext *context = [[self alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];\n    MRLogInfo(@\"Created new main queue context: %@\", context);\n    return context;\n}\n\n+ (NSManagedObjectContext *) MR_newPrivateQueueContext\n{\n    NSManagedObjectContext *context = [[self alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];\n    MRLogInfo(@\"Created new private queue context: %@\", context);\n    return context;\n}\n\n#pragma mark - Debugging\n\n- (void)MR_setWorkingName:(NSString *)workingName\n{\n    void (^setWorkingName)(void) = ^{\n        [[self userInfo] setObject:workingName forKey:MagicalRecordContextWorkingName];\n    };\n\n    if (self.concurrencyType == NSMainQueueConcurrencyType && [NSThread isMainThread])\n    {\n        setWorkingName();\n    }\n    else\n    {\n        [self performBlockAndWait:setWorkingName];\n    }\n}\n\n- (NSString *)MR_workingName\n{\n    __block NSString *workingName;\n\n    void (^getWorkingName)(void) = ^{\n        workingName = [[self userInfo] objectForKey:MagicalRecordContextWorkingName];\n    };\n\n    if (self.concurrencyType == NSMainQueueConcurrencyType && [NSThread isMainThread])\n    {\n        getWorkingName();\n    }\n    else\n    {\n        [self performBlockAndWait:getWorkingName];\n    }\n\n    if ([workingName length] == 0)\n    {\n        workingName = @\"Untitled Context\";\n    }\n\n    return workingName;\n}\n\n- (NSString *) MR_description\n{\n    NSString *onMainThread = [NSThread isMainThread] ? @\"the main thread\" : @\"a background thread\";\n\n    __block NSString *workingName;\n\n    [self performBlockAndWait:^{\n        workingName = [self MR_workingName];\n    }];\n\n    return [NSString stringWithFormat:@\"<%@ (%p): %@> on %@\", NSStringFromClass([self class]), self, workingName, onMainThread];\n}\n\n- (NSString *) MR_parentChain\n{\n    NSMutableString *familyTree = [@\"\\n\" mutableCopy];\n    NSManagedObjectContext *currentContext = self;\n    do\n    {\n        [familyTree appendFormat:@\"- %@ (%p) %@\\n\", [currentContext MR_workingName], currentContext, (currentContext == self ? @\"(*)\" : @\"\")];\n    }\n    while ((currentContext = [currentContext parentContext]));\n\n    return [NSString stringWithString:familyTree];\n}\n\n#pragma mark - Helpers\n\n+ (void) MR_resetDefaultContext\n{\n    NSManagedObjectContext *defaultContext = [NSManagedObjectContext MR_defaultContext];\n    NSAssert(NSConfinementConcurrencyType == [defaultContext concurrencyType], @\"Do not call this method on a confinement context.\");\n\n    if ([NSThread isMainThread] == NO) {\n        dispatch_async(dispatch_get_main_queue(), ^{\n            [self MR_resetDefaultContext];\n        });\n\n        return;\n    }\n\n    [defaultContext reset];\n}\n\n- (void) MR_deleteObjects:(id <NSFastEnumeration>)objects\n{\n    for (NSManagedObject *managedObject in objects)\n    {\n        [self deleteObject:managedObject];\n    }\n}\n\n#pragma mark - Notification Handlers\n\n- (void) MR_contextWillSave:(NSNotification *)notification\n{\n    NSManagedObjectContext *context = [notification object];\n    NSSet *insertedObjects = [context insertedObjects];\n\n    if ([insertedObjects count])\n    {\n        MRLogVerbose(@\"Context '%@' is about to save: obtaining permanent IDs for %lu new inserted object(s).\", [context MR_workingName], (unsigned long)[insertedObjects count]);\n        NSError *error = nil;\n        BOOL success = [context obtainPermanentIDsForObjects:[insertedObjects allObjects] error:&error];\n        if (!success)\n        {\n            [MagicalRecord handleErrors:error];\n        }\n    }\n}\n\n+ (void)rootContextDidSave:(NSNotification *)notification\n{\n    if ([notification object] != [self MR_rootSavingContext])\n    {\n        return;\n    }\n\n    if ([NSThread isMainThread] == NO)\n    {\n        dispatch_async(dispatch_get_main_queue(), ^{\n            [self rootContextDidSave:notification];\n        });\n\n        return;\n    }\n\n    for (NSManagedObject *object in [[notification userInfo] objectForKey:NSUpdatedObjectsKey])\n    {\n        [[[self MR_defaultContext] objectWithID:[object objectID]] willAccessValueForKey:nil];\n    }\n\n    [[self MR_defaultContext] mergeChangesFromContextDidSaveNotification:notification];\n}\n\n#pragma mark - Private Methods\n\n+ (void) MR_cleanUp\n{\n    [self MR_setDefaultContext:nil];\n    [self MR_setRootSavingContext:nil];\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    [self MR_clearNonMainThreadContextsCache];\n#pragma clang diagnostic pop\n}\n\n- (void) MR_obtainPermanentIDsBeforeSaving\n{\n    [[NSNotificationCenter defaultCenter] addObserver:self\n                                             selector:@selector(MR_contextWillSave:)\n                                                 name:NSManagedObjectContextWillSaveNotification\n                                               object:self];\n}\n\n+ (void) MR_setDefaultContext:(NSManagedObjectContext *)moc\n{\n    if (MagicalRecordDefaultContext)\n    {\n        [[NSNotificationCenter defaultCenter] removeObserver:MagicalRecordDefaultContext];\n    }\n\n    if (MagicalRecordUbiquitySetupNotificationObserver)\n    {\n        [[NSNotificationCenter defaultCenter] removeObserver:MagicalRecordUbiquitySetupNotificationObserver];\n        MagicalRecordUbiquitySetupNotificationObserver = nil;\n    }\n\n    #if TARGET_OS_OSX || TARGET_OS_IOS\n    NSPersistentStoreCoordinator *coordinator = [NSPersistentStoreCoordinator MR_defaultStoreCoordinator];\n    if ([MagicalRecord isICloudEnabled])\n    {\n        [MagicalRecordDefaultContext MR_stopObservingiCloudChangesInCoordinator:coordinator];\n    }\n    #endif\n\n    MagicalRecordDefaultContext = moc;\n    [MagicalRecordDefaultContext MR_setWorkingName:@\"MagicalRecord Default Context\"];\n\n    if ((MagicalRecordDefaultContext != nil) && ([self MR_rootSavingContext] != nil)) {\n        [[NSNotificationCenter defaultCenter] addObserver:self\n                                                 selector:@selector(rootContextDidSave:)\n                                                     name:NSManagedObjectContextDidSaveNotification\n                                                   object:[self MR_rootSavingContext]];\n    }\n\n    [moc MR_obtainPermanentIDsBeforeSaving];\n    #if TARGET_OS_OSX || TARGET_OS_IOS\n    if ([MagicalRecord isICloudEnabled])\n    {\n        [MagicalRecordDefaultContext MR_observeiCloudChangesInCoordinator:coordinator];\n    }\n    else\n    {\n        // If icloud is NOT enabled at the time of this method being called, listen for it to be setup later, and THEN set up observing cloud changes\n        MagicalRecordUbiquitySetupNotificationObserver = [[NSNotificationCenter defaultCenter] addObserverForName:kMagicalRecordPSCDidCompleteiCloudSetupNotification\n                                                                                            object:nil\n                                                                                             queue:[NSOperationQueue mainQueue]\n                                                                                        usingBlock:^(NSNotification *note) {\n                                                                                            [[NSManagedObjectContext MR_defaultContext] MR_observeiCloudChangesInCoordinator:coordinator];\n                                                                                        }];\n    }\n    #endif\n    MRLogInfo(@\"Set default context: %@\", MagicalRecordDefaultContext);\n}\n\n+ (void)MR_setRootSavingContext:(NSManagedObjectContext *)context\n{\n    if (MagicalRecordRootSavingContext)\n    {\n        [[NSNotificationCenter defaultCenter] removeObserver:MagicalRecordRootSavingContext];\n    }\n\n    MagicalRecordRootSavingContext = context;\n    \n    [MagicalRecordRootSavingContext performBlock:^{\n        [MagicalRecordRootSavingContext MR_obtainPermanentIDsBeforeSaving];\n        [MagicalRecordRootSavingContext setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];\n        [MagicalRecordRootSavingContext MR_setWorkingName:@\"MagicalRecord Root Saving Context\"];\n    }];\n\n    MRLogInfo(@\"Set root saving context: %@\", MagicalRecordRootSavingContext);\n}\n\n@end\n\n#pragma mark - Deprecated Methods — DO NOT USE\n@implementation NSManagedObjectContext (MagicalRecordDeprecated)\n\n+ (NSManagedObjectContext *) MR_contextWithoutParent\n{\n    return [self MR_newPrivateQueueContext];\n}\n\n+ (NSManagedObjectContext *) MR_newContext\n{\n    return [self MR_context];\n}\n\n+ (NSManagedObjectContext *) MR_newContextWithParent:(NSManagedObjectContext *)parentContext\n{\n    return [self MR_contextWithParent:parentContext];\n}\n\n+ (NSManagedObjectContext *) MR_newContextWithStoreCoordinator:(NSPersistentStoreCoordinator *)coordinator\n{\n    return [self MR_contextWithStoreCoordinator:coordinator];\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObjectContext/NSManagedObjectContext+MagicalSaves.h",
    "content": "//\n//  NSManagedObjectContext+MagicalSaves.h\n//  Magical Record\n//\n//  Created by Saul Mora on 3/9/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordDeprecationMacros.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\ntypedef NS_OPTIONS(NSUInteger, MRSaveOptions) {\n    /** No options — used for cleanliness only */\n    MRSaveOptionNone = 0,\n\n    /** When saving, continue saving parent contexts until the changes are present in the persistent store */\n    MRSaveParentContexts = 1 << 1,\n\n    /** Perform saves synchronously, blocking execution on the current thread until the save is complete */\n    MRSaveSynchronously = 1 << 2,\n\n    /** Perform saves synchronously, blocking execution on the current thread until the save is complete; however, saves root context asynchronously */\n    MRSaveSynchronouslyExceptRootContext = 1 << 3\n};\n\ntypedef void (^MRSaveCompletionHandler)(BOOL contextDidSave, NSError * __MR_nullable error);\n\n@interface NSManagedObjectContext (MagicalSaves)\n\n/**\n Asynchronously save changes in the current context and it's parent.\n Executes a save on the current context's dispatch queue asynchronously. This method only saves the current context, and the parent of the current context if one is set. The completion block will always be called on the main queue.\n\n @param completion Completion block that is called after the save has completed. The block is passed a success state as a `BOOL` and an `NSError` instance if an error occurs. Always called on the main queue.\n\n @since Available in v2.1.0 and later.\n*/\n- (void) MR_saveOnlySelfWithCompletion:(MR_nullable MRSaveCompletionHandler)completion;\n\n/**\n Asynchronously save changes in the current context all the way back to the persistent store.\n Executes asynchronous saves on the current context, and any ancestors, until the changes have been persisted to the assigned persistent store. The completion block will always be called on the main queue.\n\n @param completion Completion block that is called after the save has completed. The block is passed a success state as a `BOOL` and an `NSError` instance if an error occurs. Always called on the main queue.\n\n @since Available in v2.1.0 and later.\n */\n- (void) MR_saveToPersistentStoreWithCompletion:(MR_nullable MRSaveCompletionHandler)completion;\n\n/**\n Synchronously save changes in the current context and it's parent.\n Executes a save on the current context's dispatch queue. This method only saves the current context, and the parent of the current context if one is set. The method will not return until the save is complete.\n\n @since Available in v2.1.0 and later.\n */\n- (void) MR_saveOnlySelfAndWait;\n\n/**\n Synchronously save changes in the current context all the way back to the persistent store.\n Executes saves on the current context, and any ancestors, until the changes have been persisted to the assigned persistent store. The method will not return until the save is complete.\n\n @since Available in v2.1.0 and later.\n */\n- (void) MR_saveToPersistentStoreAndWait;\n\n/**\n Save the current context with options.\n All other save methods are conveniences to this method.\n\n @param saveOptions Bitmasked options for the save process.\n @param completion  Completion block that is called after the save has completed. The block is passed a success state as a `BOOL` and an `NSError` instance if an error occurs. Always called on the main queue.\n\n @since Available in v2.1.0 and later.\n */\n- (void) MR_saveWithOptions:(MRSaveOptions)saveOptions completion:(MR_nullable MRSaveCompletionHandler)completion;\n\n@end\n\n#pragma mark - Deprecated Methods — DO NOT USE\n@interface NSManagedObjectContext (MagicalSavesDeprecated)\n\n- (void) MR_save MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"3.0\", \"MR_saveToPersistentStoreAndWait\");\n- (void) MR_saveWithErrorCallback:(void (^ __MR_nullable)(NSError * __MR_nullable error))errorCallback MR_DEPRECATED_WILL_BE_REMOVED_IN(\"3.0\");\n- (void) MR_saveInBackgroundCompletion:(void (^ __MR_nullable)(void))completion MR_DEPRECATED_WILL_BE_REMOVED_IN(\"3.0\");\n- (void) MR_saveInBackgroundErrorHandler:(void (^ __MR_nullable)(NSError * __MR_nullable error))errorCallback MR_DEPRECATED_WILL_BE_REMOVED_IN(\"3.0\");\n- (void) MR_saveInBackgroundErrorHandler:(void (^ __MR_nullable)(NSError * __MR_nullable error))errorCallback completion:(void (^ __MR_nullable)(void))completion MR_DEPRECATED_WILL_BE_REMOVED_IN(\"3.0\");\n- (void) MR_saveNestedContexts MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"3.0\", \"MR_saveToPersistentStoreWithCompletion:\");\n- (void) MR_saveNestedContextsErrorHandler:(void (^ __MR_nullable)(NSError * __MR_nullable error))errorCallback MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"3.0\", \"MR_saveToPersistentStoreWithCompletion:\");\n- (void) MR_saveNestedContextsErrorHandler:(void (^ __MR_nullable)(NSError * __MR_nullable error))errorCallback completion:(void (^ __MR_nullable)(void))completion MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"3.0\", \"MR_saveToPersistentStoreWithCompletion:\");\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObjectContext/NSManagedObjectContext+MagicalSaves.m",
    "content": "//\n//  NSManagedObjectContext+MagicalSaves.m\n//  Magical Record\n//\n//  Created by Saul Mora on 3/9/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"NSManagedObjectContext+MagicalSaves.h\"\n#import \"NSManagedObjectContext+MagicalRecord.h\"\n#import \"MagicalRecord+ErrorHandling.h\"\n#import \"MagicalRecordLogging.h\"\n\n@implementation NSManagedObjectContext (MagicalSaves)\n\n- (void) MR_saveOnlySelfWithCompletion:(MRSaveCompletionHandler)completion\n{\n    [self MR_saveWithOptions:MRSaveOptionNone completion:completion];\n}\n\n- (void) MR_saveOnlySelfAndWait\n{\n    [self MR_saveWithOptions:MRSaveSynchronously completion:nil];\n}\n\n- (void) MR_saveToPersistentStoreWithCompletion:(MRSaveCompletionHandler)completion\n{\n    [self MR_saveWithOptions:MRSaveParentContexts completion:completion];\n}\n\n- (void) MR_saveToPersistentStoreAndWait\n{\n    [self MR_saveWithOptions:MRSaveParentContexts | MRSaveSynchronously completion:nil];\n}\n\n- (void) MR_saveWithOptions:(MRSaveOptions)saveOptions completion:(MRSaveCompletionHandler)completion\n{\n    __block BOOL hasChanges = NO;\n\n    if ([self concurrencyType] == NSConfinementConcurrencyType)\n    {\n        hasChanges = [self hasChanges];\n    }\n    else\n    {\n        [self performBlockAndWait:^{\n            hasChanges = [self hasChanges];\n        }];\n    }\n\n    if (!hasChanges)\n    {\n        MRLogVerbose(@\"NO CHANGES IN ** %@ ** CONTEXT - NOT SAVING\", [self MR_workingName]);\n\n        if (completion)\n        {\n            dispatch_async(dispatch_get_main_queue(), ^{\n                completion(NO, nil);\n            });\n        }\n\n        return;\n    }\n\n    BOOL shouldSaveParentContexts = ((saveOptions & MRSaveParentContexts) == MRSaveParentContexts);\n    BOOL shouldSaveSynchronously = ((saveOptions & MRSaveSynchronously) == MRSaveSynchronously);\n    BOOL shouldSaveSynchronouslyExceptRoot = ((saveOptions & MRSaveSynchronouslyExceptRootContext) == MRSaveSynchronouslyExceptRootContext);\n\n    BOOL saveSynchronously = (shouldSaveSynchronously && !shouldSaveSynchronouslyExceptRoot) ||\n                             (shouldSaveSynchronouslyExceptRoot && (self != [[self class] MR_rootSavingContext]));\n\n    id saveBlock = ^{\n        MRLogInfo(@\"→ Saving %@\", [self MR_description]);\n        MRLogVerbose(@\"→ Save Parents? %@\", shouldSaveParentContexts ? @\"YES\" : @\"NO\");\n        MRLogVerbose(@\"→ Save Synchronously? %@\", saveSynchronously ? @\"YES\" : @\"NO\");\n\n        BOOL saveResult = NO;\n        NSError *error = nil;\n\n        @try\n        {\n            saveResult = [self save:&error];\n        }\n        @catch(NSException *exception)\n        {\n            MRLogError(@\"Unable to perform save: %@\", (id)[exception userInfo] ?: (id)[exception reason]);\n        }\n        @finally\n        {\n            [MagicalRecord handleErrors:error];\n\n            if (saveResult && shouldSaveParentContexts && [self parentContext])\n            {\n                // Add/remove the synchronous save option from the mask if necessary\n                MRSaveOptions modifiedOptions = saveOptions;\n\n                if (saveSynchronously)\n                {\n                    modifiedOptions |= MRSaveSynchronously;\n                }\n                else\n                {\n                    modifiedOptions &= ~MRSaveSynchronously;\n                }\n\n                // If we're saving parent contexts, do so\n                [[self parentContext] MR_saveWithOptions:modifiedOptions completion:completion];\n            }\n            else\n            {\n                if (saveResult)\n                {\n                    MRLogVerbose(@\"→ Finished saving: %@\", [self MR_description]);\n                }\n\n                if (completion)\n                {\n                    dispatch_async(dispatch_get_main_queue(), ^{\n                        completion(saveResult, error);\n                    });\n                }\n            }\n        }\n    };\n\n    if (saveSynchronously)\n    {\n        [self performBlockAndWait:saveBlock];\n    }\n    else\n    {\n        [self performBlock:saveBlock];\n    }\n}\n\n@end\n\n#pragma mark - Deprecated Methods — DO NOT USE\n@implementation NSManagedObjectContext (MagicalSavesDeprecated)\n\n- (void) MR_save\n{\n    [self MR_saveToPersistentStoreAndWait];\n}\n\n- (void) MR_saveWithErrorCallback:(void (^)(NSError *error))errorCallback\n{\n    [self MR_saveWithOptions:MRSaveSynchronously | MRSaveParentContexts completion:^(BOOL contextDidSave, NSError *error) {\n        if (!contextDidSave && errorCallback)\n        {\n            errorCallback(error);\n        }\n    }];\n}\n\n- (void) MR_saveInBackgroundCompletion:(void (^)(void))completion\n{\n    [self MR_saveOnlySelfWithCompletion:^(BOOL contextDidSave, NSError *error) {\n        if (contextDidSave && completion)\n        {\n            completion();\n        }\n    }];\n}\n\n- (void) MR_saveInBackgroundErrorHandler:(void (^)(NSError *error))errorCallback\n{\n    [self MR_saveOnlySelfWithCompletion:^(BOOL contextDidSave, NSError *error) {\n        if (!contextDidSave && errorCallback)\n        {\n            errorCallback(error);\n        }\n    }];\n}\n\n- (void) MR_saveInBackgroundErrorHandler:(void (^)(NSError *error))errorCallback completion:(void (^)(void))completion\n{\n    [self MR_saveOnlySelfWithCompletion:^(BOOL contextDidSave, NSError *error) {\n        if (contextDidSave && completion)\n        {\n            completion();\n        }\n        else if (errorCallback)\n        {\n            errorCallback(error);\n        }\n    }];\n}\n\n- (void) MR_saveNestedContexts\n{\n    [self MR_saveToPersistentStoreWithCompletion:nil];\n}\n\n- (void) MR_saveNestedContextsErrorHandler:(void (^)(NSError *error))errorCallback\n{\n    [self MR_saveToPersistentStoreWithCompletion:^(BOOL contextDidSave, NSError *error) {\n        if (!contextDidSave && errorCallback)\n        {\n            errorCallback(error);\n        }\n    }];\n}\n\n- (void) MR_saveNestedContextsErrorHandler:(void (^)(NSError *error))errorCallback completion:(void (^)(void))completion\n{\n    [self MR_saveToPersistentStoreWithCompletion:^(BOOL contextDidSave, NSError *error) {\n        if (contextDidSave && completion)\n        {\n            completion();\n        }\n        else if (errorCallback)\n        {\n            errorCallback(error);\n        }\n    }];\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObjectContext/NSManagedObjectContext+MagicalThreading.h",
    "content": "//\n//  NSManagedObjectContext+MagicalThreading.h\n//  Magical Record\n//\n//  Created by Saul Mora on 3/9/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface NSManagedObjectContext (MagicalThreading)\n\n+ (MR_nonnull NSManagedObjectContext *) MR_contextForCurrentThread __attribute((deprecated(\"This method will be removed in MagicalRecord 3.0\")));\n+ (void) MR_clearNonMainThreadContextsCache __attribute((deprecated(\"This method will be removed in MagicalRecord 3.0\")));\n+ (void) MR_resetContextForCurrentThread __attribute((deprecated(\"This method will be removed in MagicalRecord 3.0\")));\n+ (void) MR_clearContextForCurrentThread __attribute((deprecated(\"This method will be removed in MagicalRecord 3.0\")));\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObjectContext/NSManagedObjectContext+MagicalThreading.m",
    "content": "//\n//  NSManagedObjectContext+MagicalThreading.m\n//  Magical Record\n//\n//  Created by Saul Mora on 3/9/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"NSManagedObjectContext+MagicalThreading.h\"\n#import \"NSManagedObjectContext+MagicalRecord.h\"\n#import \"NSManagedObject+MagicalRecord.h\"\n#include <libkern/OSAtomic.h>\n\nstatic NSString const * kMagicalRecordManagedObjectContextKey = @\"MagicalRecord_NSManagedObjectContextForThreadKey\";\nstatic NSString const * kMagicalRecordManagedObjectContextCacheVersionKey = @\"MagicalRecord_CacheVersionOfNSManagedObjectContextForThreadKey\";\nstatic volatile int32_t contextsCacheVersion = 0;\n\n\n@implementation NSManagedObjectContext (MagicalThreading)\n\n+ (void)MR_resetContextForCurrentThread\n{\n    [[NSManagedObjectContext MR_contextForCurrentThread] reset];\n}\n\n+ (void) MR_clearNonMainThreadContextsCache\n{\n\tOSAtomicIncrement32(&contextsCacheVersion);\n}\n\n+ (NSManagedObjectContext *) MR_contextForCurrentThread\n{\n\tif ([NSThread isMainThread])\n\t{\n\t\treturn [self MR_defaultContext];\n\t}\n\telse\n\t{\n\t\t// contextsCacheVersion can change (atomically) at any time, so grab a copy to ensure that we always\n\t\t// use the same value throughout the remainder of this method. We are OK with this method returning\n\t\t// an outdated context if MR_clearNonMainThreadContextsCache is called from another thread while this\n\t\t// method is being executed. This behavior is unrelated to our choice to use a counter for synchronization.\n\t\t// We would have the same behavior if we used @synchronized() (or any other lock-based synchronization\n\t\t// method) since MR_clearNonMainThreadContextsCache would have to wait until this method finished before\n\t\t// it could acquire the mutex, resulting in us still returning an outdated context in that case as well.\n\t\tint32_t targetCacheVersionForContext = contextsCacheVersion;\n\n\t\tNSMutableDictionary *threadDict = [[NSThread currentThread] threadDictionary];\n\t\tNSManagedObjectContext *threadContext = [threadDict objectForKey:kMagicalRecordManagedObjectContextKey];\n\t\tNSNumber *currentCacheVersionForContext = [threadDict objectForKey:kMagicalRecordManagedObjectContextCacheVersionKey];\n\t\tNSAssert((threadContext != nil && currentCacheVersionForContext != nil)\n                 || (threadContext == nil && currentCacheVersionForContext == nil),\n                 @\"The Magical Record keys should either both be present or neither be present, otherwise we're in an inconsistent state!\");\n\t\tif ((threadContext == nil) || (currentCacheVersionForContext == nil) || ((int32_t)[currentCacheVersionForContext integerValue] != targetCacheVersionForContext))\n\t\t{\n\t\t\tthreadContext = [self MR_contextWithParent:[NSManagedObjectContext MR_defaultContext]];\n\t\t\t[threadDict setObject:threadContext forKey:kMagicalRecordManagedObjectContextKey];\n\t\t\t[threadDict setObject:[NSNumber numberWithInteger:targetCacheVersionForContext]\n                           forKey:kMagicalRecordManagedObjectContextCacheVersionKey];\n\t\t}\n\t\treturn threadContext;\n\t}\n}\n\n+ (void) MR_clearContextForCurrentThread {\n    [[[NSThread currentThread] threadDictionary] removeObjectForKey:kMagicalRecordManagedObjectContextKey];\n    [[[NSThread currentThread] threadDictionary] removeObjectForKey:kMagicalRecordManagedObjectContextCacheVersionKey];\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObjectModel+MagicalRecord.h",
    "content": "//\n//  NSManagedObjectModel+MagicalRecord.h\n//\n//  Created by Saul Mora on 3/11/10.\n//  Copyright 2010 Magical Panda Software, LLC All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface NSManagedObjectModel (MagicalRecord)\n\n+ (MR_nullable NSManagedObjectModel *) MR_defaultManagedObjectModel;\n\n+ (void) MR_setDefaultManagedObjectModel:(MR_nullable NSManagedObjectModel *)newDefaultModel;\n\n+ (MR_nullable NSManagedObjectModel *) MR_mergedObjectModelFromMainBundle;\n+ (MR_nullable NSManagedObjectModel *) MR_newManagedObjectModelNamed:(MR_nonnull NSString *)modelFileName NS_RETURNS_RETAINED;\n+ (MR_nullable NSManagedObjectModel *) MR_managedObjectModelNamed:(MR_nonnull NSString *)modelFileName;\n+ (MR_nullable NSManagedObjectModel *) MR_newModelNamed:(MR_nonnull NSString *) modelName inBundleNamed:(MR_nonnull NSString *) bundleName NS_RETURNS_RETAINED;\n+ (MR_nullable NSManagedObjectModel *) MR_newModelNamed:(MR_nonnull NSString *) modelName inBundle:(MR_nonnull NSBundle*) bundle NS_RETURNS_RETAINED;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSManagedObjectModel+MagicalRecord.m",
    "content": "//\n//  NSManagedObjectModel+MagicalRecord.m\n//\n//  Created by Saul Mora on 3/11/10.\n//  Copyright 2010 Magical Panda Software, LLC All rights reserved.\n//\n\n#import \"NSManagedObjectModel+MagicalRecord.h\"\n#import \"MagicalRecord+Options.h\"\n\nstatic NSManagedObjectModel *defaultManagedObjectModel_ = nil;\n\n@implementation NSManagedObjectModel (MagicalRecord)\n\n+ (NSManagedObjectModel *) MR_defaultManagedObjectModel\n{\n\tif (defaultManagedObjectModel_ == nil && [MagicalRecord shouldAutoCreateManagedObjectModel])\n\t{\n        [self MR_setDefaultManagedObjectModel:[self MR_mergedObjectModelFromMainBundle]];\n\t}\n\treturn defaultManagedObjectModel_;\n}\n\n+ (void) MR_setDefaultManagedObjectModel:(NSManagedObjectModel *)newDefaultModel\n{\n\tdefaultManagedObjectModel_ = newDefaultModel;\n}\n\n+ (NSManagedObjectModel *) MR_mergedObjectModelFromMainBundle\n{\n    return [self mergedModelFromBundles:nil];\n}\n\n+ (NSManagedObjectModel *) MR_newModelNamed:(NSString *) modelName inBundleNamed:(NSString *) bundleName\n{\n    NSString *path = [[NSBundle mainBundle] pathForResource:[modelName stringByDeletingPathExtension] \n                                                     ofType:[modelName pathExtension] \n                                                inDirectory:bundleName];\n    NSURL *modelUrl = [NSURL fileURLWithPath:path];\n    \n    NSManagedObjectModel *mom = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelUrl];\n    \n    return mom;\n}\n\n+ (NSManagedObjectModel *) MR_newModelNamed:(NSString *) modelName inBundle:(NSBundle*) bundle\n{\n    NSString *path = [bundle pathForResource:[modelName stringByDeletingPathExtension]\n                                                     ofType:[modelName pathExtension]];\n    NSURL *modelUrl = [NSURL fileURLWithPath:path];\n    \n    NSManagedObjectModel *mom = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelUrl];\n    \n    return mom;\n}\n\n+ (NSManagedObjectModel *) MR_newManagedObjectModelNamed:(NSString *)modelFileName\n{\n\tNSString *path = [[NSBundle mainBundle] pathForResource:[modelFileName stringByDeletingPathExtension] \n                                                     ofType:[modelFileName pathExtension]];\n\tNSURL *momURL = [NSURL fileURLWithPath:path];\n\t\n\tNSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];\n\treturn model;\n}\n\n+ (NSManagedObjectModel *) MR_managedObjectModelNamed:(NSString *)modelFileName\n{\n    NSManagedObjectModel *model = [self MR_newManagedObjectModelNamed:modelFileName];\n\treturn model;\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSPersistentStore+MagicalRecord.h",
    "content": "//\n//  NSPersistentStore+MagicalRecord.h\n//\n//  Created by Saul Mora on 3/11/10.\n//  Copyright 2010 Magical Panda Software, LLC All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n#import \"MagicalRecordDeprecationMacros.h\"\n\n// option to autodelete store if it already exists\n\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordDefaultStoreFileName;\n\n\n@interface NSPersistentStore (MagicalRecord)\n\n+ (MR_nonnull NSURL *) MR_defaultLocalStoreUrl;\n\n+ (MR_nullable NSPersistentStore *) MR_defaultPersistentStore;\n+ (void) MR_setDefaultPersistentStore:(MR_nullable NSPersistentStore *) store;\n\n+ (MR_nullable NSURL *) MR_urlForStoreName:(MR_nonnull NSString *)storeFileName;\n+ (MR_nullable NSURL *) MR_cloudURLForUbiquitousContainer:(MR_nonnull NSString *)bucketName;\n+ (MR_nullable NSURL *) MR_cloudURLForUbiqutiousContainer:(MR_nonnull NSString *)bucketName MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"4.0\", \"MR_cloudURLForUbiquitousContainer:\");\n\n@end\n\n\n"
  },
  {
    "path": "MagicalRecord/Categories/NSPersistentStore+MagicalRecord.m",
    "content": "//\n//  NSPersistentStore+MagicalRecord.m\n//\n//  Created by Saul Mora on 3/11/10.\n//  Copyright 2010 Magical Panda Software, LLC All rights reserved.\n//\n\n#import \"NSPersistentStore+MagicalRecord.h\"\n\nNSString * const kMagicalRecordDefaultStoreFileName = @\"CoreDataStore.sqlite\";\n\nstatic NSPersistentStore *defaultPersistentStore_ = nil;\n\n\n@implementation NSPersistentStore (MagicalRecord)\n\n+ (NSPersistentStore *) MR_defaultPersistentStore\n{\n\treturn defaultPersistentStore_;\n}\n\n+ (void) MR_setDefaultPersistentStore:(NSPersistentStore *)store\n{\n\tdefaultPersistentStore_ = store;\n}\n\n+ (NSString *) MR_directory:(NSSearchPathDirectory)type\n{    \n    return [NSSearchPathForDirectoriesInDomains(type, NSUserDomainMask, YES) lastObject];\n}\n\n+ (NSString *)MR_applicationDocumentsDirectory \n{\n\treturn [self MR_directory:NSDocumentDirectory];\n}\n\n+ (NSString *)MR_applicationStorageDirectory\n{\n    NSString *applicationName = [[[NSBundle mainBundle] infoDictionary] valueForKey:(NSString *)kCFBundleNameKey];\n    return [[self MR_directory:NSApplicationSupportDirectory] stringByAppendingPathComponent:applicationName];\n}\n\n+ (NSURL *) MR_urlForStoreName:(NSString *)storeFileName\n{\n    NSString *pathForStoreName = [[self MR_applicationStorageDirectory] stringByAppendingPathComponent:storeFileName];\n    return [NSURL fileURLWithPath:pathForStoreName];\n}\n\n+ (NSURL *) MR_cloudURLForUbiquitousContainer:(NSString *)bucketName\n{\n    NSFileManager *fileManager = [[NSFileManager alloc] init];\n    NSURL *cloudURL = nil;\n    if ([fileManager respondsToSelector:@selector(URLForUbiquityContainerIdentifier:)])\n    {\n        cloudURL = [fileManager URLForUbiquityContainerIdentifier:bucketName];\n    }\n\n    return cloudURL;\n}\n\n+ (NSURL *) MR_cloudURLForUbiqutiousContainer:(NSString *)bucketName\n{\n    return [self MR_cloudURLForUbiquitousContainer:bucketName];\n}\n\n+ (NSURL *) MR_defaultLocalStoreUrl\n{\n    return [self MR_urlForStoreName:kMagicalRecordDefaultStoreFileName];\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSPersistentStoreCoordinator+MagicalRecord.h",
    "content": "//\n//  NSPersistentStoreCoordinator+MagicalRecord.h\n//\n//  Created by Saul Mora on 3/11/10.\n//  Copyright 2010 Magical Panda Software, LLC All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordPSCDidCompleteiCloudSetupNotification;\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordPSCMismatchWillDeleteStore;\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordPSCMismatchDidDeleteStore;\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordPSCMismatchWillRecreateStore;\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordPSCMismatchDidRecreateStore;\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordPSCMismatchCouldNotDeleteStore;\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordPSCMismatchCouldNotRecreateStore;\n\n@interface NSPersistentStoreCoordinator (MagicalRecord)\n\n+ (MR_nullable NSPersistentStoreCoordinator *) MR_defaultStoreCoordinator;\n+ (void) MR_setDefaultStoreCoordinator:(MR_nullable NSPersistentStoreCoordinator *)coordinator;\n\n+ (MR_nonnull NSPersistentStoreCoordinator *) MR_coordinatorWithInMemoryStore;\n\n+ (MR_nonnull NSPersistentStoreCoordinator *) MR_newPersistentStoreCoordinator NS_RETURNS_RETAINED;\n\n+ (MR_nonnull NSPersistentStoreCoordinator *) MR_coordinatorWithSqliteStoreNamed:(MR_nonnull NSString *)storeFileName;\n+ (MR_nonnull NSPersistentStoreCoordinator *) MR_coordinatorWithSqliteStoreNamed:(MR_nonnull NSString *)storeFileName withOptions:(MR_nullable __autoreleasing NSDictionary *)options;\n+ (MR_nonnull NSPersistentStoreCoordinator *) MR_coordinatorWithAutoMigratingSqliteStoreNamed:(MR_nonnull NSString *)storeFileName;\n+ (MR_nonnull NSPersistentStoreCoordinator *) MR_coordinatorWithAutoMigratingSqliteStoreNamed:(MR_nonnull NSString *)storeFileName withOptions:(MR_nullable __autoreleasing NSDictionary *)options;\n+ (MR_nonnull NSPersistentStoreCoordinator *) MR_coordinatorWithSqliteStoreAtURL:(MR_nonnull NSURL *)storeURL;\n+ (MR_nonnull NSPersistentStoreCoordinator *) MR_coordinatorWithAutoMigratingSqliteStoreAtURL:(MR_nonnull NSURL *)storeURL;\n+ (MR_nonnull NSPersistentStoreCoordinator *) MR_coordinatorWithPersistentStore:(MR_nonnull NSPersistentStore *)persistentStore;\n#if TARGET_OS_OSX || TARGET_OS_IOS\n+ (MR_nonnull NSPersistentStoreCoordinator *) MR_coordinatorWithiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreNamed:(MR_nonnull NSString *)localStoreName cloudStorePathComponent:(MR_nullable NSString *)subPathComponent;\n+ (MR_nonnull NSPersistentStoreCoordinator *) MR_coordinatorWithiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreAtURL:(MR_nonnull NSURL *)storeURL cloudStorePathComponent:(MR_nullable NSString *)subPathComponent;\n\n+ (MR_nonnull NSPersistentStoreCoordinator *) MR_coordinatorWithiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreNamed:(MR_nonnull NSString *)localStoreName cloudStorePathComponent:(MR_nullable NSString *)subPathComponent completion:(void (^ __MR_nullable)(void))completionHandler;\n+ (MR_nonnull NSPersistentStoreCoordinator *) MR_coordinatorWithiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreAtURL:(MR_nonnull NSURL *)storeURL cloudStorePathComponent:(MR_nullable NSString *)subPathComponent completion:(void (^ __MR_nullable)(void))completionHandler;\n#endif\n\n- (MR_nullable NSPersistentStore *) MR_addInMemoryStore;\n- (MR_nullable NSPersistentStore *) MR_addAutoMigratingSqliteStoreNamed:(MR_nonnull NSString *) storeFileName;\n- (MR_nullable NSPersistentStore *) MR_addAutoMigratingSqliteStoreAtURL:(MR_nonnull NSURL *)storeURL;\n\n- (MR_nullable NSPersistentStore *) MR_addSqliteStoreNamed:(MR_nonnull id)storeFileName withOptions:(MR_nullable __autoreleasing NSDictionary *)options;\n- (MR_nullable NSPersistentStore *) MR_addSqliteStoreNamed:(MR_nonnull id)storeFileName configuration:(MR_nullable NSString *)configuration withOptions:(MR_nullable __autoreleasing NSDictionary *)options;\n\n#if TARGET_OS_OSX || TARGET_OS_IOS\n- (void) MR_addiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreNamed:(MR_nonnull NSString *)localStoreName cloudStorePathComponent:(MR_nullable NSString *)subPathComponent;\n- (void) MR_addiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreAtURL:(MR_nonnull NSURL *)storeURL cloudStorePathComponent:(MR_nullable NSString *)subPathComponent;\n- (void) MR_addiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreNamed:(MR_nonnull NSString *)localStoreName cloudStorePathComponent:(MR_nullable NSString *)subPathComponent completion:(void (^ __MR_nullable)(void))completionBlock;\n- (void) MR_addiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreAtURL:(MR_nonnull NSURL *)storeURL cloudStorePathComponent:(MR_nullable NSString *)subPathComponent completion:(void (^ __MR_nullable)(void))completionBlock;\n#endif\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Categories/NSPersistentStoreCoordinator+MagicalRecord.m",
    "content": "//\n//  NSPersistentStoreCoordinator+MagicalRecord.m\n//\n//  Created by Saul Mora on 3/11/10.\n//  Copyright 2010 Magical Panda Software, LLC All rights reserved.\n//\n\n#import \"NSPersistentStoreCoordinator+MagicalRecord.h\"\n#import \"NSPersistentStore+MagicalRecord.h\"\n#import \"NSManagedObjectModel+MagicalRecord.h\"\n#import \"MagicalRecord+ErrorHandling.h\"\n#import \"MagicalRecordLogging.h\"\n\n\nstatic NSPersistentStoreCoordinator *defaultCoordinator_ = nil;\nNSString * const kMagicalRecordPSCDidCompleteiCloudSetupNotification = @\"kMagicalRecordPSCDidCompleteiCloudSetupNotification\";\nNSString * const kMagicalRecordPSCMismatchWillDeleteStore = @\"kMagicalRecordPSCMismatchWillDeleteStore\";\nNSString * const kMagicalRecordPSCMismatchDidDeleteStore = @\"kMagicalRecordPSCMismatchDidDeleteStore\";\nNSString * const kMagicalRecordPSCMismatchWillRecreateStore = @\"kMagicalRecordPSCMismatchWillRecreateStore\";\nNSString * const kMagicalRecordPSCMismatchDidRecreateStore = @\"kMagicalRecordPSCMismatchDidRecreateStore\";\nNSString * const kMagicalRecordPSCMismatchCouldNotDeleteStore = @\"kMagicalRecordPSCMismatchCouldNotDeleteStore\";\nNSString * const kMagicalRecordPSCMismatchCouldNotRecreateStore = @\"kMagicalRecordPSCMismatchCouldNotRecreateStore\";\n\n@interface NSDictionary (MagicalRecordMerging)\n\n- (NSMutableDictionary*) MR_dictionaryByMergingDictionary:(NSDictionary*)d;\n\n@end \n\n@interface MagicalRecord (iCloudPrivate)\n\n+ (void) setICloudEnabled:(BOOL)enabled;\n\n@end\n\n@implementation NSPersistentStoreCoordinator (MagicalRecord)\n\n+ (NSPersistentStoreCoordinator *) MR_defaultStoreCoordinator\n{\n    if (defaultCoordinator_ == nil && [MagicalRecord shouldAutoCreateDefaultPersistentStoreCoordinator])\n    {\n        [self MR_setDefaultStoreCoordinator:[self MR_newPersistentStoreCoordinator]];\n    }\n\treturn defaultCoordinator_;\n}\n\n+ (void) MR_setDefaultStoreCoordinator:(NSPersistentStoreCoordinator *)coordinator\n{\n\tdefaultCoordinator_ = coordinator;\n    \n    if (defaultCoordinator_ != nil)\n    {\n        NSArray *persistentStores = [defaultCoordinator_ persistentStores];\n        \n        if ([persistentStores count] && [NSPersistentStore MR_defaultPersistentStore] == nil)\n        {\n            [NSPersistentStore MR_setDefaultPersistentStore:[persistentStores firstObject]];\n        }\n    }\n}\n\n- (void) MR_createPathToStoreFileIfNecessary:(NSURL *)urlForStore\n{\n    NSFileManager *fileManager = [NSFileManager defaultManager];\n    NSURL *pathToStore = [urlForStore URLByDeletingLastPathComponent];\n    \n    NSError *error = nil;\n    BOOL pathWasCreated = [fileManager createDirectoryAtPath:[pathToStore path] withIntermediateDirectories:YES attributes:nil error:&error];\n\n    if (!pathWasCreated) \n    {\n        [MagicalRecord handleErrors:error];\n    }\n}\n\n- (NSPersistentStore *) MR_addSqliteStoreNamed:(id)storeFileName withOptions:(__autoreleasing NSDictionary *)options\n{\n    return [self MR_addSqliteStoreNamed:storeFileName configuration:nil withOptions:options];\n}\n\n- (NSPersistentStore *) MR_addSqliteStoreNamed:(id)storeFileName configuration:(NSString *)configuration withOptions:(__autoreleasing NSDictionary *)options\n{\n    NSURL *url = [storeFileName isKindOfClass:[NSURL class]] ? storeFileName : [NSPersistentStore MR_urlForStoreName:storeFileName];\n    NSError *error = nil;\n    \n    [self MR_createPathToStoreFileIfNecessary:url];\n    \n    NSPersistentStore *store = [self addPersistentStoreWithType:NSSQLiteStoreType\n                                                  configuration:configuration\n                                                            URL:url\n                                                        options:options\n                                                          error:&error];\n    \n    if (!store)\n    {\n        if ([MagicalRecord shouldDeleteStoreOnModelMismatch])\n        {\n            BOOL isMigrationError = (([error code] == NSPersistentStoreIncompatibleVersionHashError) || ([error code] == NSMigrationMissingSourceModelError) || ([error code] == NSMigrationError));\n            if ([[error domain] isEqualToString:NSCocoaErrorDomain] && isMigrationError)\n            {\n                [[NSNotificationCenter defaultCenter] postNotificationName:kMagicalRecordPSCMismatchWillDeleteStore object:nil];\n                \n                NSError * deleteStoreError;\n                // Could not open the database, so... kill it! (AND WAL bits)\n                NSString *rawURL = [url absoluteString];\n                NSURL *shmSidecar = [NSURL URLWithString:[rawURL stringByAppendingString:@\"-shm\"]];\n                NSURL *walSidecar = [NSURL URLWithString:[rawURL stringByAppendingString:@\"-wal\"]];\n                [[NSFileManager defaultManager] removeItemAtURL:url error:&deleteStoreError];\n                [[NSFileManager defaultManager] removeItemAtURL:shmSidecar error:nil];\n                [[NSFileManager defaultManager] removeItemAtURL:walSidecar error:nil];\n                \n                MRLogWarn(@\"Removed incompatible model version: %@\", [url lastPathComponent]);\n                if(deleteStoreError) {\n                    [[NSNotificationCenter defaultCenter] postNotificationName:kMagicalRecordPSCMismatchCouldNotDeleteStore object:nil userInfo:@{@\"Error\":deleteStoreError}];\n                }\n                else {\n                    [[NSNotificationCenter defaultCenter] postNotificationName:kMagicalRecordPSCMismatchDidDeleteStore object:nil];\n                }\n                \n                [[NSNotificationCenter defaultCenter] postNotificationName:kMagicalRecordPSCMismatchWillRecreateStore object:nil];\n                // Try one more time to create the store\n                store = [self addPersistentStoreWithType:NSSQLiteStoreType\n                                           configuration:nil\n                                                     URL:url\n                                                 options:options\n                                                   error:&error];\n                if (store)\n                {\n                    [[NSNotificationCenter defaultCenter] postNotificationName:kMagicalRecordPSCMismatchDidRecreateStore object:nil];\n                    // If we successfully added a store, remove the error that was initially created\n                    error = nil;\n                }\n                else {\n                    [[NSNotificationCenter defaultCenter] postNotificationName:kMagicalRecordPSCMismatchCouldNotRecreateStore object:nil userInfo:@{@\"Error\":error}];\n                }\n            }\n        }\n        [MagicalRecord handleErrors:error];\n    }\n    return store;\n}\n\n#if TARGET_OS_OSX || TARGET_OS_IOS\n\n- (void) MR_addiCloudContainerID:(NSString *)containerID contentNameKey:(NSString *)contentNameKey storeIdentifier:(id)storeIdentifier cloudStorePathComponent:(NSString *)subPathComponent completion:(void(^)(void))completionBlock\n{\n    if (contentNameKey.length > 0)\n    {\n        NSAssert([contentNameKey rangeOfString:@\".\"].location == NSNotFound, @\"NSPersistentStoreUbiquitousContentNameKey cannot contain a period.\");\n    }\n\n    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{\n        \n        NSURL *cloudURL = [NSPersistentStore MR_cloudURLForUbiquitousContainer:containerID];\n        if (subPathComponent)\n        {\n            cloudURL = [cloudURL URLByAppendingPathComponent:subPathComponent];\n        }\n        \n        [MagicalRecord setICloudEnabled:cloudURL != nil];\n        \n        NSDictionary *options = [[self class] MR_autoMigrationOptions];\n        if (cloudURL)   //iCloud is available\n        {\n            NSMutableDictionary *iCloudOptions = [[NSMutableDictionary alloc] init];\n            [iCloudOptions setObject:cloudURL forKey:NSPersistentStoreUbiquitousContentURLKey];\n\n            if ([contentNameKey length] > 0)\n            {\n                [iCloudOptions setObject:contentNameKey forKey:NSPersistentStoreUbiquitousContentNameKey];\n            }\n\n            options = [options MR_dictionaryByMergingDictionary:iCloudOptions];\n        }\n        else\n        {\n            MRLogWarn(@\"iCloud is not enabled\");\n        }\n\n\n        if ([self respondsToSelector:@selector(performBlockAndWait:)])\n        {\n            [self performSelector:@selector(performBlockAndWait:) withObject:^{\n                [self MR_addSqliteStoreNamed:storeIdentifier withOptions:options];\n            }];\n        }\n        else\n        {\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n            [self lock];\n#pragma clang diagnostic pop\n            [self MR_addSqliteStoreNamed:storeIdentifier withOptions:options];\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n            [self unlock];\n#pragma clang diagnostic pop\n        }\n\n        dispatch_async(dispatch_get_main_queue(), ^{\n            if ([NSPersistentStore MR_defaultPersistentStore] == nil)\n            {\n                [NSPersistentStore MR_setDefaultPersistentStore:[[self persistentStores] firstObject]];\n            }\n            if (completionBlock)\n            {\n                completionBlock();\n            }\n            NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];\n            [notificationCenter postNotificationName:kMagicalRecordPSCDidCompleteiCloudSetupNotification object:nil];\n        });\n    });\n}\n\n#endif\n\n\n#pragma mark - Public Instance Methods\n\n- (NSPersistentStore *) MR_addInMemoryStore\n{\n    NSError *error = nil;\n    NSPersistentStore *store = [self addPersistentStoreWithType:NSInMemoryStoreType\n                                                  configuration:nil \n                                                            URL:nil\n                                                        options:nil\n                                                          error:&error];\n    if (!store)\n    {\n        [MagicalRecord handleErrors:error];\n    }\n    return store;\n}\n\n+ (NSDictionary *) MR_autoMigrationOptions\n{\n    // Adding the journalling mode recommended by Apple\n    NSMutableDictionary *sqliteOptions = [NSMutableDictionary dictionary];\n    [sqliteOptions setObject:@\"WAL\" forKey:@\"journal_mode\"];\n    \n    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:\n                             [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,\n                             [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,\n                             sqliteOptions, NSSQLitePragmasOption,\n                             nil];\n    return options;\n}\n\n- (NSPersistentStore *) MR_addAutoMigratingSqliteStoreNamed:(NSString *) storeFileName\n{\n    NSDictionary *options = [[self class] MR_autoMigrationOptions];\n    return [self MR_addSqliteStoreNamed:storeFileName withOptions:options];\n}\n\n- (NSPersistentStore *) MR_addAutoMigratingSqliteStoreNamed:(NSString *) storeFileName withOptions:(NSDictionary *) options\n{\n    NSMutableDictionary *sqliteOptions = [NSMutableDictionary dictionaryWithDictionary:[[self class] MR_autoMigrationOptions]];\n    [sqliteOptions addEntriesFromDictionary:options];\n    return [self MR_addSqliteStoreNamed:storeFileName withOptions:sqliteOptions];\n}\n\n- (NSPersistentStore *) MR_addAutoMigratingSqliteStoreAtURL:(NSURL *)storeURL\n{\n    NSDictionary *options = [[self class] MR_autoMigrationOptions];\n    return [self MR_addSqliteStoreNamed:storeURL withOptions:options];\n}\n\n\n#pragma mark - Public Class Methods\n\n\n+ (NSPersistentStoreCoordinator *) MR_coordinatorWithAutoMigratingSqliteStoreNamed:(NSString *) storeFileName\n{\n    return [self MR_coordinatorWithAutoMigratingSqliteStoreNamed:storeFileName withOptions:nil];\n}\n\n+ (NSPersistentStoreCoordinator *) MR_coordinatorWithAutoMigratingSqliteStoreNamed:(NSString *)storeFileName withOptions:(NSDictionary *) options\n{\n    NSManagedObjectModel *model = [NSManagedObjectModel MR_defaultManagedObjectModel];\n    NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];\n\n    [coordinator MR_addAutoMigratingSqliteStoreNamed:storeFileName withOptions:options];\n\n    //HACK: lame solution to fix automigration error \"Migration failed after first pass\"\n    if ([[coordinator persistentStores] count] == 0)\n    {\n        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{\n            [coordinator performSelector:@selector(MR_addAutoMigratingSqliteStoreNamed:withOptions:) withObject:storeFileName withObject:options];\n        });\n    }\n\n    return coordinator;\n}\n\n+ (NSPersistentStoreCoordinator *) MR_coordinatorWithAutoMigratingSqliteStoreAtURL:(NSURL *)storeURL\n{\n    NSManagedObjectModel *model = [NSManagedObjectModel MR_defaultManagedObjectModel];\n    NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];\n    \n    [coordinator MR_addAutoMigratingSqliteStoreAtURL:storeURL];\n    \n    //HACK: lame solution to fix automigration error \"Migration failed after first pass\"\n    if ([[coordinator persistentStores] count] == 0)\n    {\n        [coordinator performSelector:@selector(MR_addAutoMigratingSqliteStoreAtURL:) withObject:storeURL afterDelay:0.5];\n    }\n    \n    return coordinator;\n}\n\n+ (NSPersistentStoreCoordinator *) MR_coordinatorWithInMemoryStore\n{\n\tNSManagedObjectModel *model = [NSManagedObjectModel MR_defaultManagedObjectModel];\n\tNSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];\n\n    [coordinator MR_addInMemoryStore];\n\n    return coordinator;\n}\n\n+ (NSPersistentStoreCoordinator *) MR_newPersistentStoreCoordinator\n{\n\tNSPersistentStoreCoordinator *coordinator = [self MR_coordinatorWithSqliteStoreNamed:[MagicalRecord defaultStoreName]];\n\n    return coordinator;\n}\n\n#if TARGET_OS_OSX || TARGET_OS_IOS\n\n- (void) MR_addiCloudContainerID:(NSString *)containerID contentNameKey:(NSString *)contentNameKey localStoreNamed:(NSString *)localStoreName cloudStorePathComponent:(NSString *)subPathComponent\n{\n    [self MR_addiCloudContainerID:containerID \n                   contentNameKey:contentNameKey \n                  localStoreNamed:localStoreName\n          cloudStorePathComponent:subPathComponent\n                       completion:nil];\n}\n\n- (void) MR_addiCloudContainerID:(NSString *)containerID contentNameKey:(NSString *)contentNameKey localStoreAtURL:(NSURL *)storeURL cloudStorePathComponent:(NSString *)subPathComponent\n{\n    [self MR_addiCloudContainerID:containerID\n                   contentNameKey:contentNameKey\n                  localStoreAtURL:storeURL\n          cloudStorePathComponent:subPathComponent\n                       completion:nil];\n}\n\n- (void) MR_addiCloudContainerID:(NSString *)containerID contentNameKey:(NSString *)contentNameKey localStoreNamed:(NSString *)localStoreName cloudStorePathComponent:(NSString *)subPathComponent completion:(void(^)(void))completionBlock\n{\n    [self MR_addiCloudContainerID:containerID\n                   contentNameKey:contentNameKey\n                  storeIdentifier:localStoreName\n          cloudStorePathComponent:subPathComponent\n                       completion:completionBlock]; \n}\n\n- (void) MR_addiCloudContainerID:(NSString *)containerID contentNameKey:(NSString *)contentNameKey localStoreAtURL:(NSURL *)storeURL cloudStorePathComponent:(NSString *)subPathComponent completion:(void(^)(void))completionBlock\n{\n    [self MR_addiCloudContainerID:containerID\n                   contentNameKey:contentNameKey\n                  storeIdentifier:storeURL\n          cloudStorePathComponent:subPathComponent\n                       completion:completionBlock];   \n}\n\n+ (NSPersistentStoreCoordinator *) MR_coordinatorWithiCloudContainerID:(NSString *)containerID \n                                                        contentNameKey:(NSString *)contentNameKey\n                                                       localStoreNamed:(NSString *)localStoreName\n                                               cloudStorePathComponent:(NSString *)subPathComponent\n{\n    return [self MR_coordinatorWithiCloudContainerID:containerID \n                                      contentNameKey:contentNameKey\n                                     localStoreNamed:localStoreName\n                             cloudStorePathComponent:subPathComponent\n                                          completion:nil];\n}\n\n+ (NSPersistentStoreCoordinator *) MR_coordinatorWithiCloudContainerID:(NSString *)containerID\n                                                        contentNameKey:(NSString *)contentNameKey\n                                                       localStoreAtURL:(NSURL *)storeURL\n                                               cloudStorePathComponent:(NSString *)subPathComponent\n{\n    return [self MR_coordinatorWithiCloudContainerID:containerID\n                               contentNameKey:contentNameKey\n                              localStoreAtURL:storeURL\n                      cloudStorePathComponent:subPathComponent\n                                   completion:nil];\n}\n\n+ (NSPersistentStoreCoordinator *) MR_coordinatorWithiCloudContainerID:(NSString *)containerID \n                                                        contentNameKey:(NSString *)contentNameKey\n                                                       localStoreNamed:(NSString *)localStoreName\n                                               cloudStorePathComponent:(NSString *)subPathComponent\n                                                            completion:(void(^)(void))completionHandler\n{\n    NSManagedObjectModel *model = [NSManagedObjectModel MR_defaultManagedObjectModel];\n    NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];\n    \n    [psc MR_addiCloudContainerID:containerID \n                  contentNameKey:contentNameKey\n                 localStoreNamed:localStoreName\n         cloudStorePathComponent:subPathComponent\n                      completion:completionHandler];\n    \n    return psc;\n}\n\n+ (NSPersistentStoreCoordinator *) MR_coordinatorWithiCloudContainerID:(NSString *)containerID\n                                                        contentNameKey:(NSString *)contentNameKey\n                                                       localStoreAtURL:(NSURL *)storeURL\n                                               cloudStorePathComponent:(NSString *)subPathComponent\n                                                            completion:(void (^)(void))completionHandler\n{\n    NSManagedObjectModel *model = [NSManagedObjectModel MR_defaultManagedObjectModel];\n    NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];\n    \n    [psc MR_addiCloudContainerID:containerID\n                  contentNameKey:contentNameKey\n                 localStoreAtURL:storeURL\n         cloudStorePathComponent:subPathComponent\n                      completion:completionHandler];\n    \n    return psc;\n}\n\n#endif\n\n+ (NSPersistentStoreCoordinator *) MR_coordinatorWithPersistentStore:(NSPersistentStore *)persistentStore\n{\n    NSManagedObjectModel *model = [NSManagedObjectModel MR_defaultManagedObjectModel];\n    NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];\n    \n    [psc MR_addSqliteStoreNamed:[persistentStore URL] withOptions:nil];\n\n    return psc;\n}\n\n+ (NSPersistentStoreCoordinator *) MR_coordinatorWithSqliteStoreNamed:(NSString *)storeFileName withOptions:(NSDictionary *)options\n{\n    NSManagedObjectModel *model = [NSManagedObjectModel MR_defaultManagedObjectModel];\n    NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];\n    \n    [psc MR_addSqliteStoreNamed:storeFileName withOptions:options];\n    return psc;\n}\n\n+ (NSPersistentStoreCoordinator *) MR_coordinatorWithSqliteStoreAtURL:(NSURL *)storeURL withOptions:(NSDictionary *)options\n{\n    NSManagedObjectModel *model = [NSManagedObjectModel MR_defaultManagedObjectModel];\n    NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];\n    \n    [psc MR_addSqliteStoreNamed:storeURL withOptions:options];\n    return psc;\n}\n\n+ (NSPersistentStoreCoordinator *) MR_coordinatorWithSqliteStoreNamed:(NSString *)storeFileName\n{\n\treturn [self MR_coordinatorWithSqliteStoreNamed:storeFileName withOptions:nil];\n}\n\n+ (NSPersistentStoreCoordinator *) MR_coordinatorWithSqliteStoreAtURL:(NSURL *)storeURL\n{\n    return [self MR_coordinatorWithSqliteStoreAtURL:storeURL withOptions:nil];\n}\n\n@end\n\n\n@implementation NSDictionary (Merging) \n\n- (NSMutableDictionary *) MR_dictionaryByMergingDictionary:(NSDictionary *)d\n{\n    NSMutableDictionary *mutDict = [self mutableCopy];\n    [mutDict addEntriesFromDictionary:d];\n    return mutDict; \n} \n\n@end \n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecord+Actions.h",
    "content": "//\n//  MagicalRecord+Actions.h\n//\n//  Created by Saul Mora on 2/24/11.\n//  Copyright 2011 Magical Panda Software. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import <MagicalRecord/MagicalRecordInternal.h>\n#import <MagicalRecord/MagicalRecordDeprecationMacros.h>\n#import <MagicalRecord/NSManagedObjectContext+MagicalSaves.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface MagicalRecord (Actions)\n\n/* For all background saving operations. These calls will be sent to a different thread/queue.\n */\n+ (void) saveWithBlock:(void (^ __MR_nonnull)(NSManagedObjectContext * __MR_nonnull localContext))block;\n+ (void) saveWithBlock:(void (^ __MR_nonnull)(NSManagedObjectContext * __MR_nonnull localContext))block completion:(MR_nullable MRSaveCompletionHandler)completion;\n\n/* For saving on the current thread as the caller, only with a separate context. Useful when you're managing your own threads/queues and need a serial call to create or change data\n */\n+ (void) saveWithBlockAndWait:(void (^ __MR_nonnull)(NSManagedObjectContext * __MR_nonnull localContext))block;\n\n@end\n\n@interface MagicalRecord (ActionsDeprecated)\n\n+ (void) saveUsingCurrentThreadContextWithBlock:(void (^ __MR_nonnull)(NSManagedObjectContext * __MR_nonnull localContext))block completion:(MR_nullable MRSaveCompletionHandler)completion MR_DEPRECATED_WILL_BE_REMOVED_IN(\"3.0\");\n+ (void) saveUsingCurrentThreadContextWithBlockAndWait:(void (^ __MR_nonnull)(NSManagedObjectContext * __MR_nonnull localContext))block MR_DEPRECATED_WILL_BE_REMOVED_IN(\"3.0\");\n+ (void) saveInBackgroundWithBlock:(void (^ __MR_nonnull)(NSManagedObjectContext * __MR_nonnull localContext))block MR_DEPRECATED_WILL_BE_REMOVED_IN(\"3.0\");\n+ (void) saveInBackgroundWithBlock:(void (^ __MR_nonnull)(NSManagedObjectContext * __MR_nonnull localContext))block completion:(void (^ __MR_nullable)(void))completion MR_DEPRECATED_WILL_BE_REMOVED_IN(\"3.0\");\n+ (void) saveInBackgroundUsingCurrentContextWithBlock:(void (^ __MR_nonnull)(NSManagedObjectContext * __MR_nonnull localContext))block completion:(void (^ __MR_nullable)(void))completion errorHandler:(void (^ __MR_nullable)(NSError * __MR_nullable error))errorHandler MR_DEPRECATED_WILL_BE_REMOVED_IN(\"3.0\");\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecord+Actions.m",
    "content": "//\n//  MagicalRecord+Actions.m\n//\n//  Created by Saul Mora on 2/24/11.\n//  Copyright 2011 Magical Panda Software. All rights reserved.\n//\n\n#import \"MagicalRecord+Actions.h\"\n#import \"NSManagedObjectContext+MagicalRecord.h\"\n#import \"NSManagedObjectContext+MagicalThreading.h\"\n\n@implementation MagicalRecord (Actions)\n\n#pragma mark - Asynchronous saving\n\n+ (void) saveWithBlock:(void(^)(NSManagedObjectContext *localContext))block\n{\n    [self saveWithBlock:block completion:nil];\n}\n\n+ (void) saveWithBlock:(void(^)(NSManagedObjectContext *localContext))block completion:(MRSaveCompletionHandler)completion\n{\n    NSManagedObjectContext *savingContext  = [NSManagedObjectContext MR_rootSavingContext];\n    NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextWithParent:savingContext];\n\n    [localContext performBlock:^{\n        [localContext MR_setWorkingName:NSStringFromSelector(_cmd)];\n\n        if (block) {\n            block(localContext);\n        }\n\n        [localContext MR_saveWithOptions:MRSaveParentContexts completion:completion];\n    }];\n}\n\n#pragma mark - Synchronous saving\n\n+ (void) saveWithBlockAndWait:(void(^)(NSManagedObjectContext *localContext))block\n{\n    NSManagedObjectContext *savingContext  = [NSManagedObjectContext MR_rootSavingContext];\n    NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextWithParent:savingContext];\n\n    [localContext performBlockAndWait:^{\n        [localContext MR_setWorkingName:NSStringFromSelector(_cmd)];\n\n        if (block) {\n            block(localContext);\n        }\n\n        [localContext MR_saveWithOptions:MRSaveParentContexts|MRSaveSynchronously completion:nil];\n    }];\n}\n\n@end\n\n#pragma mark - Deprecated Methods — DO NOT USE\n@implementation MagicalRecord (ActionsDeprecated)\n\n+ (void) saveUsingCurrentThreadContextWithBlock:(void (^)(NSManagedObjectContext *localContext))block completion:(MRSaveCompletionHandler)completion\n{\n    NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];\n\n    [localContext performBlock:^{\n        [localContext MR_setWorkingName:NSStringFromSelector(_cmd)];\n\n        if (block) {\n            block(localContext);\n        }\n\n        [localContext MR_saveWithOptions:MRSaveParentContexts completion:completion];\n    }];\n}\n\n+ (void) saveUsingCurrentThreadContextWithBlockAndWait:(void (^)(NSManagedObjectContext *localContext))block\n{\n    NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];\n\n    [localContext performBlockAndWait:^{\n        [localContext MR_setWorkingName:NSStringFromSelector(_cmd)];\n\n        if (block) {\n            block(localContext);\n        }\n\n        [localContext MR_saveWithOptions:MRSaveParentContexts|MRSaveSynchronously completion:nil];\n    }];\n}\n\n+ (void) saveInBackgroundWithBlock:(void(^)(NSManagedObjectContext *localContext))block\n{\n    [self saveWithBlock:block completion:nil];\n}\n\n+ (void) saveInBackgroundWithBlock:(void(^)(NSManagedObjectContext *localContext))block completion:(void(^)(void))completion\n{\n    NSManagedObjectContext *savingContext  = [NSManagedObjectContext MR_rootSavingContext];\n    NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextWithParent:savingContext];\n\n    [localContext performBlock:^{\n        [localContext MR_setWorkingName:NSStringFromSelector(_cmd)];\n\n        if (block)\n        {\n            block(localContext);\n        }\n\n        [localContext MR_saveToPersistentStoreAndWait];\n\n        if (completion)\n        {\n            completion();\n        }\n    }];\n}\n\n+ (void) saveInBackgroundUsingCurrentContextWithBlock:(void (^)(NSManagedObjectContext *localContext))block completion:(void (^)(void))completion errorHandler:(void (^)(NSError *error))errorHandler\n{\n    NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];\n\n    [localContext performBlock:^{\n        [localContext MR_setWorkingName:NSStringFromSelector(_cmd)];\n\n        if (block) {\n            block(localContext);\n        }\n\n        [localContext MR_saveToPersistentStoreWithCompletion:^(BOOL contextDidSave, NSError *error) {\n            if (contextDidSave) {\n                if (completion) {\n                    completion();\n                }\n            }\n            else {\n                if (errorHandler) {\n                    errorHandler(error);\n                }\n            }\n        }];\n    }];\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecord+ErrorHandling.h",
    "content": "//\n//  MagicalRecord+ErrorHandling.h\n//  Magical Record\n//\n//  Created by Saul Mora on 3/6/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <MagicalRecord/MagicalRecordInternal.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface MagicalRecord (ErrorHandling)\n\n+ (void) handleErrors:(MR_nonnull NSError *)error;\n\n+ (void) setErrorHandlerTarget:(MR_nullable id)target action:(MR_nonnull SEL)action;\n+ (MR_nonnull SEL) errorHandlerAction;\n+ (MR_nullable id) errorHandlerTarget;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecord+ErrorHandling.m",
    "content": "//\n//  MagicalRecord+ErrorHandling.m\n//  Magical Record\n//\n//  Created by Saul Mora on 3/6/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalRecord+ErrorHandling.h\"\n#import \"MagicalRecordLogging.h\"\n\n\n__weak static id errorHandlerTarget = nil;\nstatic SEL errorHandlerAction = nil;\n\n\n@implementation MagicalRecord (ErrorHandling)\n\n+ (void) cleanUpErrorHanding\n{\n    errorHandlerTarget = nil;\n    errorHandlerAction = nil;\n}\n\n+ (void) defaultErrorHandler:(NSError *)error\n{\n    NSDictionary *userInfo = [error userInfo];\n    for (NSArray *detailedError in [userInfo allValues])\n    {\n        if ([detailedError isKindOfClass:[NSArray class]])\n        {\n            for (NSError *e in detailedError)\n            {\n                if ([e respondsToSelector:@selector(userInfo)])\n                {\n                    MRLogError(@\"Error Details: %@\", [e userInfo]);\n                }\n                else\n                {\n                    MRLogError(@\"Error Details: %@\", e);\n                }\n            }\n        }\n        else\n        {\n            MRLogError(@\"Error: %@\", detailedError);\n        }\n    }\n    MRLogError(@\"Error Message: %@\", [error localizedDescription]);\n    MRLogError(@\"Error Domain: %@\", [error domain]);\n    MRLogError(@\"Recovery Suggestion: %@\", [error localizedRecoverySuggestion]);\n}\n\n+ (void) handleErrors:(NSError *)error\n{\n\tif (error)\n\t{\n        // If a custom error handler is set, call that\n        if (errorHandlerTarget != nil && errorHandlerAction != nil) \n\t\t{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Warc-performSelector-leaks\"\n            [errorHandlerTarget performSelector:errorHandlerAction withObject:error];\n#pragma clang diagnostic pop\n        }\n\t\telse\n\t\t{\n\t        // Otherwise, fall back to the default error handling\n\t        [self defaultErrorHandler:error];\t\t\t\n\t\t}\n    }\n}\n\n+ (id) errorHandlerTarget\n{\n    return errorHandlerTarget;\n}\n\n+ (SEL) errorHandlerAction\n{\n    return errorHandlerAction;\n}\n\n+ (void) setErrorHandlerTarget:(id)target action:(SEL)action\n{\n    errorHandlerTarget = target;    /* Deliberately don't retain to avoid potential retain cycles */\n    errorHandlerAction = action;\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecord+Options.h",
    "content": "//\n//  MagicalRecord+Options.h\n//  Magical Record\n//\n//  Created by Saul Mora on 3/6/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <MagicalRecord/MagicalRecordInternal.h>\n\n/**\n Defines \"levels\" of logging that will be used as values in a bitmask that filters log messages.\n\n @since Available in v2.3 and later.\n */\ntypedef NS_ENUM (NSUInteger, MagicalRecordLoggingMask)\n{\n    /** Log all errors */\n    MagicalRecordLoggingMaskError = 1 << 0,\n\n    /** Log warnings, and all errors */\n    MagicalRecordLoggingMaskWarn = 1 << 1,\n\n    /** Log informative messages, warnings and all errors */\n    MagicalRecordLoggingMaskInfo = 1 << 2,\n\n    /** Log debugging messages, informative messages, warnings and all errors */\n    MagicalRecordLoggingMaskDebug = 1 << 3,\n\n    /** Log verbose diagnostic information, debugging messages, informative messages, messages, warnings and all errors */\n    MagicalRecordLoggingMaskVerbose = 1 << 4,\n};\n\n/**\n Defines a mask for logging that will be used by to filter log messages.\n\n @since Available in v2.3 and later.\n */\ntypedef NS_ENUM (NSUInteger, MagicalRecordLoggingLevel)\n{\n    /** Don't log anything */\n    MagicalRecordLoggingLevelOff = 0,\n\n    /** Log all errors and fatal messages */\n    MagicalRecordLoggingLevelError = (MagicalRecordLoggingMaskError),\n\n    /** Log warnings, errors and fatal messages */\n    MagicalRecordLoggingLevelWarn = (MagicalRecordLoggingLevelError | MagicalRecordLoggingMaskWarn),\n\n    /** Log informative, warning and error messages */\n    MagicalRecordLoggingLevelInfo = (MagicalRecordLoggingLevelWarn | MagicalRecordLoggingMaskInfo),\n\n    /** Log all debugging, informative, warning and error messages */\n    MagicalRecordLoggingLevelDebug = (MagicalRecordLoggingLevelInfo | MagicalRecordLoggingMaskDebug),\n\n    /** Log verbose diagnostic, debugging, informative, warning and error messages */\n    MagicalRecordLoggingLevelVerbose = (MagicalRecordLoggingLevelDebug | MagicalRecordLoggingMaskVerbose),\n\n    /** Log everything */\n    MagicalRecordLoggingLevelAll = NSUIntegerMax\n};\n\n\n@interface MagicalRecord (Options)\n\n/**\n @name Configuration Options\n */\n\n/**\n If this is true, the default managed object model will be automatically created if it doesn't exist when calling `[NSManagedObjectModel MR_defaultManagedObjectModel]`.\n\n @return current value of shouldAutoCreateManagedObjectModel.\n\n @since Available in v2.0.4 and later.\n */\n+ (BOOL) shouldAutoCreateManagedObjectModel;\n\n/**\n Setting this to true will make MagicalRecord create the default managed object model automatically if it doesn't exist when calling `[NSManagedObjectModel MR_defaultManagedObjectModel]`.\n\n @param autoCreate BOOL value that flags whether the default persistent store should be automatically created.\n\n @since Available in v2.0.4 and later.\n */\n+ (void) setShouldAutoCreateManagedObjectModel:(BOOL)autoCreate;\n\n/**\n If this is true, the default persistent store will be automatically created if it doesn't exist when calling `[NSPersistentStoreCoordinator MR_defaultStoreCoordinator]`.\n\n @return current value of shouldAutoCreateDefaultPersistentStoreCoordinator.\n\n @since Available in v2.0.4 and later.\n */\n+ (BOOL) shouldAutoCreateDefaultPersistentStoreCoordinator;\n\n/**\n Setting this to true will make MagicalRecord create the default persistent store automatically if it doesn't exist when calling `[NSPersistentStoreCoordinator MR_defaultStoreCoordinator]`.\n\n @param autoCreate BOOL value that flags whether the default persistent store should be automatically created.\n\n @since Available in v2.0.4 and later.\n */\n+ (void) setShouldAutoCreateDefaultPersistentStoreCoordinator:(BOOL)autoCreate;\n\n/**\n If this is true and MagicalRecord encounters a store with a version that does not match that of the model, the store will be removed from the disk.\n This is extremely useful during development where frequent model changes can potentially require a delete and reinstall of the app.\n\n @return current value of shouldDeleteStoreOnModelMismatch\n \n @since Available in v2.0.4 and later.\n */\n+ (BOOL) shouldDeleteStoreOnModelMismatch;\n\n/**\n Setting this to true will make MagicalRecord delete any stores that it encounters which do not match the version of their model.\n This is extremely useful during development where frequent model changes can potentially require a delete and reinstall of the app.\n\n @param shouldDelete BOOL value that flags whether mismatched stores should be deleted\n \n @since Available in v2.0.4 and later.\n */\n+ (void) setShouldDeleteStoreOnModelMismatch:(BOOL)shouldDelete;\n\n/**\n @name Logging Levels\n */\n\n/**\n Returns the logging mask set for MagicalRecord in the current application.\n\n @return Current MagicalRecordLoggingLevel\n \n @since Available in v2.3 and later.\n */\n+ (MagicalRecordLoggingLevel) loggingLevel;\n\n/**\n Sets the logging mask set for MagicalRecord in the current application.\n\n @param level Any value from MagicalRecordLogLevel\n\n @since Available in v2.3 and later.\n */\n+ (void) setLoggingLevel:(MagicalRecordLoggingLevel)level;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecord+Options.m",
    "content": "//\n//  MagicalRecord+Options.m\n//  Magical Record\n//\n//  Created by Saul Mora on 3/6/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalRecord+Options.h\"\n\n#ifdef DEBUG\nstatic MagicalRecordLoggingLevel kMagicalRecordLoggingLevel = MagicalRecordLoggingLevelDebug;\n#else\nstatic MagicalRecordLoggingLevel kMagicalRecordLoggingLevel = MagicalRecordLoggingLevelError;\n#endif\nstatic BOOL kMagicalRecordShouldAutoCreateManagedObjectModel = YES;\nstatic BOOL kMagicalRecordShouldAutoCreateDefaultPersistentStoreCoordinator = NO;\n#ifdef DEBUG\nstatic BOOL kMagicalRecordShouldDeleteStoreOnModelMismatch = YES;\n#else\nstatic BOOL kMagicalRecordShouldDeleteStoreOnModelMismatch = NO;\n#endif\n\n@implementation MagicalRecord (Options)\n\n#pragma mark - Configuration Options\n\n+ (BOOL) shouldAutoCreateManagedObjectModel\n{\n    return kMagicalRecordShouldAutoCreateManagedObjectModel;\n}\n\n+ (void) setShouldAutoCreateManagedObjectModel:(BOOL)autoCreate\n{\n    kMagicalRecordShouldAutoCreateManagedObjectModel = autoCreate;\n}\n\n+ (BOOL) shouldAutoCreateDefaultPersistentStoreCoordinator\n{\n    return kMagicalRecordShouldAutoCreateDefaultPersistentStoreCoordinator;\n}\n\n+ (void) setShouldAutoCreateDefaultPersistentStoreCoordinator:(BOOL)autoCreate\n{\n    kMagicalRecordShouldAutoCreateDefaultPersistentStoreCoordinator = autoCreate;\n}\n\n+ (BOOL) shouldDeleteStoreOnModelMismatch\n{\n    return kMagicalRecordShouldDeleteStoreOnModelMismatch;\n}\n\n+ (void) setShouldDeleteStoreOnModelMismatch:(BOOL)shouldDelete\n{\n    kMagicalRecordShouldDeleteStoreOnModelMismatch = shouldDelete;\n}\n\n+ (MagicalRecordLoggingLevel) loggingLevel\n{\n    return kMagicalRecordLoggingLevel;\n}\n\n+ (void) setLoggingLevel:(MagicalRecordLoggingLevel)level\n{\n    kMagicalRecordLoggingLevel = level;\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecord+Setup.h",
    "content": "//\n//  MagicalRecord+Setup.h\n//  Magical Record\n//\n//  Created by Saul Mora on 3/7/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <MagicalRecord/MagicalRecordInternal.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface MagicalRecord (Setup)\n\n+ (void) setupCoreDataStack;\n+ (void) setupCoreDataStackWithInMemoryStore;\n+ (void) setupAutoMigratingCoreDataStack;\n\n+ (void) setupCoreDataStackWithStoreNamed:(MR_nonnull NSString *)storeName;\n+ (void) setupCoreDataStackWithAutoMigratingSqliteStoreNamed:(MR_nonnull NSString *)storeName;\n\n+ (void) setupCoreDataStackWithStoreAtURL:(MR_nonnull NSURL *)storeURL;\n+ (void) setupCoreDataStackWithAutoMigratingSqliteStoreAtURL:(MR_nonnull NSURL *)storeURL;\n\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecord+Setup.m",
    "content": "//\n//  MagicalRecord+Setup.m\n//  Magical Record\n//\n//  Created by Saul Mora on 3/7/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalRecord+Setup.h\"\n#import \"NSManagedObject+MagicalRecord.h\"\n#import \"NSPersistentStoreCoordinator+MagicalRecord.h\"\n#import \"NSManagedObjectContext+MagicalRecord.h\"\n\n@implementation MagicalRecord (Setup)\n\n+ (void) setupCoreDataStack\n{\n    [self setupCoreDataStackWithStoreNamed:[self defaultStoreName]];\n}\n\n+ (void) setupAutoMigratingCoreDataStack\n{\n    [self setupCoreDataStackWithAutoMigratingSqliteStoreNamed:[self defaultStoreName]];\n}\n\n+ (void) setupCoreDataStackWithStoreNamed:(NSString *)storeName\n{\n    if ([NSPersistentStoreCoordinator MR_defaultStoreCoordinator] != nil) return;\n    \n\tNSPersistentStoreCoordinator *coordinator = [NSPersistentStoreCoordinator MR_coordinatorWithSqliteStoreNamed:storeName];\n    [NSPersistentStoreCoordinator MR_setDefaultStoreCoordinator:coordinator];\n\t\n    [NSManagedObjectContext MR_initializeDefaultContextWithCoordinator:coordinator];\n}\n\n+ (void) setupCoreDataStackWithAutoMigratingSqliteStoreNamed:(NSString *)storeName\n{\n    if ([NSPersistentStoreCoordinator MR_defaultStoreCoordinator] != nil) return;\n    \n    NSPersistentStoreCoordinator *coordinator = [NSPersistentStoreCoordinator MR_coordinatorWithAutoMigratingSqliteStoreNamed:storeName];\n    [NSPersistentStoreCoordinator MR_setDefaultStoreCoordinator:coordinator];\n    \n    [NSManagedObjectContext MR_initializeDefaultContextWithCoordinator:coordinator];\n}\n\n+ (void) setupCoreDataStackWithStoreAtURL:(NSURL *)storeURL\n{\n    if ([NSPersistentStoreCoordinator MR_defaultStoreCoordinator] != nil) return;\n    \n    NSPersistentStoreCoordinator *coordinator = [NSPersistentStoreCoordinator MR_coordinatorWithSqliteStoreAtURL:storeURL];\n    [NSPersistentStoreCoordinator MR_setDefaultStoreCoordinator:coordinator];\n    \n    [NSManagedObjectContext MR_initializeDefaultContextWithCoordinator:coordinator];\n}\n\n+ (void) setupCoreDataStackWithAutoMigratingSqliteStoreAtURL:(NSURL *)storeURL\n{\n    if ([NSPersistentStoreCoordinator MR_defaultStoreCoordinator] != nil) return;\n    \n    NSPersistentStoreCoordinator *coordinator = [NSPersistentStoreCoordinator MR_coordinatorWithAutoMigratingSqliteStoreAtURL:storeURL];\n    [NSPersistentStoreCoordinator MR_setDefaultStoreCoordinator:coordinator];\n    \n    [NSManagedObjectContext MR_initializeDefaultContextWithCoordinator:coordinator];\n}\n\n+ (void) setupCoreDataStackWithInMemoryStore\n{\n    if ([NSPersistentStoreCoordinator MR_defaultStoreCoordinator] != nil) return;\n    \n\tNSPersistentStoreCoordinator *coordinator = [NSPersistentStoreCoordinator MR_coordinatorWithInMemoryStore];\n\t[NSPersistentStoreCoordinator MR_setDefaultStoreCoordinator:coordinator];\n\t\n    [NSManagedObjectContext MR_initializeDefaultContextWithCoordinator:coordinator];\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecord+ShorthandMethods.h",
    "content": "//\n//  Copyright (c) 2015 Magical Panda Software LLC. All rights reserved.\n\n#import <MagicalRecord/MagicalRecordInternal.h>\n\n@interface MagicalRecord (ShorthandMethods)\n\n+ (void)enableShorthandMethods;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecord+ShorthandMethods.m",
    "content": "//\n//  Copyright (c) 2015 Magical Panda Software LLC. All rights reserved.\n\n#import \"MagicalRecord+ShorthandMethods.h\"\n#import <CoreData/CoreData.h>\n#import <objc/runtime.h>\n\nstatic NSString *const kMagicalRecordCategoryPrefix = @\"MR_\";\nstatic BOOL kMagicalRecordShorthandMethodsSwizzled = NO;\n\n@implementation MagicalRecord (ShorthandMethods)\n\n+ (void)enableShorthandMethods\n{\n    if (kMagicalRecordShorthandMethodsSwizzled == NO)\n    {\n        NSArray *classes = [self classesToSwizzle];\n\n        [classes enumerateObjectsUsingBlock:^(id object, NSUInteger idx, BOOL *stop) {\n            Class objectClass = (Class)object;\n\n            [self updateResolveMethodsForClass:objectClass];\n        }];\n\n        kMagicalRecordShorthandMethodsSwizzled = YES;\n    }\n}\n\n+ (NSArray *)classesToSwizzle\n{\n    return @[ [NSManagedObject class],\n              [NSManagedObjectContext class],\n              [NSManagedObjectModel class],\n              [NSPersistentStore class],\n              [NSPersistentStoreCoordinator class] ];\n}\n\n+ (NSArray *)methodNameBlacklist\n{\n    return @[ NSStringFromSelector(@selector(entityName)) ];\n}\n\n+ (BOOL)MR_resolveClassMethod:(SEL)originalSelector\n{\n    BOOL resolvedClassMethod = [self MR_resolveClassMethod:originalSelector];\n    if (!resolvedClassMethod)\n    {\n        resolvedClassMethod = MRAddShortHandMethodForPrefixedClassMethod(self, originalSelector, kMagicalRecordCategoryPrefix);\n    }\n    return resolvedClassMethod;\n}\n\n+ (BOOL)MR_resolveInstanceMethod:(SEL)originalSelector\n{\n    BOOL resolvedClassMethod = [self MR_resolveInstanceMethod:originalSelector];\n    if (!resolvedClassMethod)\n    {\n        resolvedClassMethod = MRAddShorthandMethodForPrefixedInstanceMethod(self, originalSelector, kMagicalRecordCategoryPrefix);\n    }\n    return resolvedClassMethod;\n}\n\n// In order to add support for non-prefixed AND prefixed methods, we need to swap the existing resolveClassMethod: and resolveInstanceMethod: implementations with the one in this class.\n+ (void)updateResolveMethodsForClass:(Class)objectClass\n{\n    MRReplaceSelectorForTargetWithSourceImplementation(self, @selector(MR_resolveClassMethod:), objectClass, @selector(resolveClassMethod:));\n    MRReplaceSelectorForTargetWithSourceImplementation(self, @selector(MR_resolveInstanceMethod:), objectClass, @selector(resolveInstanceMethod:));\n}\n\nstatic void MRReplaceSelectorForTargetWithSourceImplementation(Class sourceClass, SEL sourceSelector, Class targetClass, SEL targetSelector)\n{\n    Method sourceClassMethod = class_getClassMethod(sourceClass, sourceSelector);\n    Method targetClassMethod = class_getClassMethod(targetClass, targetSelector);\n\n    Class targetMetaClass = objc_getMetaClass([NSStringFromClass(targetClass) cStringUsingEncoding:NSUTF8StringEncoding]);\n\n    BOOL methodWasAdded = class_addMethod(targetMetaClass, sourceSelector,\n                                          method_getImplementation(targetClassMethod),\n                                          method_getTypeEncoding(targetClassMethod));\n\n    if (methodWasAdded)\n    {\n        class_replaceMethod(targetMetaClass, targetSelector,\n                            method_getImplementation(sourceClassMethod),\n                            method_getTypeEncoding(sourceClassMethod));\n    }\n}\n\nstatic BOOL MRAddShorthandMethodForPrefixedInstanceMethod(Class objectClass, SEL originalSelector, NSString *prefix)\n{\n    NSString *originalSelectorString = NSStringFromSelector(originalSelector);\n\n    if ([originalSelectorString hasPrefix:prefix] == NO)\n    {\n        NSString *prefixedSelector = [prefix stringByAppendingString:originalSelectorString];\n        Method existingMethod = class_getInstanceMethod(objectClass, NSSelectorFromString(prefixedSelector));\n\n        if (existingMethod)\n        {\n            BOOL methodWasAdded = class_addMethod(objectClass,\n                                                  originalSelector,\n                                                  method_getImplementation(existingMethod),\n                                                  method_getTypeEncoding(existingMethod));\n\n            return methodWasAdded;\n        }\n    }\n    return NO;\n}\n\nstatic BOOL MRAddShortHandMethodForPrefixedClassMethod(Class objectClass, SEL originalSelector, NSString *prefix)\n{\n    NSString *originalSelectorString = NSStringFromSelector(originalSelector);\n\n    if ([originalSelectorString hasPrefix:prefix] == NO &&\n        [originalSelectorString hasSuffix:@\"entityName\"] == NO)\n    {\n        NSString *prefixedSelector = [prefix stringByAppendingString:originalSelectorString];\n        Method existingMethod = class_getClassMethod(objectClass, NSSelectorFromString(prefixedSelector));\n\n        if (existingMethod)\n        {\n            Class metaClass = objc_getMetaClass([NSStringFromClass(objectClass) cStringUsingEncoding:NSUTF8StringEncoding]);\n            BOOL methodWasAdded = class_addMethod(metaClass,\n                                                  originalSelector,\n                                                  method_getImplementation(existingMethod),\n                                                  method_getTypeEncoding(existingMethod));\n\n            return methodWasAdded;\n        }\n    }\n    return NO;\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecord+iCloud.h",
    "content": "//\n//  MagicalRecord+iCloud.h\n//  Magical Record\n//\n//  Created by Saul Mora on 3/7/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#include <TargetConditionals.h>\n#if TARGET_OS_OSX || TARGET_OS_IOS\n#import <MagicalRecord/MagicalRecordInternal.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface MagicalRecord (iCloud)\n\n+ (BOOL)isICloudEnabled;\n\n+ (void)setupCoreDataStackWithiCloudContainer:(MR_nonnull NSString *)containerID\n                              localStoreNamed:(MR_nonnull NSString *)localStore;\n\n+ (void)setupCoreDataStackWithiCloudContainer:(MR_nonnull NSString *)containerID\n                               contentNameKey:(MR_nullable NSString *)contentNameKey\n                              localStoreNamed:(MR_nonnull NSString *)localStoreName\n                      cloudStorePathComponent:(MR_nullable NSString *)pathSubcomponent;\n\n+ (void)setupCoreDataStackWithiCloudContainer:(MR_nonnull NSString *)containerID\n                               contentNameKey:(MR_nullable NSString *)contentNameKey\n                              localStoreNamed:(MR_nonnull NSString *)localStoreName\n                      cloudStorePathComponent:(MR_nullable NSString *)pathSubcomponent\n                                   completion:(void (^ __MR_nullable)(void))completion;\n\n+ (void)setupCoreDataStackWithiCloudContainer:(MR_nonnull NSString *)containerID\n                              localStoreAtURL:(MR_nonnull NSURL *)storeURL;\n\n+ (void)setupCoreDataStackWithiCloudContainer:(MR_nonnull NSString *)containerID\n                               contentNameKey:(MR_nullable NSString *)contentNameKey\n                              localStoreAtURL:(MR_nonnull NSURL *)storeURL\n                      cloudStorePathComponent:(MR_nullable NSString *)pathSubcomponent;\n\n+ (void)setupCoreDataStackWithiCloudContainer:(MR_nonnull NSString *)containerID\n                               contentNameKey:(MR_nullable NSString *)contentNameKey\n                              localStoreAtURL:(MR_nonnull NSURL *)storeURL\n                      cloudStorePathComponent:(MR_nullable NSString *)pathSubcomponent\n                                   completion:(void (^ __MR_nullable)(void))completion;\n\n@end\n#endif\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecord+iCloud.m",
    "content": "//\n//  MagicalRecord+iCloud.m\n//  Magical Record\n//\n//  Created by Saul Mora on 3/7/12.\n//  Copyright (c) 2012 Magical Panda Software LLC. All rights reserved.\n//\n\n#include <TargetConditionals.h>\n#if TARGET_OS_OSX || TARGET_OS_IOS\n#import \"MagicalRecord+iCloud.h\"\n#import \"NSPersistentStoreCoordinator+MagicalRecord.h\"\n#import \"NSManagedObjectContext+MagicalRecord.h\"\n\nstatic BOOL _iCloudEnabled = NO;\n\n@implementation MagicalRecord (iCloud)\n\n#pragma mark - iCloud Methods\n\n+ (BOOL) isICloudEnabled\n{\n    return _iCloudEnabled;\n}\n\n+ (void) setICloudEnabled:(BOOL)enabled\n{\n    @synchronized(self)\n    {\n        _iCloudEnabled = enabled;\n    }\n}\n\n+ (void) setupCoreDataStackWithiCloudContainer:(NSString *)containerID localStoreNamed:(NSString *)localStore\n{\n    [self setupCoreDataStackWithiCloudContainer:containerID\n                                 contentNameKey:nil\n                                localStoreNamed:localStore\n                        cloudStorePathComponent:nil];\n}\n\n+ (void) setupCoreDataStackWithiCloudContainer:(NSString *)containerID contentNameKey:(NSString *)contentNameKey localStoreNamed:(NSString *)localStoreName cloudStorePathComponent:(NSString *)pathSubcomponent\n{\n    [self setupCoreDataStackWithiCloudContainer:containerID \n                                 contentNameKey:contentNameKey\n                                localStoreNamed:localStoreName\n                        cloudStorePathComponent:pathSubcomponent\n                                     completion:nil];\n}\n\n+ (void) setupCoreDataStackWithiCloudContainer:(NSString *)containerID contentNameKey:(NSString *)contentNameKey localStoreNamed:(NSString *)localStoreName cloudStorePathComponent:(NSString *)pathSubcomponent completion:(void(^)(void))completion\n{\n    NSPersistentStoreCoordinator *coordinator = [NSPersistentStoreCoordinator MR_coordinatorWithiCloudContainerID:containerID\n                                                                                                   contentNameKey:contentNameKey \n                                                                                                  localStoreNamed:localStoreName \n                                                                                          cloudStorePathComponent:pathSubcomponent\n                                                                                                       completion:completion];\n    [NSPersistentStoreCoordinator MR_setDefaultStoreCoordinator:coordinator];\n    [NSManagedObjectContext MR_initializeDefaultContextWithCoordinator:coordinator];\n}\n\n+ (void) setupCoreDataStackWithiCloudContainer:(NSString *)containerID localStoreAtURL:(NSURL *)storeURL\n{\n    NSString *contentNameKey = [[[NSBundle mainBundle] infoDictionary] objectForKey:(id)kCFBundleIdentifierKey];\n    [self setupCoreDataStackWithiCloudContainer:containerID\n                                 contentNameKey:contentNameKey\n                                localStoreAtURL:storeURL\n                        cloudStorePathComponent:nil];\n}\n\n+ (void) setupCoreDataStackWithiCloudContainer:(NSString *)containerID contentNameKey:(NSString *)contentNameKey localStoreAtURL:(NSURL *)storeURL cloudStorePathComponent:(NSString *)pathSubcomponent\n{\n    [self setupCoreDataStackWithiCloudContainer:containerID\n                                 contentNameKey:contentNameKey\n                                localStoreAtURL:storeURL\n                        cloudStorePathComponent:pathSubcomponent\n                                     completion:nil];\n}\n\n+ (void) setupCoreDataStackWithiCloudContainer:(NSString *)containerID contentNameKey:(NSString *)contentNameKey localStoreAtURL:(NSURL *)storeURL cloudStorePathComponent:(NSString *)pathSubcomponent completion:(void (^)(void))completion\n{\n    NSPersistentStoreCoordinator *coordinator = [NSPersistentStoreCoordinator MR_coordinatorWithiCloudContainerID:containerID contentNameKey:contentNameKey localStoreAtURL:storeURL cloudStorePathComponent:pathSubcomponent completion:completion];\n    \n    [NSPersistentStoreCoordinator MR_setDefaultStoreCoordinator:coordinator];\n    [NSManagedObjectContext MR_initializeDefaultContextWithCoordinator:coordinator];\n}\n\n@end\n#endif\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecordDeprecationMacros.h",
    "content": "//\n//  Created by Tony Arnold on 10/04/2014.\n//  Copyright (c) 2014 Magical Panda Software LLC. All rights reserved.\n//\n\n#define MR_DEPRECATED_WILL_BE_REMOVED_IN(VERSION) __attribute__((deprecated(\"This method has been deprecated and will be removed in MagicalRecord \" VERSION \".\")))\n#define MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(VERSION, METHOD) __attribute__((deprecated(\"This method has been deprecated and will be removed in MagicalRecord \" VERSION \". Please use `\" METHOD \"` instead.\")))\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecordInternal.h",
    "content": "//\n//  MagicalRecord.h\n//\n//  Created by Saul Mora on 3/11/10.\n//  Copyright 2010 Magical Panda Software, LLC All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n/**\n Defines current and historical version numbers for MagicalRecord.\n\n @since Available in v2.3 and later.\n */\ntypedef NS_ENUM(NSUInteger, MagicalRecordVersionTag)\n{\n    /** Version 2.2.0 */\n    MagicalRecordVersionTag2_2 = 220,\n\n    /** Version 2.3.0 */\n    MagicalRecordVersionTag2_3 = 230,\n\n    /** Version 3.0.0 */\n    MagicalRecordVersionTag3_0 = 300\n};\n\n// enable to use caches for the fetchedResultsControllers (iOS only)\n// #define STORE_USE_CACHE\n\n#ifdef NS_BLOCKS_AVAILABLE\n\nOBJC_EXPORT NSString * __MR_nonnull const kMagicalRecordCleanedUpNotification;\n\n@class NSManagedObjectContext;\ntypedef void (^CoreDataBlock)(NSManagedObjectContext * __MR_nonnull context);\n\n#endif\n\n/**\n Provides class methods to help setup, save, handle errors and provide information about the currently loaded version of MagicalRecord.\n\n @since Available in v1.0 and later.\n */\n@interface MagicalRecord : NSObject\n\n/**\n Returns the current version of MagicalRecord. See the MagicalRecordVersionTag enumeration for valid current and historical values.\n\n @return The current version as a double.\n\n @since Available in v2.3 and later.\n */\n+ (MagicalRecordVersionTag) version;\n\n/**\n Provides information about the current stack, including the model, coordinator, persistent store, the default context and any parent contexts of the default context.\n\n @return Description of the current state of the stack.\n\n @since Available in v2.3 and later.\n */\n+ (MR_nonnull NSString *) currentStack;\n\n/**\n Cleans up the entire MagicalRecord stack. Sets the default model, store and context to nil before posting a kMagicalRecordCleanedUpNotification notification.\n\n @since Available in v1.0 and later.\n */\n+ (void) cleanUp;\n\n/**\n Calls NSBundle's -bundleForClass: to determine the bundle to search for the default model within.\n\n @param modelClass Class to set the model from\n\n @since Available in v2.0 and later.\n */\n+ (void) setDefaultModelFromClass:(MR_nonnull Class)modelClass;\n\n/**\n Looks for a momd file with the specified name, and if found sets it as the default model.\n\n @param modelName Model name as a string, including file extension\n\n @since Available in v1.0 and later.\n */\n+ (void) setDefaultModelNamed:(MR_nonnull NSString *)modelName;\n\n/**\n Determines the store file name your app should use. This method is used by the MagicalRecord SQLite stacks when a store file is not specified. The file name returned is in the form \"<ApplicationName>.sqlite\". `<ApplicationName>` is taken from the application's info dictionary, which is retrieved from the method [[NSBundle mainBundle] infoDictionary]. If no bundle name is available, \"CoreDataStore.sqlite\" will be used.\n\n @return String of the form <ApplicationName>.sqlite\n\n @since Available in v2.0 and later.\n */\n+ (MR_nonnull NSString *) defaultStoreName;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecordInternal.m",
    "content": "//\n//  MagicalRecord.m\n//\n//  Created by Saul Mora on 3/11/10.\n//  Copyright 2010 Magical Panda Software, LLC All rights reserved.\n//\n\n#import \"MagicalRecord.h\"\n\nNSString * const kMagicalRecordCleanedUpNotification = @\"kMagicalRecordCleanedUpNotification\";\n\n@interface MagicalRecord (Internal)\n\n+ (void) cleanUpStack;\n+ (void) cleanUpErrorHanding;\n\n@end\n\n@interface NSManagedObjectContext (MagicalRecordInternal)\n\n+ (void) MR_cleanUp;\n\n@end\n\n\n@implementation MagicalRecord\n\n+ (MagicalRecordVersionTag) version\n{\n    return MagicalRecordVersionTag2_3;\n}\n\n+ (void) cleanUp\n{\n    [self cleanUpErrorHanding];\n    [self cleanUpStack];\n    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];\n    [notificationCenter postNotificationName:kMagicalRecordCleanedUpNotification\n                                      object:nil\n                                    userInfo:nil];\n}\n\n+ (void) cleanUpStack\n{\n\t[NSManagedObjectContext MR_cleanUp];\n\t[NSManagedObjectModel MR_setDefaultManagedObjectModel:nil];\n\t[NSPersistentStoreCoordinator MR_setDefaultStoreCoordinator:nil];\n\t[NSPersistentStore MR_setDefaultPersistentStore:nil];\n}\n\n+ (NSString *) currentStack\n{\n    NSMutableString *status = [NSMutableString stringWithString:@\"Current Default Core Data Stack: ---- \\n\"];\n\n    [status appendFormat:@\"Model:           %@\\n\", [[NSManagedObjectModel MR_defaultManagedObjectModel] entityVersionHashesByName]];\n    [status appendFormat:@\"Coordinator:     %@\\n\", [NSPersistentStoreCoordinator MR_defaultStoreCoordinator]];\n    [status appendFormat:@\"Store:           %@\\n\", [NSPersistentStore MR_defaultPersistentStore]];\n    [status appendFormat:@\"Default Context: %@\\n\", [[NSManagedObjectContext MR_defaultContext] MR_description]];\n    [status appendFormat:@\"Context Chain:   \\n%@\\n\", [[NSManagedObjectContext MR_defaultContext] MR_parentChain]];\n\n    return status;\n}\n\n+ (void) setDefaultModelNamed:(NSString *)modelName\n{\n    NSManagedObjectModel *model = [NSManagedObjectModel MR_managedObjectModelNamed:modelName];\n    [NSManagedObjectModel MR_setDefaultManagedObjectModel:model];\n}\n\n+ (void) setDefaultModelFromClass:(Class)modelClass\n{\n    NSBundle *bundle = [NSBundle bundleForClass:modelClass];\n    NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:[NSArray arrayWithObject:bundle]];\n    [NSManagedObjectModel MR_setDefaultManagedObjectModel:model];\n}\n\n+ (NSString *) defaultStoreName\n{\n    NSString *defaultName = [[[NSBundle mainBundle] infoDictionary] valueForKey:(NSString *)kCFBundleNameKey];\n    if (defaultName == nil)\n    {\n        defaultName = kMagicalRecordDefaultStoreFileName;\n    }\n    if (![defaultName hasSuffix:@\"sqlite\"]) \n    {\n        defaultName = [defaultName stringByAppendingPathExtension:@\"sqlite\"];\n    }\n\n    return defaultName;\n}\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecordLogging.h",
    "content": "//\n//  MagicalRecordLogging.h\n//  MagicalRecord\n//\n//  Created by Saul Mora on 10/4/13.\n//  Copyright (c) 2013 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <MagicalRecord/MagicalRecord+Options.h>\n\n#if MR_LOGGING_DISABLED\n\n#define MRLogError(frmt, ...) ((void)0)\n#define MRLogWarn(frmt, ...) ((void)0)\n#define MRLogInfo(frmt, ...) ((void)0)\n#define MRLogDebug(frmt, ...) ((void)0)\n#define MRLogVerbose(frmt, ...) ((void)0)\n\n#else\n\n#ifndef MR_LOGGING_CONTEXT\n#define MR_LOGGING_CONTEXT 0\n#endif\n\n#if __has_include(\"CocoaLumberjack.h\") || __has_include(\"CocoaLumberjack/CocoaLumberjack.h\")\n    #define MR_LOG_LEVEL_DEF (DDLogLevel)[MagicalRecord loggingLevel]\n    #define CAST (DDLogFlag)\n    #import <CocoaLumberjack/CocoaLumberjack.h>\n#else\n    #define MR_LOG_LEVEL_DEF [MagicalRecord loggingLevel]\n    #define LOG_ASYNC_ENABLED YES\n    #define CAST\n    #define LOG_MAYBE(async, lvl, flg, ctx, tag, fnct, frmt, ...) \\\n        do                                                        \\\n        {                                                         \\\n            if ((lvl & flg) == flg)                               \\\n            {                                                     \\\n                NSLog(frmt, ##__VA_ARGS__);                       \\\n            }                                                     \\\n        } while (0)\n#endif\n\n#define MRLogError(frmt, ...) LOG_MAYBE(NO, MR_LOG_LEVEL_DEF, CAST MagicalRecordLoggingMaskError, MR_LOGGING_CONTEXT, nil, __PRETTY_FUNCTION__, frmt, ##__VA_ARGS__)\n#define MRLogWarn(frmt, ...) LOG_MAYBE(LOG_ASYNC_ENABLED, MR_LOG_LEVEL_DEF, CAST MagicalRecordLoggingMaskWarn, MR_LOGGING_CONTEXT, nil, __PRETTY_FUNCTION__, frmt, ##__VA_ARGS__)\n#define MRLogInfo(frmt, ...) LOG_MAYBE(LOG_ASYNC_ENABLED, MR_LOG_LEVEL_DEF, CAST MagicalRecordLoggingMaskInfo, MR_LOGGING_CONTEXT, nil, __PRETTY_FUNCTION__, frmt, ##__VA_ARGS__)\n#define MRLogDebug(frmt, ...) LOG_MAYBE(LOG_ASYNC_ENABLED, MR_LOG_LEVEL_DEF, CAST MagicalRecordLoggingMaskDebug, MR_LOGGING_CONTEXT, nil, __PRETTY_FUNCTION__, frmt, ##__VA_ARGS__)\n#define MRLogVerbose(frmt, ...) LOG_MAYBE(LOG_ASYNC_ENABLED, MR_LOG_LEVEL_DEF, CAST MagicalRecordLoggingMaskVerbose, MR_LOGGING_CONTEXT, nil, __PRETTY_FUNCTION__, frmt, ##__VA_ARGS__)\n\n#endif\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecordShorthandMethodAliases.h",
    "content": "#import <MagicalRecord/MagicalRecord.h>\n#import <MagicalRecord/MagicalRecordDeprecationMacros.h>\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n\n@interface NSManagedObject (MagicalAggregationShortHand)\n\n+ (MR_nonnull NSNumber *) numberOfEntities;\n+ (MR_nonnull NSNumber *) numberOfEntitiesWithContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull NSNumber *) numberOfEntitiesWithPredicate:(MR_nullable NSPredicate *)searchTerm;\n+ (MR_nonnull NSNumber *) numberOfEntitiesWithPredicate:(MR_nullable NSPredicate *)searchTerm inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (NSUInteger) countOfEntities;\n+ (NSUInteger) countOfEntitiesWithContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (NSUInteger) countOfEntitiesWithPredicate:(MR_nullable NSPredicate *)searchFilter;\n+ (NSUInteger) countOfEntitiesWithPredicate:(MR_nullable NSPredicate *)searchFilter inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (BOOL) hasAtLeastOneEntity;\n+ (BOOL) hasAtLeastOneEntityInContext:(MR_nonnull NSManagedObjectContext *)context;\n- (MR_nullable id) minValueFor:(MR_nonnull NSString *)property;\n- (MR_nullable id) maxValueFor:(MR_nonnull NSString *)property;\n+ (MR_nullable id) aggregateOperation:(MR_nonnull NSString *)function onAttribute:(MR_nonnull NSString *)attributeName withPredicate:(MR_nullable NSPredicate *)predicate inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable id) aggregateOperation:(MR_nonnull NSString *)function onAttribute:(MR_nonnull NSString *)attributeName withPredicate:(MR_nullable NSPredicate *)predicate;\n+ (MR_nullable NSArray *) aggregateOperation:(MR_nonnull NSString *)collectionOperator onAttribute:(MR_nonnull NSString *)attributeName withPredicate:(MR_nullable NSPredicate *)predicate groupBy:(MR_nullable NSString*)groupingKeyPath inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable NSArray *) aggregateOperation:(MR_nonnull NSString *)collectionOperator onAttribute:(MR_nonnull NSString *)attributeName withPredicate:(MR_nullable NSPredicate *)predicate groupBy:(MR_nullable NSString*)groupingKeyPath;\n- (MR_nullable instancetype) objectWithMinValueFor:(MR_nonnull NSString *)property;\n- (MR_nullable instancetype) objectWithMinValueFor:(MR_nonnull NSString *)property inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n@end\n\n\n@interface NSManagedObject (MagicalRecord_DataImportShortHand)\n\n- (BOOL) importValuesForKeysWithObject:(MR_nonnull id)objectData;\n+ (MR_nonnull instancetype) importFromObject:(MR_nonnull id)data;\n+ (MR_nonnull instancetype) importFromObject:(MR_nonnull id)data inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull MR_NSArrayOfNSManagedObjects) importFromArray:(MR_nonnull MR_GENERIC(NSArray, NSDictionary *) *)listOfObjectData;\n+ (MR_nonnull MR_NSArrayOfNSManagedObjects) importFromArray:(MR_nonnull MR_GENERIC(NSArray, NSDictionary *) *)listOfObjectData inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n@end\n\n\n@interface NSManagedObject (MagicalFindersShortHand)\n\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) findAll;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) findAllInContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) findAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) findAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) findAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(MR_nullable NSPredicate *)searchTerm;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) findAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(MR_nullable NSPredicate *)searchTerm inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) findAllWithPredicate:(MR_nullable NSPredicate *)searchTerm;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) findAllWithPredicate:(MR_nullable NSPredicate *)searchTerm inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable instancetype) findFirst;\n+ (MR_nullable instancetype) findFirstInContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable instancetype) findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm;\n+ (MR_nullable instancetype) findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable instancetype) findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)property ascending:(BOOL)ascending;\n+ (MR_nullable instancetype) findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)property ascending:(BOOL)ascending inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable instancetype) findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm andRetrieveAttributes:(MR_nullable NSArray *)attributes;\n+ (MR_nullable instancetype) findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm andRetrieveAttributes:(MR_nullable NSArray *)attributes inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable instancetype) findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)sortBy ascending:(BOOL)ascending andRetrieveAttributes:(MR_nullable id)attributes, ...;\n+ (MR_nullable instancetype) findFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)sortBy ascending:(BOOL)ascending inContext:(MR_nonnull NSManagedObjectContext *)context andRetrieveAttributes:(MR_nullable id)attributes, ...;\n+ (MR_nullable instancetype) findFirstByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue;\n+ (MR_nullable instancetype) findFirstByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable instancetype) findFirstOrderedByAttribute:(MR_nonnull NSString *)attribute ascending:(BOOL)ascending;\n+ (MR_nullable instancetype) findFirstOrderedByAttribute:(MR_nonnull NSString *)attribute ascending:(BOOL)ascending inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull instancetype) findFirstOrCreateByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue;\n+ (MR_nonnull instancetype) findFirstOrCreateByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) findByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) findByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) findByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue andOrderBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) findByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nonnull id)searchValue andOrderBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n\n+ (MR_nonnull NSFetchedResultsController *) fetchController:(MR_nonnull NSFetchRequest *)request delegate:(MR_nullable id<NSFetchedResultsControllerDelegate>)delegate useFileCache:(BOOL)useFileCache groupedBy:(MR_nullable NSString *)groupKeyPath inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n#endif /* TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR */\n\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n\n+ (MR_nonnull NSFetchedResultsController *) fetchAllWithDelegate:(MR_nullable id<NSFetchedResultsControllerDelegate>)delegate;\n\n#endif /* TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR */\n\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n\n+ (MR_nonnull NSFetchedResultsController *) fetchAllWithDelegate:(MR_nullable id<NSFetchedResultsControllerDelegate>)delegate inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n#endif /* TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR */\n\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n\n+ (MR_nonnull NSFetchedResultsController *) fetchAllSortedBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(MR_nullable NSPredicate *)searchTerm groupBy:(MR_nullable NSString *)groupingKeyPath delegate:(MR_nullable id<NSFetchedResultsControllerDelegate>)delegate;\n\n#endif /* TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR */\n\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n\n+ (MR_nonnull NSFetchedResultsController *) fetchAllSortedBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(MR_nullable NSPredicate *)searchTerm groupBy:(MR_nullable NSString *)groupingKeyPath delegate:(MR_nullable id<NSFetchedResultsControllerDelegate>)delegate inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n#endif /* TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR */\n\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n\n+ (MR_nonnull NSFetchedResultsController *) fetchAllGroupedBy:(MR_nullable NSString *)group withPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending;\n\n#endif /* TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR */\n\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n\n+ (MR_nonnull NSFetchedResultsController *) fetchAllGroupedBy:(MR_nullable NSString *)group withPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n#endif /* TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR */\n\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n\n+ (MR_nonnull NSFetchedResultsController *) fetchAllGroupedBy:(MR_nullable NSString *)group withPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending delegate:(MR_nullable id<NSFetchedResultsControllerDelegate>)delegate;\n\n#endif /* TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR */\n\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n\n+ (MR_nonnull NSFetchedResultsController *) fetchAllGroupedBy:(MR_nullable NSString *)group withPredicate:(MR_nullable NSPredicate *)searchTerm sortedBy:(MR_nullable NSString *)sortTerm ascending:(BOOL)ascending delegate:(MR_nullable id<NSFetchedResultsControllerDelegate>)delegate inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n#endif /* TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR */\n\n@end\n\n\n@interface NSManagedObject (MagicalRecordShortHand)\n\n+ (MR_nonnull NSString *) entityName;\n+ (NSUInteger) defaultBatchSize;\n+ (void) setDefaultBatchSize:(NSUInteger)newBatchSize;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) executeFetchRequest:(MR_nonnull NSFetchRequest *)request;\n+ (MR_nullable MR_NSArrayOfNSManagedObjects) executeFetchRequest:(MR_nonnull NSFetchRequest *)request inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable instancetype) executeFetchRequestAndReturnFirstObject:(MR_nonnull NSFetchRequest *)request;\n+ (MR_nullable instancetype) executeFetchRequestAndReturnFirstObject:(MR_nonnull NSFetchRequest *)request inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n\n+ (BOOL) performFetch:(MR_nonnull NSFetchedResultsController *)controller;\n\n#endif /* TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR */\n+ (MR_nullable NSEntityDescription *) entityDescription;\n+ (MR_nullable NSEntityDescription *) entityDescriptionInContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable MR_GENERIC(NSArray, NSPropertyDescription *) *) propertiesNamed:(MR_nonnull MR_GENERIC(NSArray, NSString *) *)properties;\n+ (MR_nullable MR_GENERIC(NSArray, NSPropertyDescription *) *) propertiesNamed:(MR_nonnull MR_GENERIC(NSArray, NSString *) *)properties inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nullable instancetype) createEntity;\n+ (MR_nullable instancetype) createEntityInContext:(MR_nonnull NSManagedObjectContext *)context;\n- (BOOL) deleteEntity;\n- (BOOL) deleteEntityInContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (BOOL) deleteAllMatchingPredicate:(MR_nonnull NSPredicate *)predicate;\n+ (BOOL) deleteAllMatchingPredicate:(MR_nonnull NSPredicate *)predicate inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (BOOL) truncateAll;\n+ (BOOL) truncateAllInContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull MR_GENERIC(NSArray, NSSortDescriptor *) *) ascendingSortDescriptors:(MR_nonnull MR_GENERIC(NSArray, NSString *) *)attributesToSortBy;\n+ (MR_nonnull MR_GENERIC(NSArray, NSSortDescriptor *) *) descendingSortDescriptors:(MR_nonnull MR_GENERIC(NSArray, NSString *) *)attributesToSortBy;\n- (MR_nullable instancetype) inContext:(MR_nonnull NSManagedObjectContext *)otherContext;\n- (MR_nullable instancetype) inThreadContext;\n\n@end\n\n\n@interface NSManagedObject (MagicalRecordDeprecatedShortHand)\n\n+ (MR_nullable instancetype) createInContext:(MR_nonnull NSManagedObjectContext *)context MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"4.0\", \"MR_createEntityInContext:\");\n- (BOOL) deleteInContext:(MR_nonnull NSManagedObjectContext *)context MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"4.0\", \"MR_deleteEntityInContext:\");\n\n@end\n\n\n@interface NSManagedObject (MagicalRequestsShortHand)\n\n+ (MR_nonnull NSFetchRequest *) createFetchRequest;\n+ (MR_nonnull NSFetchRequest *) createFetchRequestInContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull NSFetchRequest *) requestAll;\n+ (MR_nonnull NSFetchRequest *) requestAllInContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull NSFetchRequest *) requestAllWithPredicate:(MR_nullable NSPredicate *)searchTerm;\n+ (MR_nonnull NSFetchRequest *) requestAllWithPredicate:(MR_nullable NSPredicate *)searchTerm inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull NSFetchRequest *) requestAllWhere:(MR_nonnull NSString *)property isEqualTo:(MR_nonnull id)value;\n+ (MR_nonnull NSFetchRequest *) requestAllWhere:(MR_nonnull NSString *)property isEqualTo:(MR_nonnull id)value inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull NSFetchRequest *) requestFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm;\n+ (MR_nonnull NSFetchRequest *) requestFirstWithPredicate:(MR_nullable NSPredicate *)searchTerm inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull NSFetchRequest *) requestFirstByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nullable id)searchValue;\n+ (MR_nonnull NSFetchRequest *) requestFirstByAttribute:(MR_nonnull NSString *)attribute withValue:(MR_nullable id)searchValue inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull NSFetchRequest *) requestAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending;\n+ (MR_nonnull NSFetchRequest *) requestAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending inContext:(MR_nonnull NSManagedObjectContext *)context;\n+ (MR_nonnull NSFetchRequest *) requestAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(MR_nullable NSPredicate *)searchTerm;\n+ (MR_nonnull NSFetchRequest *) requestAllSortedBy:(MR_nonnull NSString *)sortTerm ascending:(BOOL)ascending withPredicate:(MR_nullable NSPredicate *)searchTerm inContext:(MR_nonnull NSManagedObjectContext *)context;\n\n@end\n\n\n@interface NSManagedObjectContext (MagicalRecordChainSaveShortHand)\n\n- (void)saveWithBlock:(void (^ __MR_nonnull)(NSManagedObjectContext * __MR_nonnull localContext))block;\n- (void)saveWithBlock:(void (^ __MR_nonnull)(NSManagedObjectContext * __MR_nonnull localContext))block completion:(MR_nullable MRSaveCompletionHandler)completion;\n- (void)saveWithBlockAndWait:(void (^ __MR_nonnull)(NSManagedObjectContext * __MR_nonnull localContext))block;\n\n@end\n\n\n@interface NSManagedObjectContext (MagicalObservingShortHand)\n\n- (void) observeContext:(MR_nonnull NSManagedObjectContext *)otherContext;\n- (void) stopObservingContext:(MR_nonnull NSManagedObjectContext *)otherContext;\n- (void) observeContextOnMainThread:(MR_nonnull NSManagedObjectContext *)otherContext;\n- (void) observeiCloudChangesInCoordinator:(MR_nonnull NSPersistentStoreCoordinator *)coordinator;\n- (void) stopObservingiCloudChangesInCoordinator:(MR_nonnull NSPersistentStoreCoordinator *)coordinator;\n\n@end\n\n\n@interface NSManagedObjectContext (MagicalRecordShortHand)\n\n+ (void) initializeDefaultContextWithCoordinator:(MR_nonnull NSPersistentStoreCoordinator *)coordinator;\n+ (MR_nonnull NSManagedObjectContext *) rootSavingContext;\n+ (MR_nonnull NSManagedObjectContext *) defaultContext;\n+ (MR_nonnull NSManagedObjectContext *) context;\n+ (MR_nonnull NSManagedObjectContext *) contextWithParent:(MR_nonnull NSManagedObjectContext *)parentContext;\n+ (MR_nonnull NSManagedObjectContext *) contextWithStoreCoordinator:(MR_nonnull NSPersistentStoreCoordinator *)coordinator;\n+ (MR_nonnull NSManagedObjectContext *) newMainQueueContext NS_RETURNS_RETAINED;\n+ (MR_nonnull NSManagedObjectContext *) newPrivateQueueContext NS_RETURNS_RETAINED;\n- (void) setWorkingName:(MR_nonnull NSString *)workingName;\n- (MR_nonnull NSString *) workingName;\n- (MR_nonnull NSString *) description;\n- (MR_nonnull NSString *) parentChain;\n+ (void) resetDefaultContext;\n- (void) deleteObjects:(MR_nonnull id <NSFastEnumeration>)objects;\n\n@end\n\n\n@interface NSManagedObjectContext (MagicalRecordDeprecatedShortHand)\n\n+ (MR_nonnull NSManagedObjectContext *) contextWithoutParent MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"4.0\", \"MR_newPrivateQueueContext\");\n+ (MR_nonnull NSManagedObjectContext *) newContext MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"4.0\", \"MR_context\");\n+ (MR_nonnull NSManagedObjectContext *) newContextWithParent:(MR_nonnull NSManagedObjectContext *)parentContext MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"4.0\", \"MR_contextWithParent:\");\n+ (MR_nonnull NSManagedObjectContext *) newContextWithStoreCoordinator:(MR_nonnull NSPersistentStoreCoordinator *)coordinator MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"4.0\", \"MR_contextWithStoreCoordinator:\");\n\n@end\n\n\n@interface NSManagedObjectContext (MagicalSavesShortHand)\n\n- (void) saveOnlySelfWithCompletion:(MR_nullable MRSaveCompletionHandler)completion;\n- (void) saveToPersistentStoreWithCompletion:(MR_nullable MRSaveCompletionHandler)completion;\n- (void) saveOnlySelfAndWait;\n- (void) saveToPersistentStoreAndWait;\n- (void) saveWithOptions:(MRSaveOptions)saveOptions completion:(MR_nullable MRSaveCompletionHandler)completion;\n\n@end\n\n\n@interface NSManagedObjectContext (MagicalSavesDeprecatedShortHand)\n\n- (void) save MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"3.0\", \"MR_saveToPersistentStoreAndWait\");\n- (void) saveWithErrorCallback:(void (^ __MR_nullable)(NSError * __MR_nullable error))errorCallback MR_DEPRECATED_WILL_BE_REMOVED_IN(\"3.0\");\n- (void) saveInBackgroundCompletion:(void (^ __MR_nullable)(void))completion MR_DEPRECATED_WILL_BE_REMOVED_IN(\"3.0\");\n- (void) saveInBackgroundErrorHandler:(void (^ __MR_nullable)(NSError * __MR_nullable error))errorCallback MR_DEPRECATED_WILL_BE_REMOVED_IN(\"3.0\");\n- (void) saveInBackgroundErrorHandler:(void (^ __MR_nullable)(NSError * __MR_nullable error))errorCallback completion:(void (^ __MR_nullable)(void))completion MR_DEPRECATED_WILL_BE_REMOVED_IN(\"3.0\");\n- (void) saveNestedContexts MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"3.0\", \"MR_saveToPersistentStoreWithCompletion:\");\n- (void) saveNestedContextsErrorHandler:(void (^ __MR_nullable)(NSError * __MR_nullable error))errorCallback MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"3.0\", \"MR_saveToPersistentStoreWithCompletion:\");\n- (void) saveNestedContextsErrorHandler:(void (^ __MR_nullable)(NSError * __MR_nullable error))errorCallback completion:(void (^ __MR_nullable)(void))completion MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"3.0\", \"MR_saveToPersistentStoreWithCompletion:\");\n\n@end\n\n\n@interface NSManagedObjectContext (MagicalThreadingShortHand)\n\n+ (MR_nonnull NSManagedObjectContext *) contextForCurrentThread __attribute((deprecated(\"This method will be removed in MagicalRecord 3.0\")));\n+ (void) clearNonMainThreadContextsCache __attribute((deprecated(\"This method will be removed in MagicalRecord 3.0\")));\n+ (void) resetContextForCurrentThread __attribute((deprecated(\"This method will be removed in MagicalRecord 3.0\")));\n+ (void) clearContextForCurrentThread __attribute((deprecated(\"This method will be removed in MagicalRecord 3.0\")));\n\n@end\n\n\n@interface NSManagedObjectModel (MagicalRecordShortHand)\n\n+ (MR_nullable NSManagedObjectModel *) defaultManagedObjectModel;\n+ (void) setDefaultManagedObjectModel:(MR_nullable NSManagedObjectModel *)newDefaultModel;\n+ (MR_nullable NSManagedObjectModel *) mergedObjectModelFromMainBundle;\n+ (MR_nullable NSManagedObjectModel *) newManagedObjectModelNamed:(MR_nonnull NSString *)modelFileName NS_RETURNS_RETAINED;\n+ (MR_nullable NSManagedObjectModel *) managedObjectModelNamed:(MR_nonnull NSString *)modelFileName;\n+ (MR_nullable NSManagedObjectModel *) newModelNamed:(MR_nonnull NSString *) modelName inBundleNamed:(MR_nonnull NSString *) bundleName NS_RETURNS_RETAINED;\n+ (MR_nullable NSManagedObjectModel *) newModelNamed:(MR_nonnull NSString *) modelName inBundle:(MR_nonnull NSBundle*) bundle NS_RETURNS_RETAINED;\n\n@end\n\n\n@interface NSPersistentStore (MagicalRecordShortHand)\n\n+ (MR_nonnull NSURL *) defaultLocalStoreUrl;\n+ (MR_nullable NSPersistentStore *) defaultPersistentStore;\n+ (void) setDefaultPersistentStore:(MR_nullable NSPersistentStore *) store;\n+ (MR_nullable NSURL *) urlForStoreName:(MR_nonnull NSString *)storeFileName;\n+ (MR_nullable NSURL *) cloudURLForUbiquitousContainer:(MR_nonnull NSString *)bucketName;\n+ (MR_nullable NSURL *) cloudURLForUbiqutiousContainer:(MR_nonnull NSString *)bucketName MR_DEPRECATED_WILL_BE_REMOVED_IN_PLEASE_USE(\"4.0\", \"cloudURLForUbiquitousContainer:\");\n\n@end\n\n\n@interface NSPersistentStoreCoordinator (MagicalRecordShortHand)\n\n+ (MR_nullable NSPersistentStoreCoordinator *) defaultStoreCoordinator;\n+ (void) setDefaultStoreCoordinator:(MR_nullable NSPersistentStoreCoordinator *)coordinator;\n+ (MR_nonnull NSPersistentStoreCoordinator *) coordinatorWithInMemoryStore;\n+ (MR_nonnull NSPersistentStoreCoordinator *) newPersistentStoreCoordinator NS_RETURNS_RETAINED;\n+ (MR_nonnull NSPersistentStoreCoordinator *) coordinatorWithSqliteStoreNamed:(MR_nonnull NSString *)storeFileName;\n+ (MR_nonnull NSPersistentStoreCoordinator *) coordinatorWithSqliteStoreNamed:(MR_nonnull NSString *)storeFileName withOptions:(MR_nullable __autoreleasing NSDictionary *)options;\n+ (MR_nonnull NSPersistentStoreCoordinator *) coordinatorWithAutoMigratingSqliteStoreNamed:(MR_nonnull NSString *)storeFileName;\n+ (MR_nonnull NSPersistentStoreCoordinator *) coordinatorWithAutoMigratingSqliteStoreNamed:(MR_nonnull NSString *)storeFileName withOptions:(MR_nullable __autoreleasing NSDictionary *)options;\n+ (MR_nonnull NSPersistentStoreCoordinator *) coordinatorWithSqliteStoreAtURL:(MR_nonnull NSURL *)storeURL;\n+ (MR_nonnull NSPersistentStoreCoordinator *) coordinatorWithAutoMigratingSqliteStoreAtURL:(MR_nonnull NSURL *)storeURL;\n+ (MR_nonnull NSPersistentStoreCoordinator *) coordinatorWithPersistentStore:(MR_nonnull NSPersistentStore *)persistentStore;\n+ (MR_nonnull NSPersistentStoreCoordinator *) coordinatorWithiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreNamed:(MR_nonnull NSString *)localStoreName cloudStorePathComponent:(MR_nullable NSString *)subPathComponent;\n+ (MR_nonnull NSPersistentStoreCoordinator *) coordinatorWithiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreAtURL:(MR_nonnull NSURL *)storeURL cloudStorePathComponent:(MR_nullable NSString *)subPathComponent;\n+ (MR_nonnull NSPersistentStoreCoordinator *) coordinatorWithiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreNamed:(MR_nonnull NSString *)localStoreName cloudStorePathComponent:(MR_nullable NSString *)subPathComponent completion:(void (^ __MR_nullable)(void))completionHandler;\n+ (MR_nonnull NSPersistentStoreCoordinator *) coordinatorWithiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreAtURL:(MR_nonnull NSURL *)storeURL cloudStorePathComponent:(MR_nullable NSString *)subPathComponent completion:(void (^ __MR_nullable)(void))completionHandler;\n- (MR_nullable NSPersistentStore *) addInMemoryStore;\n- (MR_nullable NSPersistentStore *) addAutoMigratingSqliteStoreNamed:(MR_nonnull NSString *) storeFileName;\n- (MR_nullable NSPersistentStore *) addAutoMigratingSqliteStoreAtURL:(MR_nonnull NSURL *)storeURL;\n- (MR_nullable NSPersistentStore *) addSqliteStoreNamed:(MR_nonnull id)storeFileName withOptions:(MR_nullable __autoreleasing NSDictionary *)options;\n- (MR_nullable NSPersistentStore *) addSqliteStoreNamed:(MR_nonnull id)storeFileName configuration:(MR_nullable NSString *)configuration withOptions:(MR_nullable __autoreleasing NSDictionary *)options;\n- (void) addiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreNamed:(MR_nonnull NSString *)localStoreName cloudStorePathComponent:(MR_nullable NSString *)subPathComponent;\n- (void) addiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreAtURL:(MR_nonnull NSURL *)storeURL cloudStorePathComponent:(MR_nullable NSString *)subPathComponent;\n- (void) addiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreNamed:(MR_nonnull NSString *)localStoreName cloudStorePathComponent:(MR_nullable NSString *)subPathComponent completion:(void (^ __MR_nullable)(void))completionBlock;\n- (void) addiCloudContainerID:(MR_nonnull NSString *)containerID contentNameKey:(MR_nullable NSString *)contentNameKey localStoreAtURL:(MR_nonnull NSURL *)storeURL cloudStorePathComponent:(MR_nullable NSString *)subPathComponent completion:(void (^ __MR_nullable)(void))completionBlock;\n\n@end\n"
  },
  {
    "path": "MagicalRecord/Core/MagicalRecordXcode7CompatibilityMacros.h",
    "content": "//\n//  Copyright © 2015 Magical Panda Software LLC. All rights reserved.\n//\n//  The following preprocessor macros can be used to adopt the new nullability annotations and generics\n//  features available in Xcode 7, while maintaining backwards compatibility with earlier versions of\n//  Xcode that do not support these features.\n//\n//  Originally taken from https://gist.github.com/smileyborg/d513754bc1cf41678054\n\n#ifndef MagicalRecordXcode7CompatibilityMacros_h\n#define MagicalRecordXcode7CompatibilityMacros_h\n\n#if __has_feature(nullability)\n#define MR_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN\n#define MR_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END\n#define MR_nullable nullable\n#define MR_nonnull nonnull\n#define __MR_nullable __nullable\n#define __MR_nonnull __nonnull\n#else\n#define MR_ASSUME_NONNULL_BEGIN\n#define MR_ASSUME_NONNULL_END\n#define MR_nullable\n#define MR_nonnull\n#define __MR_nullable\n#define __MR_nonnull\n#endif\n\n#if __has_feature(objc_generics)\n#define MR_GENERIC(class, ...) class<__VA_ARGS__>\n#define MR_GENERIC_TYPE(type) type\n#define __MR_kindof(class) __kindof class\n#else\n#define MR_GENERIC(class, ...) class\n#define MR_GENERIC_TYPE(type) id\n#define __MR_kindof(class) id\n#endif\n\n#define MR_NSArrayOfNSManagedObjects MR_GENERIC(NSArray, __MR_kindof(NSManagedObject) *) *\n\n#endif /* MagicalRecordXcode7CompatibilityMacros_h */\n"
  },
  {
    "path": "MagicalRecord/MagicalRecord.h",
    "content": "//\n//  MagicalRecord.h\n//\n//  Created by Saul Mora on 28/07/10.\n//  Copyright 2010 Magical Panda Software, LLC All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import <CoreData/CoreData.h>\n\n//! Project version number for MagicalRecord.\nFOUNDATION_EXPORT double MagicalRecordVersionNumber;\n\n//! Project version string for MagicalRecord.\nFOUNDATION_EXPORT const unsigned char MagicalRecordVersionString[];\n\n#import <MagicalRecord/MagicalRecordXcode7CompatibilityMacros.h>\n#import <MagicalRecord/MagicalRecordInternal.h>\n#import <MagicalRecord/MagicalRecordLogging.h>\n\n#import <MagicalRecord/MagicalRecord+Actions.h>\n#import <MagicalRecord/MagicalRecord+ErrorHandling.h>\n#import <MagicalRecord/MagicalRecord+Options.h>\n#import <MagicalRecord/MagicalRecord+Setup.h>\n#import <MagicalRecord/MagicalRecord+iCloud.h>\n\n#import <MagicalRecord/NSManagedObject+MagicalRecord.h>\n#import <MagicalRecord/NSManagedObject+MagicalRequests.h>\n#import <MagicalRecord/NSManagedObject+MagicalFinders.h>\n#import <MagicalRecord/NSManagedObject+MagicalAggregation.h>\n#import <MagicalRecord/NSManagedObjectContext+MagicalRecord.h>\n#import <MagicalRecord/NSManagedObjectContext+MagicalChainSave.h>\n#import <MagicalRecord/NSManagedObjectContext+MagicalObserving.h>\n#import <MagicalRecord/NSManagedObjectContext+MagicalSaves.h>\n#import <MagicalRecord/NSManagedObjectContext+MagicalThreading.h>\n#import <MagicalRecord/NSPersistentStoreCoordinator+MagicalRecord.h>\n#import <MagicalRecord/NSManagedObjectModel+MagicalRecord.h>\n#import <MagicalRecord/NSPersistentStore+MagicalRecord.h>\n\n#import <MagicalRecord/MagicalImportFunctions.h>\n#import <MagicalRecord/NSManagedObject+MagicalDataImport.h>\n#import <MagicalRecord/NSNumber+MagicalDataImport.h>\n#import <MagicalRecord/NSObject+MagicalDataImport.h>\n#import <MagicalRecord/NSString+MagicalDataImport.h>\n#import <MagicalRecord/NSAttributeDescription+MagicalDataImport.h>\n#import <MagicalRecord/NSRelationshipDescription+MagicalDataImport.h>\n#import <MagicalRecord/NSEntityDescription+MagicalDataImport.h>\n"
  },
  {
    "path": "MagicalRecord.podspec",
    "content": "Pod::Spec.new do |s|\n  s.default_subspec = 'Core'\n  s.name     = 'MagicalRecord'\n  s.version  = '2.4.0'\n  s.license  = 'MIT'\n  s.summary  = 'Super Awesome Easy Fetching for Core Data!'\n  s.homepage = 'https://github.com/magicalpanda/MagicalRecord'\n  s.author   = { 'Saul Mora' => 'saul@magicalpanda.com', 'Tony Arnold' => 'tony@thecocoabots.com' }\n  s.source   = { :git => 'https://github.com/magicalpanda/MagicalRecord.git', :tag => \"v#{s.version}\" }\n  s.description  = 'Handy fetching, threading and data import helpers to make Core Data a little easier to use.'\n  s.ios.deployment_target = '8.0'\n  s.osx.deployment_target = '10.8'\n  s.tvos.deployment_target = '9.0'\n  s.watchos.deployment_target = '2.0'\n\n  s.subspec 'Core' do |sp|\n    sp.framework    = 'CoreData'\n    sp.header_dir   = 'MagicalRecord'\n    sp.source_files = 'MagicalRecord/**/*.{h,m}'\n    sp.exclude_files = '**/MagicalRecordShorthandMethodAliases.h'\n    sp.prefix_header_contents = <<-EOS\n    #import <CoreData/CoreData.h>\n    #import <MagicalRecord/MagicalRecord.h>\n    EOS\n  end\n\n  s.subspec 'ShorthandMethodAliases' do |sp|\n    sp.source_files = '**/MagicalRecordShorthandMethodAliases.h'\n  end\n\n  s.subspec 'CocoaLumberjack' do |sp|\n    sp.dependency 'CocoaLumberjack', '~> 3.0'\n    sp.dependency 'MagicalRecord/Core'\n  end\n\nend\n"
  },
  {
    "path": "MagicalRecord.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t1352E5841B175E6200182E53 /* MagicalRecord.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72D4150F832A00216827 /* MagicalRecord.h */; };\n\t\t1352E5851B175E6200182E53 /* MagicalImportFunctions.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD729C150F832A00216827 /* MagicalImportFunctions.h */; };\n\t\t1352E5861B175E6200182E53 /* NSAttributeDescription+MagicalDataImport.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD729E150F832A00216827 /* NSAttributeDescription+MagicalDataImport.h */; };\n\t\t1352E5871B175E6200182E53 /* NSEntityDescription+MagicalDataImport.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72A0150F832A00216827 /* NSEntityDescription+MagicalDataImport.h */; };\n\t\t1352E5881B175E6200182E53 /* NSNumber+MagicalDataImport.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72A2150F832A00216827 /* NSNumber+MagicalDataImport.h */; };\n\t\t1352E5891B175E6200182E53 /* NSObject+MagicalDataImport.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72A4150F832A00216827 /* NSObject+MagicalDataImport.h */; };\n\t\t1352E58A1B175E6200182E53 /* NSRelationshipDescription+MagicalDataImport.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72A6150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.h */; };\n\t\t1352E58B1B175E6200182E53 /* NSString+MagicalDataImport.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72A8150F832A00216827 /* NSString+MagicalDataImport.h */; };\n\t\t1352E58C1B175E6200182E53 /* NSManagedObject+MagicalAggregation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72AB150F832A00216827 /* NSManagedObject+MagicalAggregation.h */; };\n\t\t1352E58D1B175E6200182E53 /* NSManagedObject+MagicalDataImport.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72AD150F832A00216827 /* NSManagedObject+MagicalDataImport.h */; };\n\t\t1352E58E1B175E6200182E53 /* NSManagedObject+MagicalFinders.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72AF150F832A00216827 /* NSManagedObject+MagicalFinders.h */; };\n\t\t1352E58F1B175E6200182E53 /* NSManagedObject+MagicalRecord.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72B1150F832A00216827 /* NSManagedObject+MagicalRecord.h */; };\n\t\t1352E5901B175E6200182E53 /* NSManagedObject+MagicalRequests.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72B3150F832A00216827 /* NSManagedObject+MagicalRequests.h */; };\n\t\t1352E5911B175E6200182E53 /* NSManagedObjectContext+MagicalChainSave.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BB566891A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.h */; };\n\t\t1352E5921B175E6200182E53 /* NSManagedObjectContext+MagicalObserving.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72B6150F832A00216827 /* NSManagedObjectContext+MagicalObserving.h */; };\n\t\t1352E5931B175E6200182E53 /* NSManagedObjectContext+MagicalRecord.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72B8150F832A00216827 /* NSManagedObjectContext+MagicalRecord.h */; };\n\t\t1352E5941B175E6200182E53 /* NSManagedObjectContext+MagicalSaves.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72BA150F832A00216827 /* NSManagedObjectContext+MagicalSaves.h */; };\n\t\t1352E5951B175E6200182E53 /* NSManagedObjectContext+MagicalThreading.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72BC150F832A00216827 /* NSManagedObjectContext+MagicalThreading.h */; };\n\t\t1352E5961B175E6200182E53 /* NSManagedObjectModel+MagicalRecord.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72BE150F832A00216827 /* NSManagedObjectModel+MagicalRecord.h */; };\n\t\t1352E5971B175E6200182E53 /* NSPersistentStore+MagicalRecord.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72C0150F832A00216827 /* NSPersistentStore+MagicalRecord.h */; };\n\t\t1352E5981B175E6200182E53 /* NSPersistentStoreCoordinator+MagicalRecord.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72C2150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.h */; };\n\t\t1352E5991B175E6200182E53 /* MagicalRecord+Actions.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72C5150F832A00216827 /* MagicalRecord+Actions.h */; };\n\t\t1352E59A1B175E6200182E53 /* MagicalRecord+ErrorHandling.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72C7150F832A00216827 /* MagicalRecord+ErrorHandling.h */; };\n\t\t1352E59B1B175E6200182E53 /* MagicalRecord+iCloud.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72C9150F832A00216827 /* MagicalRecord+iCloud.h */; };\n\t\t1352E59C1B175E6200182E53 /* MagicalRecord+Options.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72CB150F832A00216827 /* MagicalRecord+Options.h */; };\n\t\t1352E59D1B175E6200182E53 /* MagicalRecord+Setup.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72CD150F832A00216827 /* MagicalRecord+Setup.h */; };\n\t\t1352E59E1B175E6200182E53 /* MagicalRecord+ShorthandMethods.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 90B05B891B02452A00354056 /* MagicalRecord+ShorthandMethods.h */; };\n\t\t1352E59F1B175E6200182E53 /* MagicalRecordDeprecationMacros.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 902CE11E18F6133E0024F47C /* MagicalRecordDeprecationMacros.h */; };\n\t\t1352E5A01B175E6200182E53 /* MagicalRecordInternal.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C7DD72D1150F832A00216827 /* MagicalRecordInternal.h */; };\n\t\t1352E5A11B175E6200182E53 /* MagicalRecordLogging.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 90FEC08B18F42DEA002FFC2F /* MagicalRecordLogging.h */; };\n\t\t1352E5A21B175E6200182E53 /* MagicalRecordShorthandMethodAliases.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 90B05B851B02450900354056 /* MagicalRecordShorthandMethodAliases.h */; };\n\t\t1352E5F21B176AF600182E53 /* MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72D4150F832A00216827 /* MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E5F31B176AF600182E53 /* MagicalImportFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD729C150F832A00216827 /* MagicalImportFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E5F41B176AF600182E53 /* NSAttributeDescription+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD729E150F832A00216827 /* NSAttributeDescription+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E5F51B176AF600182E53 /* NSEntityDescription+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A0150F832A00216827 /* NSEntityDescription+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E5F61B176AF600182E53 /* NSNumber+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A2150F832A00216827 /* NSNumber+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E5F71B176AF600182E53 /* NSObject+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A4150F832A00216827 /* NSObject+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E5F81B176AF600182E53 /* NSRelationshipDescription+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A6150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E5F91B176AF600182E53 /* NSString+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A8150F832A00216827 /* NSString+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E5FA1B176AF600182E53 /* NSManagedObject+MagicalAggregation.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72AB150F832A00216827 /* NSManagedObject+MagicalAggregation.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E5FB1B176AF600182E53 /* NSManagedObject+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72AD150F832A00216827 /* NSManagedObject+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E5FC1B176AF600182E53 /* NSManagedObject+MagicalFinders.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72AF150F832A00216827 /* NSManagedObject+MagicalFinders.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E5FD1B176AF600182E53 /* NSManagedObject+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B1150F832A00216827 /* NSManagedObject+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E5FE1B176AF600182E53 /* NSManagedObject+MagicalRequests.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B3150F832A00216827 /* NSManagedObject+MagicalRequests.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E5FF1B176AF600182E53 /* NSManagedObjectContext+MagicalChainSave.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BB566891A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E6001B176AF600182E53 /* NSManagedObjectContext+MagicalObserving.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B6150F832A00216827 /* NSManagedObjectContext+MagicalObserving.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E6011B176AF600182E53 /* NSManagedObjectContext+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B8150F832A00216827 /* NSManagedObjectContext+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E6021B176AF600182E53 /* NSManagedObjectContext+MagicalSaves.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72BA150F832A00216827 /* NSManagedObjectContext+MagicalSaves.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E6031B176AF600182E53 /* NSManagedObjectContext+MagicalThreading.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72BC150F832A00216827 /* NSManagedObjectContext+MagicalThreading.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E6041B176AF600182E53 /* NSManagedObjectModel+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72BE150F832A00216827 /* NSManagedObjectModel+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E6051B176AF600182E53 /* NSPersistentStore+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C0150F832A00216827 /* NSPersistentStore+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E6061B176AF600182E53 /* NSPersistentStoreCoordinator+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C2150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E6071B176AF600182E53 /* MagicalRecord+Actions.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C5150F832A00216827 /* MagicalRecord+Actions.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E6081B176AF600182E53 /* MagicalRecord+ErrorHandling.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C7150F832A00216827 /* MagicalRecord+ErrorHandling.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E6091B176AF600182E53 /* MagicalRecord+iCloud.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C9150F832A00216827 /* MagicalRecord+iCloud.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E60A1B176AF600182E53 /* MagicalRecord+Options.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72CB150F832A00216827 /* MagicalRecord+Options.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E60B1B176AF600182E53 /* MagicalRecord+Setup.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72CD150F832A00216827 /* MagicalRecord+Setup.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E60C1B176AF600182E53 /* MagicalRecord+ShorthandMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 90B05B891B02452A00354056 /* MagicalRecord+ShorthandMethods.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E60D1B176AF600182E53 /* MagicalRecordDeprecationMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 902CE11E18F6133E0024F47C /* MagicalRecordDeprecationMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E60E1B176AF700182E53 /* MagicalRecordInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72D1150F832A00216827 /* MagicalRecordInternal.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E60F1B176AF700182E53 /* MagicalRecordLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 90FEC08B18F42DEA002FFC2F /* MagicalRecordLogging.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t1352E6101B176AF700182E53 /* MagicalRecordShorthandMethodAliases.h in Headers */ = {isa = PBXBuildFile; fileRef = 90B05B851B02450900354056 /* MagicalRecordShorthandMethodAliases.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t378F22A022BD11680052968D /* NSManagedObject+MagicalRequestTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A07DF19A1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m */; };\n\t\t378F22A122BD11690052968D /* NSManagedObject+MagicalRequestTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A07DF19A1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m */; };\n\t\t3790043A22BB49140087D3FC /* TestModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 9099490817C2F3D400BC2B5C /* TestModel.xcdatamodeld */; };\n\t\t3790043B22BB4AB40087D3FC /* SampleJSONDataForImport.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4917498985008D9D13 /* SampleJSONDataForImport.json */; };\n\t\t3790043C22BB4AB80087D3FC /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4A17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json */; };\n\t\t3790043D22BB4ABC0087D3FC /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4B17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json */; };\n\t\t3790043E22BB4ABF0087D3FC /* SingleEntityRelatedToMappedEntityUsingDefaults.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4C17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingDefaults.json */; };\n\t\t3790043F22BB4AC20087D3FC /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4D17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json */; };\n\t\t3790044022BB4AC50087D3FC /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4E17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json */; };\n\t\t3790044122BB4AC80087D3FC /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4F17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json */; };\n\t\t3790044222BB4ACB0087D3FC /* SingleEntityWithNoRelationships.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5017498985008D9D13 /* SingleEntityWithNoRelationships.json */; };\n\t\t3790044322BB4ACF0087D3FC /* MultipleEntitiesWithNoPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = 581ECBF6187F660B00084FEE /* MultipleEntitiesWithNoPrimaryKey.json */; };\n\t\t3790044422BB4AD20087D3FC /* SingleRelatedEntity.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5217498985008D9D13 /* SingleRelatedEntity.json */; };\n\t\t3790045B22BB51DD0087D3FC /* libMagicalRecord.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3790044922BB51880087D3FC /* libMagicalRecord.a */; };\n\t\t3790047C22BB6EF20087D3FC /* MagicalRecord+ActionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 902CE12B18F61A2F0024F47C /* MagicalRecord+ActionsTests.m */; };\n\t\t3790047D22BB6EF20087D3FC /* MagicalRecord+ShorthandTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9007B1491C5A416500C64F94 /* MagicalRecord+ShorthandTests.m */; };\n\t\t3790047E22BB6EF20087D3FC /* MagicalRecord+StackTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976817498275008D9D13 /* MagicalRecord+StackTests.m */; };\n\t\t3790047F22BB6EF20087D3FC /* NSManagedObject+MagicalRecordTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AA771718F79A3300D49377 /* NSManagedObject+MagicalRecordTests.m */; };\n\t\t3790048022BB6EF20087D3FC /* NSManagedObjectContext+ChainSaveTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB566931A2C47B3004174B3 /* NSManagedObjectContext+ChainSaveTests.m */; };\n\t\t3790048122BB6EF20087D3FC /* NSManagedObjectContext+MagicalSavesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 902CE13818F61E410024F47C /* NSManagedObjectContext+MagicalSavesTests.m */; };\n\t\t3790048222BB6EF20087D3FC /* NSManagedObjectContextHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976A17498275008D9D13 /* NSManagedObjectContextHelperTests.m */; };\n\t\t3790048322BB6EF20087D3FC /* NSManagedObjectHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976C17498275008D9D13 /* NSManagedObjectHelperTests.m */; };\n\t\t3790048422BB6EF20087D3FC /* NSPersistentStoreCoordinatorHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF977217498275008D9D13 /* NSPersistentStoreCoordinatorHelperTests.m */; };\n\t\t3790048522BB6EF20087D3FC /* NSPersistentStoreHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF977017498275008D9D13 /* NSPersistentStoreHelperTests.m */; };\n\t\t3790048622BB6EF20087D3FC /* MagicalDataImportTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978E174982AD008D9D13 /* MagicalDataImportTestCase.m */; };\n\t\t3790048722BB6EF20087D3FC /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 581ECBEB187F63FF00084FEE /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m */; };\n\t\t3790048822BB6EF20087D3FC /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9786174982AD008D9D13 /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m */; };\n\t\t3790048922BB6EF20087D3FC /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9787174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m */; };\n\t\t3790048A22BB6EF20087D3FC /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9788174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m */; };\n\t\t3790048B22BB6EF20087D3FC /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9789174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m */; };\n\t\t3790048C22BB6EF20087D3FC /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978A174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m */; };\n\t\t3790048D22BB6EF20087D3FC /* ImportSingleEntityWithNoRelationshipsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978B174982AD008D9D13 /* ImportSingleEntityWithNoRelationshipsTests.m */; };\n\t\t3790048E22BB6EF20087D3FC /* ImportSingleRelatedEntityTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BB1C3E1864F662001BBFBB /* ImportSingleRelatedEntityTests.m */; };\n\t\t3790048F22BB6EF20087D3FC /* FixtureHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9B6C17498B5C008D9D13 /* FixtureHelpers.m */; };\n\t\t3790049022BB6EF20087D3FC /* _AbstractRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099490E17C2F42100BC2B5C /* _AbstractRelatedEntity.m */; };\n\t\t3790049122BB6EF20087D3FC /* _ConcreteRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491017C2F42100BC2B5C /* _ConcreteRelatedEntity.m */; };\n\t\t3790049222BB6EF20087D3FC /* _DifferentClassNameMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491217C2F42100BC2B5C /* _DifferentClassNameMapping.m */; };\n\t\t3790049322BB6EF20087D3FC /* _MappedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491417C2F42100BC2B5C /* _MappedEntity.m */; };\n\t\t3790049422BB6EF20087D3FC /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491617C2F42100BC2B5C /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */; };\n\t\t3790049522BB6EF20087D3FC /* _SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491817C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingDefaults.m */; };\n\t\t3790049622BB6EF20087D3FC /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491A17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */; };\n\t\t3790049722BB6EF20087D3FC /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491C17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */; };\n\t\t3790049822BB6EF20087D3FC /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491E17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */; };\n\t\t3790049922BB6EF20087D3FC /* _SingleEntityWithNoRelationships.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492017C2F42100BC2B5C /* _SingleEntityWithNoRelationships.m */; };\n\t\t3790049A22BB6EF20087D3FC /* _SingleRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492217C2F42100BC2B5C /* _SingleRelatedEntity.m */; };\n\t\t3790049B22BB6EF20087D3FC /* AbstractRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492417C2F42100BC2B5C /* AbstractRelatedEntity.m */; };\n\t\t3790049C22BB6EF20087D3FC /* ConcreteRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492617C2F42100BC2B5C /* ConcreteRelatedEntity.m */; };\n\t\t3790049D22BB6EF20087D3FC /* DifferentClassNameMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492817C2F42100BC2B5C /* DifferentClassNameMapping.m */; };\n\t\t3790049E22BB6EF20087D3FC /* EntityWithoutEntityNameMethod.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AA772418F79CCC00D49377 /* EntityWithoutEntityNameMethod.m */; };\n\t\t3790049F22BB6EF20087D3FC /* MappedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492A17C2F42100BC2B5C /* MappedEntity.m */; };\n\t\t379004A022BB6EF20087D3FC /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492C17C2F42100BC2B5C /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */; };\n\t\t379004A122BB6EF20087D3FC /* SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492E17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingDefaults.m */; };\n\t\t379004A222BB6EF20087D3FC /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493017C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */; };\n\t\t379004A322BB6EF20087D3FC /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493217C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */; };\n\t\t379004A422BB6EF20087D3FC /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493417C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */; };\n\t\t379004A522BB6EF20087D3FC /* SingleEntityWithNoRelationships.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493617C2F42100BC2B5C /* SingleEntityWithNoRelationships.m */; };\n\t\t379004A622BB6EF20087D3FC /* SingleRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493817C2F42100BC2B5C /* SingleRelatedEntity.m */; };\n\t\t379004A722BB6EF20087D3FC /* MagicalRecordTestHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 9021D9E21AFB34D6001C80BA /* MagicalRecordTestHelpers.m */; };\n\t\t379004A822BB6F040087D3FC /* SampleJSONDataForImport.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4917498985008D9D13 /* SampleJSONDataForImport.json */; };\n\t\t379004A922BB6F040087D3FC /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4A17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json */; };\n\t\t379004AA22BB6F040087D3FC /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4B17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json */; };\n\t\t379004AB22BB6F040087D3FC /* SingleEntityRelatedToMappedEntityUsingDefaults.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4C17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingDefaults.json */; };\n\t\t379004AC22BB6F040087D3FC /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4D17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json */; };\n\t\t379004AD22BB6F040087D3FC /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4E17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json */; };\n\t\t379004AE22BB6F040087D3FC /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4F17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json */; };\n\t\t379004AF22BB6F040087D3FC /* SingleEntityWithNoRelationships.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5017498985008D9D13 /* SingleEntityWithNoRelationships.json */; };\n\t\t379004B022BB6F040087D3FC /* MultipleEntitiesWithNoPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = 581ECBF6187F660B00084FEE /* MultipleEntitiesWithNoPrimaryKey.json */; };\n\t\t379004B122BB6F040087D3FC /* SingleRelatedEntity.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5217498985008D9D13 /* SingleRelatedEntity.json */; };\n\t\t379004B222BB6F100087D3FC /* TestModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 9099490817C2F3D400BC2B5C /* TestModel.xcdatamodeld */; };\n\t\t379004B322BB6F9B0087D3FC /* MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72D4150F832A00216827 /* MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004B522BB6FE40087D3FC /* MagicalImportFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD729C150F832A00216827 /* MagicalImportFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004B622BB6FE40087D3FC /* NSAttributeDescription+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD729E150F832A00216827 /* NSAttributeDescription+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004B722BB6FE40087D3FC /* NSEntityDescription+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A0150F832A00216827 /* NSEntityDescription+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004B822BB6FE40087D3FC /* NSNumber+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A2150F832A00216827 /* NSNumber+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004B922BB6FE40087D3FC /* NSObject+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A4150F832A00216827 /* NSObject+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004BA22BB6FE40087D3FC /* NSRelationshipDescription+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A6150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004BB22BB6FE40087D3FC /* NSString+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A8150F832A00216827 /* NSString+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004C322BB6FF80087D3FC /* NSManagedObject+MagicalAggregation.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72AB150F832A00216827 /* NSManagedObject+MagicalAggregation.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004C422BB6FF80087D3FC /* NSManagedObject+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72AD150F832A00216827 /* NSManagedObject+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004C522BB6FF80087D3FC /* NSManagedObject+MagicalFinders.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72AF150F832A00216827 /* NSManagedObject+MagicalFinders.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004C622BB6FF80087D3FC /* NSManagedObject+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B1150F832A00216827 /* NSManagedObject+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004C722BB6FF80087D3FC /* NSManagedObject+MagicalRequests.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B3150F832A00216827 /* NSManagedObject+MagicalRequests.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004CD22BB70070087D3FC /* NSManagedObjectContext+MagicalChainSave.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BB566891A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004CE22BB70070087D3FC /* NSManagedObjectContext+MagicalObserving.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B6150F832A00216827 /* NSManagedObjectContext+MagicalObserving.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004CF22BB70070087D3FC /* NSManagedObjectContext+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B8150F832A00216827 /* NSManagedObjectContext+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004D022BB70070087D3FC /* NSManagedObjectContext+MagicalSaves.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72BA150F832A00216827 /* NSManagedObjectContext+MagicalSaves.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004D122BB70070087D3FC /* NSManagedObjectContext+MagicalThreading.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72BC150F832A00216827 /* NSManagedObjectContext+MagicalThreading.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004D722BB70130087D3FC /* NSManagedObjectModel+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72BE150F832A00216827 /* NSManagedObjectModel+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004D822BB70130087D3FC /* NSPersistentStore+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C0150F832A00216827 /* NSPersistentStore+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004D922BB70130087D3FC /* NSPersistentStoreCoordinator+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C2150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004DD22BB70290087D3FC /* MagicalRecord+Actions.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C5150F832A00216827 /* MagicalRecord+Actions.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004DE22BB70290087D3FC /* MagicalRecord+ErrorHandling.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C7150F832A00216827 /* MagicalRecord+ErrorHandling.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004DF22BB70290087D3FC /* MagicalRecord+iCloud.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C9150F832A00216827 /* MagicalRecord+iCloud.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004E022BB70290087D3FC /* MagicalRecord+Options.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72CB150F832A00216827 /* MagicalRecord+Options.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004E122BB70290087D3FC /* MagicalRecord+Setup.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72CD150F832A00216827 /* MagicalRecord+Setup.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004E222BB70290087D3FC /* MagicalRecordDeprecationMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 902CE11E18F6133E0024F47C /* MagicalRecordDeprecationMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004E322BB70290087D3FC /* MagicalRecordInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72D1150F832A00216827 /* MagicalRecordInternal.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004E422BB70290087D3FC /* MagicalRecordLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 90FEC08B18F42DEA002FFC2F /* MagicalRecordLogging.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004E522BB70290087D3FC /* MagicalRecordShorthandMethodAliases.h in Headers */ = {isa = PBXBuildFile; fileRef = 90B05B851B02450900354056 /* MagicalRecordShorthandMethodAliases.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004E622BB70290087D3FC /* MagicalRecordXcode7CompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 90F829B61B3306DE00CE306F /* MagicalRecordXcode7CompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t379004F122BB70330087D3FC /* MagicalRecord+ShorthandMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 90B05B891B02452A00354056 /* MagicalRecord+ShorthandMethods.h */; };\n\t\t3790050E22BB70610087D3FC /* MagicalImportFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD729D150F832A00216827 /* MagicalImportFunctions.m */; };\n\t\t3790050F22BB70610087D3FC /* NSAttributeDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD729F150F832A00216827 /* NSAttributeDescription+MagicalDataImport.m */; };\n\t\t3790051022BB70610087D3FC /* NSEntityDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A1150F832A00216827 /* NSEntityDescription+MagicalDataImport.m */; };\n\t\t3790051122BB70610087D3FC /* NSNumber+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A3150F832A00216827 /* NSNumber+MagicalDataImport.m */; };\n\t\t3790051222BB70610087D3FC /* NSObject+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A5150F832A00216827 /* NSObject+MagicalDataImport.m */; };\n\t\t3790051322BB70610087D3FC /* NSRelationshipDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A7150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.m */; };\n\t\t3790051422BB70610087D3FC /* NSString+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A9150F832A00216827 /* NSString+MagicalDataImport.m */; };\n\t\t3790051522BB70610087D3FC /* NSManagedObject+MagicalAggregation.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72AC150F832A00216827 /* NSManagedObject+MagicalAggregation.m */; };\n\t\t3790051622BB70610087D3FC /* NSManagedObject+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72AE150F832A00216827 /* NSManagedObject+MagicalDataImport.m */; };\n\t\t3790051722BB70610087D3FC /* NSManagedObject+MagicalFinders.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B0150F832A00216827 /* NSManagedObject+MagicalFinders.m */; };\n\t\t3790051822BB70610087D3FC /* NSManagedObject+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B2150F832A00216827 /* NSManagedObject+MagicalRecord.m */; };\n\t\t3790051922BB70610087D3FC /* NSManagedObject+MagicalRequests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B4150F832A00216827 /* NSManagedObject+MagicalRequests.m */; };\n\t\t3790051A22BB70610087D3FC /* NSManagedObjectContext+MagicalChainSave.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB5668A1A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.m */; };\n\t\t3790051B22BB70610087D3FC /* NSManagedObjectContext+MagicalObserving.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B7150F832A00216827 /* NSManagedObjectContext+MagicalObserving.m */; };\n\t\t3790051C22BB70610087D3FC /* NSManagedObjectContext+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B9150F832A00216827 /* NSManagedObjectContext+MagicalRecord.m */; };\n\t\t3790051D22BB70610087D3FC /* NSManagedObjectContext+MagicalSaves.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BB150F832A00216827 /* NSManagedObjectContext+MagicalSaves.m */; };\n\t\t3790051E22BB70610087D3FC /* NSManagedObjectContext+MagicalThreading.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BD150F832A00216827 /* NSManagedObjectContext+MagicalThreading.m */; };\n\t\t3790051F22BB70610087D3FC /* NSManagedObjectModel+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BF150F832A00216827 /* NSManagedObjectModel+MagicalRecord.m */; };\n\t\t3790052022BB70610087D3FC /* NSPersistentStore+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C1150F832A00216827 /* NSPersistentStore+MagicalRecord.m */; };\n\t\t3790052122BB70610087D3FC /* NSPersistentStoreCoordinator+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C3150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.m */; };\n\t\t3790052222BB70610087D3FC /* MagicalRecord+Actions.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C6150F832A00216827 /* MagicalRecord+Actions.m */; };\n\t\t3790052322BB70610087D3FC /* MagicalRecord+ErrorHandling.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C8150F832A00216827 /* MagicalRecord+ErrorHandling.m */; };\n\t\t3790052422BB70610087D3FC /* MagicalRecord+iCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CA150F832A00216827 /* MagicalRecord+iCloud.m */; };\n\t\t3790052622BB70610087D3FC /* MagicalRecord+Setup.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CE150F832A00216827 /* MagicalRecord+Setup.m */; };\n\t\t3790052722BB70610087D3FC /* MagicalRecord+ShorthandMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B05B8A1B02452A00354056 /* MagicalRecord+ShorthandMethods.m */; };\n\t\t3790052822BB70610087D3FC /* MagicalRecordInternal.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72D2150F832A00216827 /* MagicalRecordInternal.m */; };\n\t\t3790054422BB71BD0087D3FC /* MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72D4150F832A00216827 /* MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790054522BB71D00087D3FC /* MagicalImportFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD729C150F832A00216827 /* MagicalImportFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790054622BB71D00087D3FC /* NSAttributeDescription+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD729E150F832A00216827 /* NSAttributeDescription+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790054722BB71D00087D3FC /* NSEntityDescription+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A0150F832A00216827 /* NSEntityDescription+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790054822BB71D00087D3FC /* NSNumber+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A2150F832A00216827 /* NSNumber+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790054922BB71D00087D3FC /* NSObject+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A4150F832A00216827 /* NSObject+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790054A22BB71D00087D3FC /* NSRelationshipDescription+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A6150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790054B22BB71D00087D3FC /* NSString+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A8150F832A00216827 /* NSString+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790054C22BB71D00087D3FC /* NSManagedObject+MagicalAggregation.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72AB150F832A00216827 /* NSManagedObject+MagicalAggregation.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790054D22BB71D00087D3FC /* NSManagedObject+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72AD150F832A00216827 /* NSManagedObject+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790054E22BB71D00087D3FC /* NSManagedObject+MagicalFinders.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72AF150F832A00216827 /* NSManagedObject+MagicalFinders.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790054F22BB71D00087D3FC /* NSManagedObject+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B1150F832A00216827 /* NSManagedObject+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055022BB71D00087D3FC /* NSManagedObject+MagicalRequests.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B3150F832A00216827 /* NSManagedObject+MagicalRequests.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055122BB71D00087D3FC /* NSManagedObjectContext+MagicalChainSave.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BB566891A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055222BB71D00087D3FC /* NSManagedObjectContext+MagicalObserving.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B6150F832A00216827 /* NSManagedObjectContext+MagicalObserving.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055322BB71D00087D3FC /* NSManagedObjectContext+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B8150F832A00216827 /* NSManagedObjectContext+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055422BB71D00087D3FC /* NSManagedObjectContext+MagicalSaves.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72BA150F832A00216827 /* NSManagedObjectContext+MagicalSaves.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055522BB71D00087D3FC /* NSManagedObjectContext+MagicalThreading.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72BC150F832A00216827 /* NSManagedObjectContext+MagicalThreading.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055622BB71D00087D3FC /* NSManagedObjectModel+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72BE150F832A00216827 /* NSManagedObjectModel+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055722BB71D00087D3FC /* NSPersistentStore+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C0150F832A00216827 /* NSPersistentStore+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055822BB71D00087D3FC /* NSPersistentStoreCoordinator+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C2150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055922BB71D00087D3FC /* MagicalRecord+Actions.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C5150F832A00216827 /* MagicalRecord+Actions.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055A22BB71D00087D3FC /* MagicalRecord+ErrorHandling.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C7150F832A00216827 /* MagicalRecord+ErrorHandling.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055B22BB71D00087D3FC /* MagicalRecord+iCloud.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C9150F832A00216827 /* MagicalRecord+iCloud.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055C22BB71D00087D3FC /* MagicalRecord+Options.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72CB150F832A00216827 /* MagicalRecord+Options.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055D22BB71D00087D3FC /* MagicalRecord+Setup.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72CD150F832A00216827 /* MagicalRecord+Setup.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055E22BB71D00087D3FC /* MagicalRecord+ShorthandMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 90B05B891B02452A00354056 /* MagicalRecord+ShorthandMethods.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790055F22BB71D00087D3FC /* MagicalRecordDeprecationMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 902CE11E18F6133E0024F47C /* MagicalRecordDeprecationMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790056022BB71D00087D3FC /* MagicalRecordInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72D1150F832A00216827 /* MagicalRecordInternal.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790056122BB71D00087D3FC /* MagicalRecordLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 90FEC08B18F42DEA002FFC2F /* MagicalRecordLogging.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790056222BB71D00087D3FC /* MagicalRecordShorthandMethodAliases.h in Headers */ = {isa = PBXBuildFile; fileRef = 90B05B851B02450900354056 /* MagicalRecordShorthandMethodAliases.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790056322BB71D00087D3FC /* MagicalRecordXcode7CompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 90F829B61B3306DE00CE306F /* MagicalRecordXcode7CompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3790058422BB76280087D3FC /* MagicalRecord+Options.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CC150F832A00216827 /* MagicalRecord+Options.m */; };\n\t\t3790058522BB763A0087D3FC /* MagicalRecordTestBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BB1C4518651539001BBFBB /* MagicalRecordTestBase.m */; };\n\t\t37CA2610229FEB7000EAB9F6 /* MagicalRecord.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37CA2607229FEB7000EAB9F6 /* MagicalRecord.framework */; };\n\t\t37CA2626229FEC1D00EAB9F6 /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9786174982AD008D9D13 /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m */; };\n\t\t37CA2627229FEC4200EAB9F6 /* MagicalRecord+ActionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 902CE12B18F61A2F0024F47C /* MagicalRecord+ActionsTests.m */; };\n\t\t37CA2628229FEC4200EAB9F6 /* MagicalRecord+ShorthandTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9007B1491C5A416500C64F94 /* MagicalRecord+ShorthandTests.m */; };\n\t\t37CA2629229FEC4200EAB9F6 /* MagicalRecord+StackTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976817498275008D9D13 /* MagicalRecord+StackTests.m */; };\n\t\t37CA262A229FEC4200EAB9F6 /* NSManagedObject+MagicalRecordTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AA771718F79A3300D49377 /* NSManagedObject+MagicalRecordTests.m */; };\n\t\t37CA262B229FEC4200EAB9F6 /* NSManagedObjectContext+ChainSaveTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB566931A2C47B3004174B3 /* NSManagedObjectContext+ChainSaveTests.m */; };\n\t\t37CA262C229FEC4200EAB9F6 /* NSManagedObjectContext+MagicalSavesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 902CE13818F61E410024F47C /* NSManagedObjectContext+MagicalSavesTests.m */; };\n\t\t37CA262D229FEC4200EAB9F6 /* NSManagedObjectContextHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976A17498275008D9D13 /* NSManagedObjectContextHelperTests.m */; };\n\t\t37CA262E229FEC4200EAB9F6 /* NSManagedObjectHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976C17498275008D9D13 /* NSManagedObjectHelperTests.m */; };\n\t\t37CA262F229FEC4200EAB9F6 /* NSPersistentStoreCoordinatorHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF977217498275008D9D13 /* NSPersistentStoreCoordinatorHelperTests.m */; };\n\t\t37CA2630229FEC4200EAB9F6 /* NSPersistentStoreHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF977017498275008D9D13 /* NSPersistentStoreHelperTests.m */; };\n\t\t37CA2631229FEC4200EAB9F6 /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 581ECBEB187F63FF00084FEE /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m */; };\n\t\t37CA2632229FEC4200EAB9F6 /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9787174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m */; };\n\t\t37CA2633229FEC4200EAB9F6 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9788174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m */; };\n\t\t37CA2634229FEC4200EAB9F6 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9789174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m */; };\n\t\t37CA2635229FEC4200EAB9F6 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978A174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m */; };\n\t\t37CA2636229FEC4200EAB9F6 /* ImportSingleEntityWithNoRelationshipsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978B174982AD008D9D13 /* ImportSingleEntityWithNoRelationshipsTests.m */; };\n\t\t37CA2637229FEC4200EAB9F6 /* ImportSingleRelatedEntityTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BB1C3E1864F662001BBFBB /* ImportSingleRelatedEntityTests.m */; };\n\t\t37CA2638229FEEC200EAB9F6 /* MagicalImportFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD729D150F832A00216827 /* MagicalImportFunctions.m */; };\n\t\t37CA2639229FEEC200EAB9F6 /* NSAttributeDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD729F150F832A00216827 /* NSAttributeDescription+MagicalDataImport.m */; };\n\t\t37CA263A229FEEC200EAB9F6 /* NSEntityDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A1150F832A00216827 /* NSEntityDescription+MagicalDataImport.m */; };\n\t\t37CA263B229FEEC200EAB9F6 /* NSNumber+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A3150F832A00216827 /* NSNumber+MagicalDataImport.m */; };\n\t\t37CA263C229FEEC200EAB9F6 /* NSObject+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A5150F832A00216827 /* NSObject+MagicalDataImport.m */; };\n\t\t37CA263D229FEEC200EAB9F6 /* NSRelationshipDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A7150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.m */; };\n\t\t37CA263E229FEEC200EAB9F6 /* NSString+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A9150F832A00216827 /* NSString+MagicalDataImport.m */; };\n\t\t37CA263F229FEEC200EAB9F6 /* NSManagedObject+MagicalAggregation.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72AC150F832A00216827 /* NSManagedObject+MagicalAggregation.m */; };\n\t\t37CA2640229FEEC200EAB9F6 /* NSManagedObject+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72AE150F832A00216827 /* NSManagedObject+MagicalDataImport.m */; };\n\t\t37CA2641229FEEC200EAB9F6 /* NSManagedObject+MagicalFinders.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B0150F832A00216827 /* NSManagedObject+MagicalFinders.m */; };\n\t\t37CA2642229FEEC200EAB9F6 /* NSManagedObject+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B2150F832A00216827 /* NSManagedObject+MagicalRecord.m */; };\n\t\t37CA2643229FEEC200EAB9F6 /* NSManagedObject+MagicalRequests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B4150F832A00216827 /* NSManagedObject+MagicalRequests.m */; };\n\t\t37CA2644229FEEC200EAB9F6 /* NSManagedObjectContext+MagicalChainSave.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB5668A1A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.m */; };\n\t\t37CA2645229FEEC200EAB9F6 /* NSManagedObjectContext+MagicalObserving.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B7150F832A00216827 /* NSManagedObjectContext+MagicalObserving.m */; };\n\t\t37CA2646229FEEC200EAB9F6 /* NSManagedObjectContext+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B9150F832A00216827 /* NSManagedObjectContext+MagicalRecord.m */; };\n\t\t37CA2647229FEEC200EAB9F6 /* NSManagedObjectContext+MagicalSaves.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BB150F832A00216827 /* NSManagedObjectContext+MagicalSaves.m */; };\n\t\t37CA2648229FEEC200EAB9F6 /* NSManagedObjectContext+MagicalThreading.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BD150F832A00216827 /* NSManagedObjectContext+MagicalThreading.m */; };\n\t\t37CA2649229FEEC200EAB9F6 /* NSManagedObjectModel+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BF150F832A00216827 /* NSManagedObjectModel+MagicalRecord.m */; };\n\t\t37CA264A229FEEC200EAB9F6 /* NSPersistentStore+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C1150F832A00216827 /* NSPersistentStore+MagicalRecord.m */; };\n\t\t37CA264B229FEEC200EAB9F6 /* NSPersistentStoreCoordinator+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C3150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.m */; };\n\t\t37CA264C229FEEC200EAB9F6 /* MagicalRecord+Actions.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C6150F832A00216827 /* MagicalRecord+Actions.m */; };\n\t\t37CA264D229FEEC200EAB9F6 /* MagicalRecord+ErrorHandling.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C8150F832A00216827 /* MagicalRecord+ErrorHandling.m */; };\n\t\t37CA264E229FEEC200EAB9F6 /* MagicalRecord+iCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CA150F832A00216827 /* MagicalRecord+iCloud.m */; };\n\t\t37CA264F229FEEC200EAB9F6 /* MagicalRecord+Options.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CC150F832A00216827 /* MagicalRecord+Options.m */; };\n\t\t37CA2650229FEEC200EAB9F6 /* MagicalRecord+Setup.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CE150F832A00216827 /* MagicalRecord+Setup.m */; };\n\t\t37CA2651229FEEC200EAB9F6 /* MagicalRecord+ShorthandMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B05B8A1B02452A00354056 /* MagicalRecord+ShorthandMethods.m */; };\n\t\t37CA2652229FEEC200EAB9F6 /* MagicalRecordInternal.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72D2150F832A00216827 /* MagicalRecordInternal.m */; };\n\t\t37CA2653229FEED400EAB9F6 /* MagicalRecordTestBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BB1C4518651539001BBFBB /* MagicalRecordTestBase.m */; };\n\t\t37CA2654229FEED900EAB9F6 /* MagicalDataImportTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978E174982AD008D9D13 /* MagicalDataImportTestCase.m */; };\n\t\t37CA2655229FEEE300EAB9F6 /* FixtureHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9B6C17498B5C008D9D13 /* FixtureHelpers.m */; };\n\t\t37CA2656229FEEED00EAB9F6 /* _AbstractRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099490E17C2F42100BC2B5C /* _AbstractRelatedEntity.m */; };\n\t\t37CA2657229FEEED00EAB9F6 /* _ConcreteRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491017C2F42100BC2B5C /* _ConcreteRelatedEntity.m */; };\n\t\t37CA2658229FEEED00EAB9F6 /* _DifferentClassNameMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491217C2F42100BC2B5C /* _DifferentClassNameMapping.m */; };\n\t\t37CA2659229FEEED00EAB9F6 /* _MappedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491417C2F42100BC2B5C /* _MappedEntity.m */; };\n\t\t37CA265A229FEEED00EAB9F6 /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491617C2F42100BC2B5C /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */; };\n\t\t37CA265B229FEEED00EAB9F6 /* _SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491817C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingDefaults.m */; };\n\t\t37CA265C229FEEED00EAB9F6 /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491A17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */; };\n\t\t37CA265D229FEEED00EAB9F6 /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491C17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */; };\n\t\t37CA265E229FEEED00EAB9F6 /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491E17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */; };\n\t\t37CA265F229FEEED00EAB9F6 /* _SingleEntityWithNoRelationships.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492017C2F42100BC2B5C /* _SingleEntityWithNoRelationships.m */; };\n\t\t37CA2660229FEEED00EAB9F6 /* _SingleRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492217C2F42100BC2B5C /* _SingleRelatedEntity.m */; };\n\t\t37CA2661229FEEED00EAB9F6 /* AbstractRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492417C2F42100BC2B5C /* AbstractRelatedEntity.m */; };\n\t\t37CA2662229FEEED00EAB9F6 /* ConcreteRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492617C2F42100BC2B5C /* ConcreteRelatedEntity.m */; };\n\t\t37CA2663229FEEED00EAB9F6 /* DifferentClassNameMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492817C2F42100BC2B5C /* DifferentClassNameMapping.m */; };\n\t\t37CA2664229FEEED00EAB9F6 /* EntityWithoutEntityNameMethod.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AA772418F79CCC00D49377 /* EntityWithoutEntityNameMethod.m */; };\n\t\t37CA2665229FEEED00EAB9F6 /* MappedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492A17C2F42100BC2B5C /* MappedEntity.m */; };\n\t\t37CA2666229FEEED00EAB9F6 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492C17C2F42100BC2B5C /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */; };\n\t\t37CA2667229FEEED00EAB9F6 /* SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492E17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingDefaults.m */; };\n\t\t37CA2668229FEEED00EAB9F6 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493017C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */; };\n\t\t37CA2669229FEEED00EAB9F6 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493217C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */; };\n\t\t37CA266A229FEEED00EAB9F6 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493417C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */; };\n\t\t37CA266B229FEEED00EAB9F6 /* SingleEntityWithNoRelationships.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493617C2F42100BC2B5C /* SingleEntityWithNoRelationships.m */; };\n\t\t37CA266C229FEEED00EAB9F6 /* SingleRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493817C2F42100BC2B5C /* SingleRelatedEntity.m */; };\n\t\t37CA266D229FEEF200EAB9F6 /* MagicalRecordTestHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 9021D9E21AFB34D6001C80BA /* MagicalRecordTestHelpers.m */; };\n\t\t581ECBF7187F660B00084FEE /* MultipleEntitiesWithNoPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = 581ECBF6187F660B00084FEE /* MultipleEntitiesWithNoPrimaryKey.json */; };\n\t\t581ECBF8187F660B00084FEE /* MultipleEntitiesWithNoPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = 581ECBF6187F660B00084FEE /* MultipleEntitiesWithNoPrimaryKey.json */; };\n\t\t581ECBF9187F663100084FEE /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 581ECBEB187F63FF00084FEE /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m */; };\n\t\t581ECBFA187F663200084FEE /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 581ECBEB187F63FF00084FEE /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m */; };\n\t\t9004F4DE1A94C76A00A61312 /* libMagicalRecord.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C7CF97BB1749843F008D9D13 /* libMagicalRecord.dylib */; };\n\t\t9004F4DF1A94C76E00A61312 /* libMagicalRecord.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C7CF97AB17498414008D9D13 /* libMagicalRecord.a */; };\n\t\t9004F4E21A94CBCF00A61312 /* DifferentClassNameMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492817C2F42100BC2B5C /* DifferentClassNameMapping.m */; };\n\t\t9004F4E31A94CBCF00A61312 /* _AbstractRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099490E17C2F42100BC2B5C /* _AbstractRelatedEntity.m */; };\n\t\t9004F4E41A94CBCF00A61312 /* SingleRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493817C2F42100BC2B5C /* SingleRelatedEntity.m */; };\n\t\t9004F4E51A94CBCF00A61312 /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491E17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */; };\n\t\t9004F4E61A94CBCF00A61312 /* NSManagedObjectContext+ChainSaveTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB566931A2C47B3004174B3 /* NSManagedObjectContext+ChainSaveTests.m */; };\n\t\t9004F4E71A94CBCF00A61312 /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491617C2F42100BC2B5C /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */; };\n\t\t9004F4E81A94CBCF00A61312 /* NSPersistentStoreHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF977017498275008D9D13 /* NSPersistentStoreHelperTests.m */; };\n\t\t9004F4E91A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493017C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */; };\n\t\t9004F4EA1A94CBCF00A61312 /* _SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491817C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingDefaults.m */; };\n\t\t9004F4EB1A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493217C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */; };\n\t\t9004F4EC1A94CBCF00A61312 /* NSManagedObjectHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976C17498275008D9D13 /* NSManagedObjectHelperTests.m */; };\n\t\t9004F4ED1A94CBCF00A61312 /* ConcreteRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492617C2F42100BC2B5C /* ConcreteRelatedEntity.m */; };\n\t\t9004F4EE1A94CBCF00A61312 /* MagicalDataImportTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978E174982AD008D9D13 /* MagicalDataImportTestCase.m */; };\n\t\t9004F4EF1A94CBCF00A61312 /* AbstractRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492417C2F42100BC2B5C /* AbstractRelatedEntity.m */; };\n\t\t9004F4F01A94CBCF00A61312 /* MappedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492A17C2F42100BC2B5C /* MappedEntity.m */; };\n\t\t9004F4F11A94CBCF00A61312 /* MagicalRecordTestBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BB1C4518651539001BBFBB /* MagicalRecordTestBase.m */; };\n\t\t9004F4F21A94CBCF00A61312 /* _SingleRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492217C2F42100BC2B5C /* _SingleRelatedEntity.m */; };\n\t\t9004F4F31A94CBCF00A61312 /* ImportSingleEntityWithNoRelationshipsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978B174982AD008D9D13 /* ImportSingleEntityWithNoRelationshipsTests.m */; };\n\t\t9004F4F41A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493417C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */; };\n\t\t9004F4F51A94CBCF00A61312 /* EntityWithoutEntityNameMethod.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AA772418F79CCC00D49377 /* EntityWithoutEntityNameMethod.m */; };\n\t\t9004F4F61A94CBCF00A61312 /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9787174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m */; };\n\t\t9004F4F71A94CBCF00A61312 /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 581ECBEB187F63FF00084FEE /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m */; };\n\t\t9004F4F81A94CBCF00A61312 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9789174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m */; };\n\t\t9004F4F91A94CBCF00A61312 /* NSPersistentStoreCoordinatorHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF977217498275008D9D13 /* NSPersistentStoreCoordinatorHelperTests.m */; };\n\t\t9004F4FA1A94CBCF00A61312 /* NSManagedObjectContextHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976A17498275008D9D13 /* NSManagedObjectContextHelperTests.m */; };\n\t\t9004F4FB1A94CBCF00A61312 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9788174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m */; };\n\t\t9004F4FC1A94CBCF00A61312 /* _SingleEntityWithNoRelationships.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492017C2F42100BC2B5C /* _SingleEntityWithNoRelationships.m */; };\n\t\t9004F4FD1A94CBCF00A61312 /* FixtureHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9B6C17498B5C008D9D13 /* FixtureHelpers.m */; };\n\t\t9004F4FE1A94CBCF00A61312 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978A174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m */; };\n\t\t9004F4FF1A94CBCF00A61312 /* TestModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 9099490817C2F3D400BC2B5C /* TestModel.xcdatamodeld */; };\n\t\t9004F5001A94CBCF00A61312 /* NSManagedObjectContext+MagicalSavesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 902CE13818F61E410024F47C /* NSManagedObjectContext+MagicalSavesTests.m */; };\n\t\t9004F5011A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492E17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingDefaults.m */; };\n\t\t9004F5021A94CBCF00A61312 /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491A17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */; };\n\t\t9004F5031A94CBCF00A61312 /* ImportSingleRelatedEntityTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BB1C3E1864F662001BBFBB /* ImportSingleRelatedEntityTests.m */; };\n\t\t9004F5041A94CBCF00A61312 /* MagicalRecord+ActionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 902CE12B18F61A2F0024F47C /* MagicalRecord+ActionsTests.m */; };\n\t\t9004F5051A94CBCF00A61312 /* NSManagedObject+MagicalRecordTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AA771718F79A3300D49377 /* NSManagedObject+MagicalRecordTests.m */; };\n\t\t9004F5061A94CBCF00A61312 /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9786174982AD008D9D13 /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m */; };\n\t\t9004F5071A94CBCF00A61312 /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491C17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */; };\n\t\t9004F5081A94CBCF00A61312 /* MagicalRecord+StackTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976817498275008D9D13 /* MagicalRecord+StackTests.m */; };\n\t\t9004F5091A94CBCF00A61312 /* _MappedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491417C2F42100BC2B5C /* _MappedEntity.m */; };\n\t\t9004F50A1A94CBCF00A61312 /* _DifferentClassNameMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491217C2F42100BC2B5C /* _DifferentClassNameMapping.m */; };\n\t\t9004F50B1A94CBCF00A61312 /* _ConcreteRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491017C2F42100BC2B5C /* _ConcreteRelatedEntity.m */; };\n\t\t9004F50C1A94CBCF00A61312 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492C17C2F42100BC2B5C /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */; };\n\t\t9004F50D1A94CBCF00A61312 /* SingleEntityWithNoRelationships.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493617C2F42100BC2B5C /* SingleEntityWithNoRelationships.m */; };\n\t\t9004F5131A94CBCF00A61312 /* SampleJSONDataForImport.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4917498985008D9D13 /* SampleJSONDataForImport.json */; };\n\t\t9004F5141A94CBCF00A61312 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4A17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json */; };\n\t\t9004F5151A94CBCF00A61312 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4B17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json */; };\n\t\t9004F5161A94CBCF00A61312 /* MultipleEntitiesWithNoPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = 581ECBF6187F660B00084FEE /* MultipleEntitiesWithNoPrimaryKey.json */; };\n\t\t9004F5171A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityUsingDefaults.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4C17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingDefaults.json */; };\n\t\t9004F5181A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4D17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json */; };\n\t\t9004F5191A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4E17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json */; };\n\t\t9004F51A1A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4F17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json */; };\n\t\t9004F51B1A94CBCF00A61312 /* SingleEntityWithNoRelationships.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5017498985008D9D13 /* SingleEntityWithNoRelationships.json */; };\n\t\t9004F51C1A94CBCF00A61312 /* SingleEntityWithNoRelationships.plist in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5117498985008D9D13 /* SingleEntityWithNoRelationships.plist */; };\n\t\t9004F51D1A94CBCF00A61312 /* SingleRelatedEntity.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5217498985008D9D13 /* SingleRelatedEntity.json */; };\n\t\t9004F5231A94CBF300A61312 /* MagicalRecord.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 905D07181A63DE190076B54E /* MagicalRecord.framework */; };\n\t\t9004F5271A94CBF900A61312 /* DifferentClassNameMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492817C2F42100BC2B5C /* DifferentClassNameMapping.m */; };\n\t\t9004F5281A94CBF900A61312 /* _AbstractRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099490E17C2F42100BC2B5C /* _AbstractRelatedEntity.m */; };\n\t\t9004F5291A94CBF900A61312 /* SingleRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493817C2F42100BC2B5C /* SingleRelatedEntity.m */; };\n\t\t9004F52A1A94CBF900A61312 /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491E17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */; };\n\t\t9004F52B1A94CBF900A61312 /* NSManagedObjectContext+ChainSaveTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB566931A2C47B3004174B3 /* NSManagedObjectContext+ChainSaveTests.m */; };\n\t\t9004F52C1A94CBF900A61312 /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491617C2F42100BC2B5C /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */; };\n\t\t9004F52D1A94CBF900A61312 /* NSPersistentStoreHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF977017498275008D9D13 /* NSPersistentStoreHelperTests.m */; };\n\t\t9004F52E1A94CBF900A61312 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493017C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */; };\n\t\t9004F52F1A94CBF900A61312 /* _SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491817C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingDefaults.m */; };\n\t\t9004F5301A94CBF900A61312 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493217C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */; };\n\t\t9004F5311A94CBF900A61312 /* NSManagedObjectHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976C17498275008D9D13 /* NSManagedObjectHelperTests.m */; };\n\t\t9004F5321A94CBF900A61312 /* ConcreteRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492617C2F42100BC2B5C /* ConcreteRelatedEntity.m */; };\n\t\t9004F5331A94CBF900A61312 /* MagicalDataImportTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978E174982AD008D9D13 /* MagicalDataImportTestCase.m */; };\n\t\t9004F5341A94CBF900A61312 /* AbstractRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492417C2F42100BC2B5C /* AbstractRelatedEntity.m */; };\n\t\t9004F5351A94CBF900A61312 /* MappedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492A17C2F42100BC2B5C /* MappedEntity.m */; };\n\t\t9004F5361A94CBF900A61312 /* MagicalRecordTestBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BB1C4518651539001BBFBB /* MagicalRecordTestBase.m */; };\n\t\t9004F5371A94CBF900A61312 /* _SingleRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492217C2F42100BC2B5C /* _SingleRelatedEntity.m */; };\n\t\t9004F5381A94CBF900A61312 /* ImportSingleEntityWithNoRelationshipsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978B174982AD008D9D13 /* ImportSingleEntityWithNoRelationshipsTests.m */; };\n\t\t9004F5391A94CBF900A61312 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493417C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */; };\n\t\t9004F53A1A94CBF900A61312 /* EntityWithoutEntityNameMethod.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AA772418F79CCC00D49377 /* EntityWithoutEntityNameMethod.m */; };\n\t\t9004F53B1A94CBF900A61312 /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9787174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m */; };\n\t\t9004F53C1A94CBF900A61312 /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 581ECBEB187F63FF00084FEE /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m */; };\n\t\t9004F53D1A94CBF900A61312 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9789174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m */; };\n\t\t9004F53E1A94CBF900A61312 /* NSPersistentStoreCoordinatorHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF977217498275008D9D13 /* NSPersistentStoreCoordinatorHelperTests.m */; };\n\t\t9004F53F1A94CBF900A61312 /* NSManagedObjectContextHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976A17498275008D9D13 /* NSManagedObjectContextHelperTests.m */; };\n\t\t9004F5401A94CBF900A61312 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9788174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m */; };\n\t\t9004F5411A94CBF900A61312 /* _SingleEntityWithNoRelationships.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492017C2F42100BC2B5C /* _SingleEntityWithNoRelationships.m */; };\n\t\t9004F5421A94CBF900A61312 /* FixtureHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9B6C17498B5C008D9D13 /* FixtureHelpers.m */; };\n\t\t9004F5431A94CBF900A61312 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978A174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m */; };\n\t\t9004F5441A94CBF900A61312 /* TestModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 9099490817C2F3D400BC2B5C /* TestModel.xcdatamodeld */; };\n\t\t9004F5451A94CBF900A61312 /* NSManagedObjectContext+MagicalSavesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 902CE13818F61E410024F47C /* NSManagedObjectContext+MagicalSavesTests.m */; };\n\t\t9004F5461A94CBF900A61312 /* SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492E17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingDefaults.m */; };\n\t\t9004F5471A94CBF900A61312 /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491A17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */; };\n\t\t9004F5481A94CBF900A61312 /* ImportSingleRelatedEntityTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BB1C3E1864F662001BBFBB /* ImportSingleRelatedEntityTests.m */; };\n\t\t9004F5491A94CBF900A61312 /* MagicalRecord+ActionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 902CE12B18F61A2F0024F47C /* MagicalRecord+ActionsTests.m */; };\n\t\t9004F54A1A94CBF900A61312 /* NSManagedObject+MagicalRecordTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AA771718F79A3300D49377 /* NSManagedObject+MagicalRecordTests.m */; };\n\t\t9004F54B1A94CBF900A61312 /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9786174982AD008D9D13 /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m */; };\n\t\t9004F54C1A94CBF900A61312 /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491C17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */; };\n\t\t9004F54D1A94CBF900A61312 /* MagicalRecord+StackTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976817498275008D9D13 /* MagicalRecord+StackTests.m */; };\n\t\t9004F54E1A94CBF900A61312 /* _MappedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491417C2F42100BC2B5C /* _MappedEntity.m */; };\n\t\t9004F54F1A94CBF900A61312 /* _DifferentClassNameMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491217C2F42100BC2B5C /* _DifferentClassNameMapping.m */; };\n\t\t9004F5501A94CBF900A61312 /* _ConcreteRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491017C2F42100BC2B5C /* _ConcreteRelatedEntity.m */; };\n\t\t9004F5511A94CBF900A61312 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492C17C2F42100BC2B5C /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */; };\n\t\t9004F5521A94CBF900A61312 /* SingleEntityWithNoRelationships.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493617C2F42100BC2B5C /* SingleEntityWithNoRelationships.m */; };\n\t\t9004F5581A94CBF900A61312 /* SampleJSONDataForImport.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4917498985008D9D13 /* SampleJSONDataForImport.json */; };\n\t\t9004F5591A94CBF900A61312 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4A17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json */; };\n\t\t9004F55A1A94CBF900A61312 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4B17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json */; };\n\t\t9004F55B1A94CBF900A61312 /* MultipleEntitiesWithNoPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = 581ECBF6187F660B00084FEE /* MultipleEntitiesWithNoPrimaryKey.json */; };\n\t\t9004F55C1A94CBF900A61312 /* SingleEntityRelatedToMappedEntityUsingDefaults.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4C17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingDefaults.json */; };\n\t\t9004F55D1A94CBF900A61312 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4D17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json */; };\n\t\t9004F55E1A94CBF900A61312 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4E17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json */; };\n\t\t9004F55F1A94CBF900A61312 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4F17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json */; };\n\t\t9004F5601A94CBF900A61312 /* SingleEntityWithNoRelationships.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5017498985008D9D13 /* SingleEntityWithNoRelationships.json */; };\n\t\t9004F5611A94CBF900A61312 /* SingleEntityWithNoRelationships.plist in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5117498985008D9D13 /* SingleEntityWithNoRelationships.plist */; };\n\t\t9004F5621A94CBF900A61312 /* SingleRelatedEntity.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5217498985008D9D13 /* SingleRelatedEntity.json */; };\n\t\t9004F5681A94CC0E00A61312 /* MagicalRecord.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 905D073B1A63DE690076B54E /* MagicalRecord.framework */; };\n\t\t9004F57A1A94D7D300A61312 /* MagicalRecord.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 905D07181A63DE190076B54E /* MagicalRecord.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };\n\t\t9004F57D1A94D7F100A61312 /* MagicalRecord.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 905D073B1A63DE690076B54E /* MagicalRecord.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };\n\t\t9007B14A1C5A416500C64F94 /* MagicalRecord+ShorthandTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9007B1491C5A416500C64F94 /* MagicalRecord+ShorthandTests.m */; };\n\t\t9007B14B1C5A416500C64F94 /* MagicalRecord+ShorthandTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9007B1491C5A416500C64F94 /* MagicalRecord+ShorthandTests.m */; };\n\t\t9007B14C1C5A416500C64F94 /* MagicalRecord+ShorthandTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9007B1491C5A416500C64F94 /* MagicalRecord+ShorthandTests.m */; };\n\t\t9007B14D1C5A416500C64F94 /* MagicalRecord+ShorthandTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9007B1491C5A416500C64F94 /* MagicalRecord+ShorthandTests.m */; };\n\t\t90171E1B17C329CC00E7084A /* FixtureHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9B6C17498B5C008D9D13 /* FixtureHelpers.m */; };\n\t\t90171E1C17C329CD00E7084A /* FixtureHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9B6C17498B5C008D9D13 /* FixtureHelpers.m */; };\n\t\t9021D9E31AFB34D6001C80BA /* MagicalRecordTestHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 9021D9E21AFB34D6001C80BA /* MagicalRecordTestHelpers.m */; };\n\t\t9021D9E41AFB34D6001C80BA /* MagicalRecordTestHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 9021D9E21AFB34D6001C80BA /* MagicalRecordTestHelpers.m */; };\n\t\t9021D9E51AFB34D6001C80BA /* MagicalRecordTestHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 9021D9E21AFB34D6001C80BA /* MagicalRecordTestHelpers.m */; };\n\t\t9021D9E61AFB34D6001C80BA /* MagicalRecordTestHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 9021D9E21AFB34D6001C80BA /* MagicalRecordTestHelpers.m */; };\n\t\t902CE12C18F61A2F0024F47C /* MagicalRecord+ActionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 902CE12B18F61A2F0024F47C /* MagicalRecord+ActionsTests.m */; };\n\t\t902CE12D18F61A2F0024F47C /* MagicalRecord+ActionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 902CE12B18F61A2F0024F47C /* MagicalRecord+ActionsTests.m */; };\n\t\t902CE13918F61E410024F47C /* NSManagedObjectContext+MagicalSavesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 902CE13818F61E410024F47C /* NSManagedObjectContext+MagicalSavesTests.m */; };\n\t\t902CE13A18F61E410024F47C /* NSManagedObjectContext+MagicalSavesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 902CE13818F61E410024F47C /* NSManagedObjectContext+MagicalSavesTests.m */; };\n\t\t90542E121863F20900916224 /* MagicalDataImportTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978E174982AD008D9D13 /* MagicalDataImportTestCase.m */; };\n\t\t90542E131863F20900916224 /* MagicalDataImportTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978E174982AD008D9D13 /* MagicalDataImportTestCase.m */; };\n\t\t90542E141863F20C00916224 /* ImportSingleEntityWithNoRelationshipsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978B174982AD008D9D13 /* ImportSingleEntityWithNoRelationshipsTests.m */; };\n\t\t90542E151863F20C00916224 /* ImportSingleEntityWithNoRelationshipsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978B174982AD008D9D13 /* ImportSingleEntityWithNoRelationshipsTests.m */; };\n\t\t90542E181864438900916224 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978A174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m */; };\n\t\t90542E191864438A00916224 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF978A174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m */; };\n\t\t90542E1A1864688100916224 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9789174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m */; };\n\t\t90542E1B1864688100916224 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9789174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m */; };\n\t\t90542E1C1864691E00916224 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9788174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m */; };\n\t\t90542E1D1864691E00916224 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9788174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m */; };\n\t\t90542E1E1864853900916224 /* MagicalRecord+StackTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976817498275008D9D13 /* MagicalRecord+StackTests.m */; };\n\t\t90542E1F1864853A00916224 /* MagicalRecord+StackTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976817498275008D9D13 /* MagicalRecord+StackTests.m */; };\n\t\t90542E201864855500916224 /* NSManagedObjectContextHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976A17498275008D9D13 /* NSManagedObjectContextHelperTests.m */; };\n\t\t90542E211864855500916224 /* NSManagedObjectContextHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976A17498275008D9D13 /* NSManagedObjectContextHelperTests.m */; };\n\t\t90542E221864861100916224 /* NSManagedObjectHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976C17498275008D9D13 /* NSManagedObjectHelperTests.m */; };\n\t\t90542E231864861200916224 /* NSManagedObjectHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976C17498275008D9D13 /* NSManagedObjectHelperTests.m */; };\n\t\t90542E241864894D00916224 /* NSPersistentStoreHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF977017498275008D9D13 /* NSPersistentStoreHelperTests.m */; };\n\t\t90542E251864894D00916224 /* NSPersistentStoreHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF977017498275008D9D13 /* NSPersistentStoreHelperTests.m */; };\n\t\t90542E2618648AAF00916224 /* NSPersistentStoreCoordinatorHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF977217498275008D9D13 /* NSPersistentStoreCoordinatorHelperTests.m */; };\n\t\t90542E2718648AB000916224 /* NSPersistentStoreCoordinatorHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF977217498275008D9D13 /* NSPersistentStoreCoordinatorHelperTests.m */; };\n\t\t905D07551A63DEF40076B54E /* MagicalImportFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD729C150F832A00216827 /* MagicalImportFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07561A63DEF40076B54E /* NSEntityDescription+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A0150F832A00216827 /* NSEntityDescription+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07571A63DEF40076B54E /* NSAttributeDescription+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD729E150F832A00216827 /* NSAttributeDescription+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07581A63DEF40076B54E /* NSRelationshipDescription+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A6150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07591A63DEF40076B54E /* NSNumber+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A2150F832A00216827 /* NSNumber+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D075A1A63DEF40076B54E /* NSObject+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A4150F832A00216827 /* NSObject+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D075B1A63DEF40076B54E /* NSString+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A8150F832A00216827 /* NSString+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D075C1A63DEF40076B54E /* NSManagedObject+MagicalAggregation.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72AB150F832A00216827 /* NSManagedObject+MagicalAggregation.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D075D1A63DEF40076B54E /* NSManagedObject+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72AD150F832A00216827 /* NSManagedObject+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D075E1A63DEF40076B54E /* NSManagedObject+MagicalFinders.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72AF150F832A00216827 /* NSManagedObject+MagicalFinders.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D075F1A63DEF40076B54E /* NSManagedObject+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B1150F832A00216827 /* NSManagedObject+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07601A63DEF40076B54E /* NSManagedObject+MagicalRequests.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B3150F832A00216827 /* NSManagedObject+MagicalRequests.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07611A63DEF40076B54E /* NSManagedObjectContext+MagicalChainSave.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BB566891A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07621A63DEF40076B54E /* NSManagedObjectContext+MagicalObserving.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B6150F832A00216827 /* NSManagedObjectContext+MagicalObserving.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07631A63DEF40076B54E /* NSManagedObjectContext+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B8150F832A00216827 /* NSManagedObjectContext+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07641A63DEF40076B54E /* NSManagedObjectContext+MagicalSaves.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72BA150F832A00216827 /* NSManagedObjectContext+MagicalSaves.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07651A63DEF40076B54E /* NSManagedObjectContext+MagicalThreading.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72BC150F832A00216827 /* NSManagedObjectContext+MagicalThreading.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07661A63DEF40076B54E /* NSManagedObjectModel+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72BE150F832A00216827 /* NSManagedObjectModel+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07671A63DEF40076B54E /* NSPersistentStore+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C0150F832A00216827 /* NSPersistentStore+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07681A63DEF40076B54E /* NSPersistentStoreCoordinator+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C2150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07691A63DEF40076B54E /* MagicalRecordInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72D1150F832A00216827 /* MagicalRecordInternal.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D076A1A63DEF40076B54E /* MagicalRecord+Actions.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C5150F832A00216827 /* MagicalRecord+Actions.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D076B1A63DEF40076B54E /* MagicalRecord+ErrorHandling.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C7150F832A00216827 /* MagicalRecord+ErrorHandling.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D076C1A63DEF40076B54E /* MagicalRecord+iCloud.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C9150F832A00216827 /* MagicalRecord+iCloud.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D076D1A63DEF40076B54E /* MagicalRecord+Options.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72CB150F832A00216827 /* MagicalRecord+Options.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D076E1A63DEF40076B54E /* MagicalRecord+Setup.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72CD150F832A00216827 /* MagicalRecord+Setup.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07701A63DEF40076B54E /* MagicalRecordLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 90FEC08B18F42DEA002FFC2F /* MagicalRecordLogging.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07721A63DEF40076B54E /* MagicalRecordDeprecationMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 902CE11E18F6133E0024F47C /* MagicalRecordDeprecationMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07731A63DEF40076B54E /* MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72D4150F832A00216827 /* MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07741A63DEF40076B54E /* MagicalImportFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD729C150F832A00216827 /* MagicalImportFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07751A63DEF40076B54E /* NSEntityDescription+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A0150F832A00216827 /* NSEntityDescription+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07761A63DEF40076B54E /* NSAttributeDescription+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD729E150F832A00216827 /* NSAttributeDescription+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07771A63DEF40076B54E /* NSRelationshipDescription+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A6150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07781A63DEF40076B54E /* NSNumber+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A2150F832A00216827 /* NSNumber+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07791A63DEF40076B54E /* NSObject+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A4150F832A00216827 /* NSObject+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D077A1A63DEF40076B54E /* NSString+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72A8150F832A00216827 /* NSString+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D077B1A63DEF40076B54E /* NSManagedObject+MagicalAggregation.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72AB150F832A00216827 /* NSManagedObject+MagicalAggregation.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D077C1A63DEF40076B54E /* NSManagedObject+MagicalDataImport.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72AD150F832A00216827 /* NSManagedObject+MagicalDataImport.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D077D1A63DEF40076B54E /* NSManagedObject+MagicalFinders.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72AF150F832A00216827 /* NSManagedObject+MagicalFinders.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D077E1A63DEF40076B54E /* NSManagedObject+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B1150F832A00216827 /* NSManagedObject+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D077F1A63DEF40076B54E /* NSManagedObject+MagicalRequests.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B3150F832A00216827 /* NSManagedObject+MagicalRequests.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07801A63DEF40076B54E /* NSManagedObjectContext+MagicalChainSave.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BB566891A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07811A63DEF40076B54E /* NSManagedObjectContext+MagicalObserving.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B6150F832A00216827 /* NSManagedObjectContext+MagicalObserving.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07821A63DEF40076B54E /* NSManagedObjectContext+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72B8150F832A00216827 /* NSManagedObjectContext+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07831A63DEF40076B54E /* NSManagedObjectContext+MagicalSaves.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72BA150F832A00216827 /* NSManagedObjectContext+MagicalSaves.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07841A63DEF40076B54E /* NSManagedObjectContext+MagicalThreading.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72BC150F832A00216827 /* NSManagedObjectContext+MagicalThreading.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07851A63DEF40076B54E /* NSManagedObjectModel+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72BE150F832A00216827 /* NSManagedObjectModel+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07861A63DEF40076B54E /* NSPersistentStore+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C0150F832A00216827 /* NSPersistentStore+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07871A63DEF40076B54E /* NSPersistentStoreCoordinator+MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C2150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07881A63DEF40076B54E /* MagicalRecordInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72D1150F832A00216827 /* MagicalRecordInternal.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07891A63DEF40076B54E /* MagicalRecord+Actions.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C5150F832A00216827 /* MagicalRecord+Actions.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D078A1A63DEF40076B54E /* MagicalRecord+ErrorHandling.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C7150F832A00216827 /* MagicalRecord+ErrorHandling.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D078B1A63DEF40076B54E /* MagicalRecord+iCloud.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72C9150F832A00216827 /* MagicalRecord+iCloud.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D078C1A63DEF40076B54E /* MagicalRecord+Options.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72CB150F832A00216827 /* MagicalRecord+Options.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D078D1A63DEF40076B54E /* MagicalRecord+Setup.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72CD150F832A00216827 /* MagicalRecord+Setup.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D078F1A63DEF40076B54E /* MagicalRecordLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 90FEC08B18F42DEA002FFC2F /* MagicalRecordLogging.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07911A63DEF40076B54E /* MagicalRecordDeprecationMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 902CE11E18F6133E0024F47C /* MagicalRecordDeprecationMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07921A63DEF40076B54E /* MagicalRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = C7DD72D4150F832A00216827 /* MagicalRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t905D07931A63DF120076B54E /* MagicalImportFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD729D150F832A00216827 /* MagicalImportFunctions.m */; };\n\t\t905D07941A63DF120076B54E /* NSEntityDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A1150F832A00216827 /* NSEntityDescription+MagicalDataImport.m */; };\n\t\t905D07951A63DF120076B54E /* NSAttributeDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD729F150F832A00216827 /* NSAttributeDescription+MagicalDataImport.m */; };\n\t\t905D07961A63DF120076B54E /* NSRelationshipDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A7150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.m */; };\n\t\t905D07971A63DF120076B54E /* NSNumber+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A3150F832A00216827 /* NSNumber+MagicalDataImport.m */; };\n\t\t905D07981A63DF120076B54E /* NSObject+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A5150F832A00216827 /* NSObject+MagicalDataImport.m */; };\n\t\t905D07991A63DF120076B54E /* NSString+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A9150F832A00216827 /* NSString+MagicalDataImport.m */; };\n\t\t905D079A1A63DF120076B54E /* NSManagedObject+MagicalAggregation.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72AC150F832A00216827 /* NSManagedObject+MagicalAggregation.m */; };\n\t\t905D079B1A63DF120076B54E /* NSManagedObject+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72AE150F832A00216827 /* NSManagedObject+MagicalDataImport.m */; };\n\t\t905D079C1A63DF120076B54E /* NSManagedObject+MagicalFinders.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B0150F832A00216827 /* NSManagedObject+MagicalFinders.m */; };\n\t\t905D079D1A63DF120076B54E /* NSManagedObject+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B2150F832A00216827 /* NSManagedObject+MagicalRecord.m */; };\n\t\t905D079E1A63DF120076B54E /* NSManagedObject+MagicalRequests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B4150F832A00216827 /* NSManagedObject+MagicalRequests.m */; };\n\t\t905D079F1A63DF120076B54E /* NSManagedObjectContext+MagicalChainSave.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB5668A1A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.m */; };\n\t\t905D07A01A63DF120076B54E /* NSManagedObjectContext+MagicalObserving.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B7150F832A00216827 /* NSManagedObjectContext+MagicalObserving.m */; };\n\t\t905D07A11A63DF120076B54E /* NSManagedObjectContext+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B9150F832A00216827 /* NSManagedObjectContext+MagicalRecord.m */; };\n\t\t905D07A21A63DF120076B54E /* NSManagedObjectContext+MagicalSaves.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BB150F832A00216827 /* NSManagedObjectContext+MagicalSaves.m */; };\n\t\t905D07A31A63DF120076B54E /* NSManagedObjectContext+MagicalThreading.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BD150F832A00216827 /* NSManagedObjectContext+MagicalThreading.m */; };\n\t\t905D07A41A63DF120076B54E /* NSManagedObjectModel+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BF150F832A00216827 /* NSManagedObjectModel+MagicalRecord.m */; };\n\t\t905D07A51A63DF120076B54E /* NSPersistentStore+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C1150F832A00216827 /* NSPersistentStore+MagicalRecord.m */; };\n\t\t905D07A61A63DF120076B54E /* NSPersistentStoreCoordinator+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C3150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.m */; };\n\t\t905D07A71A63DF120076B54E /* MagicalRecordInternal.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72D2150F832A00216827 /* MagicalRecordInternal.m */; };\n\t\t905D07A81A63DF120076B54E /* MagicalRecord+Actions.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C6150F832A00216827 /* MagicalRecord+Actions.m */; };\n\t\t905D07A91A63DF120076B54E /* MagicalRecord+ErrorHandling.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C8150F832A00216827 /* MagicalRecord+ErrorHandling.m */; };\n\t\t905D07AA1A63DF120076B54E /* MagicalRecord+iCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CA150F832A00216827 /* MagicalRecord+iCloud.m */; };\n\t\t905D07AB1A63DF120076B54E /* MagicalRecord+Options.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CC150F832A00216827 /* MagicalRecord+Options.m */; };\n\t\t905D07AC1A63DF120076B54E /* MagicalRecord+Setup.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CE150F832A00216827 /* MagicalRecord+Setup.m */; };\n\t\t905D07AE1A63DF130076B54E /* MagicalImportFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD729D150F832A00216827 /* MagicalImportFunctions.m */; };\n\t\t905D07AF1A63DF130076B54E /* NSEntityDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A1150F832A00216827 /* NSEntityDescription+MagicalDataImport.m */; };\n\t\t905D07B01A63DF130076B54E /* NSAttributeDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD729F150F832A00216827 /* NSAttributeDescription+MagicalDataImport.m */; };\n\t\t905D07B11A63DF130076B54E /* NSRelationshipDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A7150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.m */; };\n\t\t905D07B21A63DF130076B54E /* NSNumber+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A3150F832A00216827 /* NSNumber+MagicalDataImport.m */; };\n\t\t905D07B31A63DF130076B54E /* NSObject+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A5150F832A00216827 /* NSObject+MagicalDataImport.m */; };\n\t\t905D07B41A63DF130076B54E /* NSString+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A9150F832A00216827 /* NSString+MagicalDataImport.m */; };\n\t\t905D07B51A63DF130076B54E /* NSManagedObject+MagicalAggregation.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72AC150F832A00216827 /* NSManagedObject+MagicalAggregation.m */; };\n\t\t905D07B61A63DF130076B54E /* NSManagedObject+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72AE150F832A00216827 /* NSManagedObject+MagicalDataImport.m */; };\n\t\t905D07B71A63DF130076B54E /* NSManagedObject+MagicalFinders.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B0150F832A00216827 /* NSManagedObject+MagicalFinders.m */; };\n\t\t905D07B81A63DF130076B54E /* NSManagedObject+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B2150F832A00216827 /* NSManagedObject+MagicalRecord.m */; };\n\t\t905D07B91A63DF130076B54E /* NSManagedObject+MagicalRequests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B4150F832A00216827 /* NSManagedObject+MagicalRequests.m */; };\n\t\t905D07BA1A63DF130076B54E /* NSManagedObjectContext+MagicalChainSave.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB5668A1A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.m */; };\n\t\t905D07BB1A63DF130076B54E /* NSManagedObjectContext+MagicalObserving.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B7150F832A00216827 /* NSManagedObjectContext+MagicalObserving.m */; };\n\t\t905D07BC1A63DF130076B54E /* NSManagedObjectContext+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B9150F832A00216827 /* NSManagedObjectContext+MagicalRecord.m */; };\n\t\t905D07BD1A63DF130076B54E /* NSManagedObjectContext+MagicalSaves.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BB150F832A00216827 /* NSManagedObjectContext+MagicalSaves.m */; };\n\t\t905D07BE1A63DF130076B54E /* NSManagedObjectContext+MagicalThreading.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BD150F832A00216827 /* NSManagedObjectContext+MagicalThreading.m */; };\n\t\t905D07BF1A63DF130076B54E /* NSManagedObjectModel+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BF150F832A00216827 /* NSManagedObjectModel+MagicalRecord.m */; };\n\t\t905D07C01A63DF130076B54E /* NSPersistentStore+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C1150F832A00216827 /* NSPersistentStore+MagicalRecord.m */; };\n\t\t905D07C11A63DF130076B54E /* NSPersistentStoreCoordinator+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C3150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.m */; };\n\t\t905D07C21A63DF130076B54E /* MagicalRecordInternal.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72D2150F832A00216827 /* MagicalRecordInternal.m */; };\n\t\t905D07C31A63DF130076B54E /* MagicalRecord+Actions.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C6150F832A00216827 /* MagicalRecord+Actions.m */; };\n\t\t905D07C41A63DF130076B54E /* MagicalRecord+ErrorHandling.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C8150F832A00216827 /* MagicalRecord+ErrorHandling.m */; };\n\t\t905D07C51A63DF130076B54E /* MagicalRecord+iCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CA150F832A00216827 /* MagicalRecord+iCloud.m */; };\n\t\t905D07C61A63DF130076B54E /* MagicalRecord+Options.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CC150F832A00216827 /* MagicalRecord+Options.m */; };\n\t\t905D07C71A63DF130076B54E /* MagicalRecord+Setup.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CE150F832A00216827 /* MagicalRecord+Setup.m */; };\n\t\t9099490A17C2F3D400BC2B5C /* TestModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 9099490817C2F3D400BC2B5C /* TestModel.xcdatamodeld */; };\n\t\t9099490B17C2F3D400BC2B5C /* TestModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 9099490817C2F3D400BC2B5C /* TestModel.xcdatamodeld */; };\n\t\t9099493917C2F42100BC2B5C /* _AbstractRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099490E17C2F42100BC2B5C /* _AbstractRelatedEntity.m */; };\n\t\t9099493A17C2F42100BC2B5C /* _AbstractRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099490E17C2F42100BC2B5C /* _AbstractRelatedEntity.m */; };\n\t\t9099493B17C2F42100BC2B5C /* _ConcreteRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491017C2F42100BC2B5C /* _ConcreteRelatedEntity.m */; };\n\t\t9099493C17C2F42100BC2B5C /* _ConcreteRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491017C2F42100BC2B5C /* _ConcreteRelatedEntity.m */; };\n\t\t9099493D17C2F42100BC2B5C /* _DifferentClassNameMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491217C2F42100BC2B5C /* _DifferentClassNameMapping.m */; };\n\t\t9099493E17C2F42100BC2B5C /* _DifferentClassNameMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491217C2F42100BC2B5C /* _DifferentClassNameMapping.m */; };\n\t\t9099493F17C2F42100BC2B5C /* _MappedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491417C2F42100BC2B5C /* _MappedEntity.m */; };\n\t\t9099494017C2F42100BC2B5C /* _MappedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491417C2F42100BC2B5C /* _MappedEntity.m */; };\n\t\t9099494117C2F42100BC2B5C /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491617C2F42100BC2B5C /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */; };\n\t\t9099494217C2F42100BC2B5C /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491617C2F42100BC2B5C /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */; };\n\t\t9099494317C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491817C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingDefaults.m */; };\n\t\t9099494417C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491817C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingDefaults.m */; };\n\t\t9099494517C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491A17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */; };\n\t\t9099494617C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491A17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */; };\n\t\t9099494717C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491C17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */; };\n\t\t9099494817C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491C17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */; };\n\t\t9099494917C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491E17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */; };\n\t\t9099494A17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099491E17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */; };\n\t\t9099494B17C2F42100BC2B5C /* _SingleEntityWithNoRelationships.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492017C2F42100BC2B5C /* _SingleEntityWithNoRelationships.m */; };\n\t\t9099494C17C2F42100BC2B5C /* _SingleEntityWithNoRelationships.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492017C2F42100BC2B5C /* _SingleEntityWithNoRelationships.m */; };\n\t\t9099494D17C2F42100BC2B5C /* _SingleRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492217C2F42100BC2B5C /* _SingleRelatedEntity.m */; };\n\t\t9099494E17C2F42100BC2B5C /* _SingleRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492217C2F42100BC2B5C /* _SingleRelatedEntity.m */; };\n\t\t9099494F17C2F42100BC2B5C /* AbstractRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492417C2F42100BC2B5C /* AbstractRelatedEntity.m */; };\n\t\t9099495017C2F42100BC2B5C /* AbstractRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492417C2F42100BC2B5C /* AbstractRelatedEntity.m */; };\n\t\t9099495117C2F42100BC2B5C /* ConcreteRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492617C2F42100BC2B5C /* ConcreteRelatedEntity.m */; };\n\t\t9099495217C2F42100BC2B5C /* ConcreteRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492617C2F42100BC2B5C /* ConcreteRelatedEntity.m */; };\n\t\t9099495317C2F42100BC2B5C /* DifferentClassNameMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492817C2F42100BC2B5C /* DifferentClassNameMapping.m */; };\n\t\t9099495417C2F42100BC2B5C /* DifferentClassNameMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492817C2F42100BC2B5C /* DifferentClassNameMapping.m */; };\n\t\t9099495517C2F42100BC2B5C /* MappedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492A17C2F42100BC2B5C /* MappedEntity.m */; };\n\t\t9099495617C2F42100BC2B5C /* MappedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492A17C2F42100BC2B5C /* MappedEntity.m */; };\n\t\t9099495717C2F42100BC2B5C /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492C17C2F42100BC2B5C /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */; };\n\t\t9099495817C2F42100BC2B5C /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492C17C2F42100BC2B5C /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */; };\n\t\t9099495917C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492E17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingDefaults.m */; };\n\t\t9099495A17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099492E17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingDefaults.m */; };\n\t\t9099495B17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493017C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */; };\n\t\t9099495C17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493017C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */; };\n\t\t9099495D17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493217C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */; };\n\t\t9099495E17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493217C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */; };\n\t\t9099495F17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493417C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */; };\n\t\t9099496017C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493417C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */; };\n\t\t9099496117C2F42100BC2B5C /* SingleEntityWithNoRelationships.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493617C2F42100BC2B5C /* SingleEntityWithNoRelationships.m */; };\n\t\t9099496217C2F42100BC2B5C /* SingleEntityWithNoRelationships.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493617C2F42100BC2B5C /* SingleEntityWithNoRelationships.m */; };\n\t\t9099496317C2F42100BC2B5C /* SingleRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493817C2F42100BC2B5C /* SingleRelatedEntity.m */; };\n\t\t9099496417C2F42100BC2B5C /* SingleRelatedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099493817C2F42100BC2B5C /* SingleRelatedEntity.m */; };\n\t\t90AA771818F79A3300D49377 /* NSManagedObject+MagicalRecordTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AA771718F79A3300D49377 /* NSManagedObject+MagicalRecordTests.m */; };\n\t\t90AA771918F79A3300D49377 /* NSManagedObject+MagicalRecordTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AA771718F79A3300D49377 /* NSManagedObject+MagicalRecordTests.m */; };\n\t\t90AA772518F79CCC00D49377 /* EntityWithoutEntityNameMethod.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AA772418F79CCC00D49377 /* EntityWithoutEntityNameMethod.m */; };\n\t\t90AA772618F79CCC00D49377 /* EntityWithoutEntityNameMethod.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AA772418F79CCC00D49377 /* EntityWithoutEntityNameMethod.m */; };\n\t\t90B05B861B02450900354056 /* MagicalRecordShorthandMethodAliases.h in Headers */ = {isa = PBXBuildFile; fileRef = 90B05B851B02450900354056 /* MagicalRecordShorthandMethodAliases.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t90B05B871B02450900354056 /* MagicalRecordShorthandMethodAliases.h in Headers */ = {isa = PBXBuildFile; fileRef = 90B05B851B02450900354056 /* MagicalRecordShorthandMethodAliases.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t90B05B8B1B02452A00354056 /* MagicalRecord+ShorthandMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 90B05B891B02452A00354056 /* MagicalRecord+ShorthandMethods.h */; };\n\t\t90B05B8C1B02452A00354056 /* MagicalRecord+ShorthandMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 90B05B891B02452A00354056 /* MagicalRecord+ShorthandMethods.h */; };\n\t\t90B05B8E1B02452A00354056 /* MagicalRecord+ShorthandMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B05B8A1B02452A00354056 /* MagicalRecord+ShorthandMethods.m */; };\n\t\t90B05B8F1B02452A00354056 /* MagicalRecord+ShorthandMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B05B8A1B02452A00354056 /* MagicalRecord+ShorthandMethods.m */; };\n\t\t90B05B901B02452A00354056 /* MagicalRecord+ShorthandMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B05B8A1B02452A00354056 /* MagicalRecord+ShorthandMethods.m */; };\n\t\t90B05B911B02452A00354056 /* MagicalRecord+ShorthandMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B05B8A1B02452A00354056 /* MagicalRecord+ShorthandMethods.m */; };\n\t\t90BB1C3A1864F341001BBFBB /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9787174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m */; };\n\t\t90BB1C3B1864F341001BBFBB /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9787174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m */; };\n\t\t90BB1C3C1864F3E9001BBFBB /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9786174982AD008D9D13 /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m */; };\n\t\t90BB1C3D1864F3E9001BBFBB /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF9786174982AD008D9D13 /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m */; };\n\t\t90BB1C3F1864F662001BBFBB /* ImportSingleRelatedEntityTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BB1C3E1864F662001BBFBB /* ImportSingleRelatedEntityTests.m */; };\n\t\t90BB1C401864F662001BBFBB /* ImportSingleRelatedEntityTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BB1C3E1864F662001BBFBB /* ImportSingleRelatedEntityTests.m */; };\n\t\t90BB1C491865159A001BBFBB /* MagicalRecordTestBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BB1C4518651539001BBFBB /* MagicalRecordTestBase.m */; };\n\t\t90BB1C4A1865159A001BBFBB /* MagicalRecordTestBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BB1C4518651539001BBFBB /* MagicalRecordTestBase.m */; };\n\t\t90F829B71B3306DE00CE306F /* MagicalRecordXcode7CompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 90F829B61B3306DE00CE306F /* MagicalRecordXcode7CompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t90F829B81B3306DE00CE306F /* MagicalRecordXcode7CompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 90F829B61B3306DE00CE306F /* MagicalRecordXcode7CompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t90F829B91B3306DE00CE306F /* MagicalRecordXcode7CompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 90F829B61B3306DE00CE306F /* MagicalRecordXcode7CompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t90F829C21B33079D00CE306F /* MagicalRecordXcode7CompatibilityMacros.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 90F829B61B3306DE00CE306F /* MagicalRecordXcode7CompatibilityMacros.h */; };\n\t\t9BB5668C1A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB5668A1A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.m */; };\n\t\t9BB5668D1A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB5668A1A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.m */; };\n\t\t9BB566981A2EA8F8004174B3 /* NSManagedObjectContext+ChainSaveTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB566931A2C47B3004174B3 /* NSManagedObjectContext+ChainSaveTests.m */; };\n\t\t9BB566991A2EA8FF004174B3 /* NSManagedObjectContext+ChainSaveTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB566931A2C47B3004174B3 /* NSManagedObjectContext+ChainSaveTests.m */; };\n\t\tA07DF19B1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A07DF19A1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m */; };\n\t\tA07DF19C1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A07DF19A1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m */; };\n\t\tA07DF19D1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A07DF19A1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m */; };\n\t\tA07DF19E1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A07DF19A1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m */; };\n\t\tC7CF97C617498493008D9D13 /* MagicalImportFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD729D150F832A00216827 /* MagicalImportFunctions.m */; };\n\t\tC7CF97C717498493008D9D13 /* NSEntityDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A1150F832A00216827 /* NSEntityDescription+MagicalDataImport.m */; };\n\t\tC7CF97C817498493008D9D13 /* NSAttributeDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD729F150F832A00216827 /* NSAttributeDescription+MagicalDataImport.m */; };\n\t\tC7CF97C917498493008D9D13 /* NSRelationshipDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A7150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.m */; };\n\t\tC7CF97CA17498493008D9D13 /* NSNumber+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A3150F832A00216827 /* NSNumber+MagicalDataImport.m */; };\n\t\tC7CF97CB17498493008D9D13 /* NSObject+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A5150F832A00216827 /* NSObject+MagicalDataImport.m */; };\n\t\tC7CF97CC17498493008D9D13 /* NSString+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A9150F832A00216827 /* NSString+MagicalDataImport.m */; };\n\t\tC7CF97CD17498493008D9D13 /* NSManagedObject+MagicalAggregation.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72AC150F832A00216827 /* NSManagedObject+MagicalAggregation.m */; };\n\t\tC7CF97CE17498493008D9D13 /* NSManagedObject+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72AE150F832A00216827 /* NSManagedObject+MagicalDataImport.m */; };\n\t\tC7CF97CF17498493008D9D13 /* NSManagedObject+MagicalFinders.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B0150F832A00216827 /* NSManagedObject+MagicalFinders.m */; };\n\t\tC7CF97D017498493008D9D13 /* NSManagedObject+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B2150F832A00216827 /* NSManagedObject+MagicalRecord.m */; };\n\t\tC7CF97D117498493008D9D13 /* NSManagedObject+MagicalRequests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B4150F832A00216827 /* NSManagedObject+MagicalRequests.m */; };\n\t\tC7CF97D217498493008D9D13 /* NSManagedObjectContext+MagicalObserving.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B7150F832A00216827 /* NSManagedObjectContext+MagicalObserving.m */; };\n\t\tC7CF97D317498493008D9D13 /* NSManagedObjectContext+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B9150F832A00216827 /* NSManagedObjectContext+MagicalRecord.m */; };\n\t\tC7CF97D417498493008D9D13 /* NSManagedObjectContext+MagicalSaves.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BB150F832A00216827 /* NSManagedObjectContext+MagicalSaves.m */; };\n\t\tC7CF97D517498493008D9D13 /* NSManagedObjectContext+MagicalThreading.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BD150F832A00216827 /* NSManagedObjectContext+MagicalThreading.m */; };\n\t\tC7CF97D617498493008D9D13 /* NSManagedObjectModel+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BF150F832A00216827 /* NSManagedObjectModel+MagicalRecord.m */; };\n\t\tC7CF97D717498493008D9D13 /* NSPersistentStore+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C1150F832A00216827 /* NSPersistentStore+MagicalRecord.m */; };\n\t\tC7CF97D817498493008D9D13 /* NSPersistentStoreCoordinator+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C3150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.m */; };\n\t\tC7CF97D917498493008D9D13 /* MagicalRecordInternal.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72D2150F832A00216827 /* MagicalRecordInternal.m */; };\n\t\tC7CF97DA17498493008D9D13 /* MagicalRecord+Actions.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C6150F832A00216827 /* MagicalRecord+Actions.m */; };\n\t\tC7CF97DB17498493008D9D13 /* MagicalRecord+ErrorHandling.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C8150F832A00216827 /* MagicalRecord+ErrorHandling.m */; };\n\t\tC7CF97DC17498493008D9D13 /* MagicalRecord+iCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CA150F832A00216827 /* MagicalRecord+iCloud.m */; };\n\t\tC7CF97DD17498493008D9D13 /* MagicalRecord+Options.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CC150F832A00216827 /* MagicalRecord+Options.m */; };\n\t\tC7CF97DE17498493008D9D13 /* MagicalRecord+Setup.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CE150F832A00216827 /* MagicalRecord+Setup.m */; };\n\t\tC7CF97E0174984A5008D9D13 /* MagicalImportFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD729D150F832A00216827 /* MagicalImportFunctions.m */; };\n\t\tC7CF97E1174984A5008D9D13 /* NSEntityDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A1150F832A00216827 /* NSEntityDescription+MagicalDataImport.m */; };\n\t\tC7CF97E2174984A5008D9D13 /* NSAttributeDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD729F150F832A00216827 /* NSAttributeDescription+MagicalDataImport.m */; };\n\t\tC7CF97E3174984A5008D9D13 /* NSRelationshipDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A7150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.m */; };\n\t\tC7CF97E4174984A5008D9D13 /* NSNumber+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A3150F832A00216827 /* NSNumber+MagicalDataImport.m */; };\n\t\tC7CF97E5174984A5008D9D13 /* NSObject+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A5150F832A00216827 /* NSObject+MagicalDataImport.m */; };\n\t\tC7CF97E6174984A5008D9D13 /* NSString+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72A9150F832A00216827 /* NSString+MagicalDataImport.m */; };\n\t\tC7CF97E7174984A5008D9D13 /* NSManagedObject+MagicalAggregation.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72AC150F832A00216827 /* NSManagedObject+MagicalAggregation.m */; };\n\t\tC7CF97E8174984A5008D9D13 /* NSManagedObject+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72AE150F832A00216827 /* NSManagedObject+MagicalDataImport.m */; };\n\t\tC7CF97E9174984A5008D9D13 /* NSManagedObject+MagicalFinders.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B0150F832A00216827 /* NSManagedObject+MagicalFinders.m */; };\n\t\tC7CF97EA174984A5008D9D13 /* NSManagedObject+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B2150F832A00216827 /* NSManagedObject+MagicalRecord.m */; };\n\t\tC7CF97EB174984A5008D9D13 /* NSManagedObject+MagicalRequests.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B4150F832A00216827 /* NSManagedObject+MagicalRequests.m */; };\n\t\tC7CF97EC174984A5008D9D13 /* NSManagedObjectContext+MagicalObserving.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B7150F832A00216827 /* NSManagedObjectContext+MagicalObserving.m */; };\n\t\tC7CF97ED174984A5008D9D13 /* NSManagedObjectContext+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72B9150F832A00216827 /* NSManagedObjectContext+MagicalRecord.m */; };\n\t\tC7CF97EE174984A5008D9D13 /* NSManagedObjectContext+MagicalSaves.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BB150F832A00216827 /* NSManagedObjectContext+MagicalSaves.m */; };\n\t\tC7CF97EF174984A5008D9D13 /* NSManagedObjectContext+MagicalThreading.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BD150F832A00216827 /* NSManagedObjectContext+MagicalThreading.m */; };\n\t\tC7CF97F0174984A5008D9D13 /* NSManagedObjectModel+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72BF150F832A00216827 /* NSManagedObjectModel+MagicalRecord.m */; };\n\t\tC7CF97F1174984A5008D9D13 /* NSPersistentStore+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C1150F832A00216827 /* NSPersistentStore+MagicalRecord.m */; };\n\t\tC7CF97F2174984A5008D9D13 /* NSPersistentStoreCoordinator+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C3150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.m */; };\n\t\tC7CF97F3174984A5008D9D13 /* MagicalRecordInternal.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72D2150F832A00216827 /* MagicalRecordInternal.m */; };\n\t\tC7CF97F4174984A5008D9D13 /* MagicalRecord+Actions.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C6150F832A00216827 /* MagicalRecord+Actions.m */; };\n\t\tC7CF97F5174984A5008D9D13 /* MagicalRecord+ErrorHandling.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72C8150F832A00216827 /* MagicalRecord+ErrorHandling.m */; };\n\t\tC7CF97F6174984A5008D9D13 /* MagicalRecord+iCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CA150F832A00216827 /* MagicalRecord+iCloud.m */; };\n\t\tC7CF97F7174984A5008D9D13 /* MagicalRecord+Options.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CC150F832A00216827 /* MagicalRecord+Options.m */; };\n\t\tC7CF97F8174984A5008D9D13 /* MagicalRecord+Setup.m in Sources */ = {isa = PBXBuildFile; fileRef = C7DD72CE150F832A00216827 /* MagicalRecord+Setup.m */; };\n\t\tC7CF9B5317498985008D9D13 /* SampleJSONDataForImport.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4917498985008D9D13 /* SampleJSONDataForImport.json */; };\n\t\tC7CF9B5417498985008D9D13 /* SampleJSONDataForImport.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4917498985008D9D13 /* SampleJSONDataForImport.json */; };\n\t\tC7CF9B5517498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4A17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json */; };\n\t\tC7CF9B5617498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4A17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json */; };\n\t\tC7CF9B5717498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4B17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json */; };\n\t\tC7CF9B5817498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4B17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json */; };\n\t\tC7CF9B5917498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingDefaults.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4C17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingDefaults.json */; };\n\t\tC7CF9B5A17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingDefaults.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4C17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingDefaults.json */; };\n\t\tC7CF9B5B17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4D17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json */; };\n\t\tC7CF9B5C17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4D17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json */; };\n\t\tC7CF9B5D17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4E17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json */; };\n\t\tC7CF9B5E17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4E17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json */; };\n\t\tC7CF9B5F17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4F17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json */; };\n\t\tC7CF9B6017498985008D9D13 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B4F17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json */; };\n\t\tC7CF9B6117498985008D9D13 /* SingleEntityWithNoRelationships.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5017498985008D9D13 /* SingleEntityWithNoRelationships.json */; };\n\t\tC7CF9B6217498985008D9D13 /* SingleEntityWithNoRelationships.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5017498985008D9D13 /* SingleEntityWithNoRelationships.json */; };\n\t\tC7CF9B6317498986008D9D13 /* SingleEntityWithNoRelationships.plist in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5117498985008D9D13 /* SingleEntityWithNoRelationships.plist */; };\n\t\tC7CF9B6417498986008D9D13 /* SingleEntityWithNoRelationships.plist in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5117498985008D9D13 /* SingleEntityWithNoRelationships.plist */; };\n\t\tC7CF9B6517498986008D9D13 /* SingleRelatedEntity.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5217498985008D9D13 /* SingleRelatedEntity.json */; };\n\t\tC7CF9B6617498986008D9D13 /* SingleRelatedEntity.json in Resources */ = {isa = PBXBuildFile; fileRef = C7CF9B5217498985008D9D13 /* SingleRelatedEntity.json */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t37CA2611229FEB7000EAB9F6 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C721C7A213D0A3750097AB6F /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 37CA2606229FEB7000EAB9F6;\n\t\t\tremoteInfo = \"MagicalRecord for tvOS\";\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\t3790058622BB78240087D3FC /* Copy Frameworks */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 7;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tname = \"Copy Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t9004F5791A94D7C500A61312 /* Copy Frameworks */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t\t9004F57A1A94D7D300A61312 /* MagicalRecord.framework in Copy Frameworks */,\n\t\t\t);\n\t\t\tname = \"Copy Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t9004F57B1A94D7DC00A61312 /* Copy Frameworks */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t\t9004F57D1A94D7F100A61312 /* MagicalRecord.framework in Copy Frameworks */,\n\t\t\t);\n\t\t\tname = \"Copy Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t907DAC031AFB24A5003D7BB4 /* Copy Frameworks */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tname = \"Copy Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t907DAC051AFB24B8003D7BB4 /* Copy Frameworks */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tname = \"Copy Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC7CF97A917498414008D9D13 /* CopyFiles */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"include/${PRODUCT_NAME}\";\n\t\t\tdstSubfolderSpec = 16;\n\t\t\tfiles = (\n\t\t\t\t1352E5841B175E6200182E53 /* MagicalRecord.h in CopyFiles */,\n\t\t\t\t1352E5851B175E6200182E53 /* MagicalImportFunctions.h in CopyFiles */,\n\t\t\t\t1352E5861B175E6200182E53 /* NSAttributeDescription+MagicalDataImport.h in CopyFiles */,\n\t\t\t\t1352E5871B175E6200182E53 /* NSEntityDescription+MagicalDataImport.h in CopyFiles */,\n\t\t\t\t1352E5881B175E6200182E53 /* NSNumber+MagicalDataImport.h in CopyFiles */,\n\t\t\t\t1352E5891B175E6200182E53 /* NSObject+MagicalDataImport.h in CopyFiles */,\n\t\t\t\t1352E58A1B175E6200182E53 /* NSRelationshipDescription+MagicalDataImport.h in CopyFiles */,\n\t\t\t\t1352E58B1B175E6200182E53 /* NSString+MagicalDataImport.h in CopyFiles */,\n\t\t\t\t1352E58C1B175E6200182E53 /* NSManagedObject+MagicalAggregation.h in CopyFiles */,\n\t\t\t\t1352E58D1B175E6200182E53 /* NSManagedObject+MagicalDataImport.h in CopyFiles */,\n\t\t\t\t1352E58E1B175E6200182E53 /* NSManagedObject+MagicalFinders.h in CopyFiles */,\n\t\t\t\t1352E58F1B175E6200182E53 /* NSManagedObject+MagicalRecord.h in CopyFiles */,\n\t\t\t\t1352E5901B175E6200182E53 /* NSManagedObject+MagicalRequests.h in CopyFiles */,\n\t\t\t\t1352E5911B175E6200182E53 /* NSManagedObjectContext+MagicalChainSave.h in CopyFiles */,\n\t\t\t\t1352E5921B175E6200182E53 /* NSManagedObjectContext+MagicalObserving.h in CopyFiles */,\n\t\t\t\t1352E5931B175E6200182E53 /* NSManagedObjectContext+MagicalRecord.h in CopyFiles */,\n\t\t\t\t1352E5941B175E6200182E53 /* NSManagedObjectContext+MagicalSaves.h in CopyFiles */,\n\t\t\t\t1352E5951B175E6200182E53 /* NSManagedObjectContext+MagicalThreading.h in CopyFiles */,\n\t\t\t\t1352E5961B175E6200182E53 /* NSManagedObjectModel+MagicalRecord.h in CopyFiles */,\n\t\t\t\t1352E5971B175E6200182E53 /* NSPersistentStore+MagicalRecord.h in CopyFiles */,\n\t\t\t\t1352E5981B175E6200182E53 /* NSPersistentStoreCoordinator+MagicalRecord.h in CopyFiles */,\n\t\t\t\t1352E5991B175E6200182E53 /* MagicalRecord+Actions.h in CopyFiles */,\n\t\t\t\t1352E59A1B175E6200182E53 /* MagicalRecord+ErrorHandling.h in CopyFiles */,\n\t\t\t\t1352E59B1B175E6200182E53 /* MagicalRecord+iCloud.h in CopyFiles */,\n\t\t\t\t1352E59C1B175E6200182E53 /* MagicalRecord+Options.h in CopyFiles */,\n\t\t\t\t1352E59D1B175E6200182E53 /* MagicalRecord+Setup.h in CopyFiles */,\n\t\t\t\t1352E59E1B175E6200182E53 /* MagicalRecord+ShorthandMethods.h in CopyFiles */,\n\t\t\t\t1352E59F1B175E6200182E53 /* MagicalRecordDeprecationMacros.h in CopyFiles */,\n\t\t\t\t1352E5A01B175E6200182E53 /* MagicalRecordInternal.h in CopyFiles */,\n\t\t\t\t1352E5A11B175E6200182E53 /* MagicalRecordLogging.h in CopyFiles */,\n\t\t\t\t1352E5A21B175E6200182E53 /* MagicalRecordShorthandMethodAliases.h in CopyFiles */,\n\t\t\t\t90F829C21B33079D00CE306F /* MagicalRecordXcode7CompatibilityMacros.h in CopyFiles */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t3790044922BB51880087D3FC /* libMagicalRecord.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMagicalRecord.a; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3790045622BB51DD0087D3FC /* libMagicalRecord for tvOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"libMagicalRecord for tvOS Tests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t37CA2607229FEB7000EAB9F6 /* MagicalRecord.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MagicalRecord.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t37CA260F229FEB7000EAB9F6 /* MagicalRecord for tvOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"MagicalRecord for tvOS Tests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t37CA2616229FEB7000EAB9F6 /* MagicalRecordTests-tvOS-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"MagicalRecordTests-tvOS-Info.plist\"; sourceTree = \"<group>\"; };\n\t\t37CF3EAD22BDFEFE00705F72 /* CONTRIBUTING.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CONTRIBUTING.md; sourceTree = SOURCE_ROOT; };\n\t\t37CF3EAE22BDFEFE00705F72 /* CHANGELOG.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = SOURCE_ROOT; };\n\t\t37CF3EAF22BDFEFE00705F72 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = SOURCE_ROOT; };\n\t\t581ECBEB187F63FF00084FEE /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImportMultipleEntitiesWithNoPrimaryKeyTests.m; sourceTree = \"<group>\"; };\n\t\t581ECBF6187F660B00084FEE /* MultipleEntitiesWithNoPrimaryKey.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = MultipleEntitiesWithNoPrimaryKey.json; path = Fixtures/MultipleEntitiesWithNoPrimaryKey.json; sourceTree = \"<group>\"; };\n\t\t9004F5211A94CBCF00A61312 /* MagicalRecord for iOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"MagicalRecord for iOS Tests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t9004F5661A94CBF900A61312 /* MagicalRecord for OS X Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"MagicalRecord for OS X Tests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t9007B1491C5A416500C64F94 /* MagicalRecord+ShorthandTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"MagicalRecord+ShorthandTests.m\"; sourceTree = \"<group>\"; };\n\t\t9021D9E11AFB34D6001C80BA /* MagicalRecordTestHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MagicalRecordTestHelpers.h; path = Tests/Support/MagicalRecordTestHelpers.h; sourceTree = SOURCE_ROOT; };\n\t\t9021D9E21AFB34D6001C80BA /* MagicalRecordTestHelpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MagicalRecordTestHelpers.m; path = Tests/Support/MagicalRecordTestHelpers.m; sourceTree = SOURCE_ROOT; };\n\t\t902CE11E18F6133E0024F47C /* MagicalRecordDeprecationMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MagicalRecordDeprecationMacros.h; sourceTree = \"<group>\"; };\n\t\t902CE12B18F61A2F0024F47C /* MagicalRecord+ActionsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"MagicalRecord+ActionsTests.m\"; sourceTree = \"<group>\"; };\n\t\t902CE13818F61E410024F47C /* NSManagedObjectContext+MagicalSavesTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObjectContext+MagicalSavesTests.m\"; sourceTree = \"<group>\"; };\n\t\t90425379187103D00066DA41 /* MagicalRecordTests-iOS-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"MagicalRecordTests-iOS-Info.plist\"; sourceTree = \"<group>\"; };\n\t\t9042537A187103D00066DA41 /* MagicalRecordTests-iOS-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"MagicalRecordTests-iOS-Prefix.pch\"; sourceTree = \"<group>\"; };\n\t\t9042537B187103D00066DA41 /* MagicalRecordTests-OSX-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"MagicalRecordTests-OSX-Info.plist\"; sourceTree = \"<group>\"; };\n\t\t9042537C187103D00066DA41 /* MagicalRecordTests-OSX-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"MagicalRecordTests-OSX-Prefix.pch\"; sourceTree = \"<group>\"; };\n\t\t905D07181A63DE190076B54E /* MagicalRecord.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MagicalRecord.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t905D073B1A63DE690076B54E /* MagicalRecord.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MagicalRecord.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t905D07C91A63DFED0076B54E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t9099490917C2F3D400BC2B5C /* TestModel.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = TestModel.xcdatamodel; sourceTree = \"<group>\"; };\n\t\t9099490D17C2F42100BC2B5C /* _AbstractRelatedEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _AbstractRelatedEntity.h; sourceTree = \"<group>\"; };\n\t\t9099490E17C2F42100BC2B5C /* _AbstractRelatedEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _AbstractRelatedEntity.m; sourceTree = \"<group>\"; };\n\t\t9099490F17C2F42100BC2B5C /* _ConcreteRelatedEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _ConcreteRelatedEntity.h; sourceTree = \"<group>\"; };\n\t\t9099491017C2F42100BC2B5C /* _ConcreteRelatedEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _ConcreteRelatedEntity.m; sourceTree = \"<group>\"; };\n\t\t9099491117C2F42100BC2B5C /* _DifferentClassNameMapping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _DifferentClassNameMapping.h; sourceTree = \"<group>\"; };\n\t\t9099491217C2F42100BC2B5C /* _DifferentClassNameMapping.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _DifferentClassNameMapping.m; sourceTree = \"<group>\"; };\n\t\t9099491317C2F42100BC2B5C /* _MappedEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _MappedEntity.h; sourceTree = \"<group>\"; };\n\t\t9099491417C2F42100BC2B5C /* _MappedEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _MappedEntity.m; sourceTree = \"<group>\"; };\n\t\t9099491517C2F42100BC2B5C /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.h; sourceTree = \"<group>\"; };\n\t\t9099491617C2F42100BC2B5C /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m; sourceTree = \"<group>\"; };\n\t\t9099491717C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _SingleEntityRelatedToMappedEntityUsingDefaults.h; sourceTree = \"<group>\"; };\n\t\t9099491817C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _SingleEntityRelatedToMappedEntityUsingDefaults.m; sourceTree = \"<group>\"; };\n\t\t9099491917C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.h; sourceTree = \"<group>\"; };\n\t\t9099491A17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m; sourceTree = \"<group>\"; };\n\t\t9099491B17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.h; sourceTree = \"<group>\"; };\n\t\t9099491C17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m; sourceTree = \"<group>\"; };\n\t\t9099491D17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _SingleEntityRelatedToMappedEntityWithSecondaryMappings.h; sourceTree = \"<group>\"; };\n\t\t9099491E17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m; sourceTree = \"<group>\"; };\n\t\t9099491F17C2F42100BC2B5C /* _SingleEntityWithNoRelationships.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _SingleEntityWithNoRelationships.h; sourceTree = \"<group>\"; };\n\t\t9099492017C2F42100BC2B5C /* _SingleEntityWithNoRelationships.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _SingleEntityWithNoRelationships.m; sourceTree = \"<group>\"; };\n\t\t9099492117C2F42100BC2B5C /* _SingleRelatedEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _SingleRelatedEntity.h; sourceTree = \"<group>\"; };\n\t\t9099492217C2F42100BC2B5C /* _SingleRelatedEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _SingleRelatedEntity.m; sourceTree = \"<group>\"; };\n\t\t9099492317C2F42100BC2B5C /* AbstractRelatedEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AbstractRelatedEntity.h; sourceTree = \"<group>\"; };\n\t\t9099492417C2F42100BC2B5C /* AbstractRelatedEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AbstractRelatedEntity.m; sourceTree = \"<group>\"; };\n\t\t9099492517C2F42100BC2B5C /* ConcreteRelatedEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConcreteRelatedEntity.h; sourceTree = \"<group>\"; };\n\t\t9099492617C2F42100BC2B5C /* ConcreteRelatedEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConcreteRelatedEntity.m; sourceTree = \"<group>\"; };\n\t\t9099492717C2F42100BC2B5C /* DifferentClassNameMapping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DifferentClassNameMapping.h; sourceTree = \"<group>\"; };\n\t\t9099492817C2F42100BC2B5C /* DifferentClassNameMapping.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DifferentClassNameMapping.m; sourceTree = \"<group>\"; };\n\t\t9099492917C2F42100BC2B5C /* MappedEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MappedEntity.h; sourceTree = \"<group>\"; };\n\t\t9099492A17C2F42100BC2B5C /* MappedEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MappedEntity.m; sourceTree = \"<group>\"; };\n\t\t9099492B17C2F42100BC2B5C /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.h; sourceTree = \"<group>\"; };\n\t\t9099492C17C2F42100BC2B5C /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m; sourceTree = \"<group>\"; };\n\t\t9099492D17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SingleEntityRelatedToMappedEntityUsingDefaults.h; sourceTree = \"<group>\"; };\n\t\t9099492E17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SingleEntityRelatedToMappedEntityUsingDefaults.m; sourceTree = \"<group>\"; };\n\t\t9099492F17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.h; sourceTree = \"<group>\"; };\n\t\t9099493017C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m; sourceTree = \"<group>\"; };\n\t\t9099493117C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.h; sourceTree = \"<group>\"; };\n\t\t9099493217C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m; sourceTree = \"<group>\"; };\n\t\t9099493317C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SingleEntityRelatedToMappedEntityWithSecondaryMappings.h; sourceTree = \"<group>\"; };\n\t\t9099493417C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SingleEntityRelatedToMappedEntityWithSecondaryMappings.m; sourceTree = \"<group>\"; };\n\t\t9099493517C2F42100BC2B5C /* SingleEntityWithNoRelationships.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SingleEntityWithNoRelationships.h; sourceTree = \"<group>\"; };\n\t\t9099493617C2F42100BC2B5C /* SingleEntityWithNoRelationships.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SingleEntityWithNoRelationships.m; sourceTree = \"<group>\"; };\n\t\t9099493717C2F42100BC2B5C /* SingleRelatedEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SingleRelatedEntity.h; sourceTree = \"<group>\"; };\n\t\t9099493817C2F42100BC2B5C /* SingleRelatedEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SingleRelatedEntity.m; sourceTree = \"<group>\"; };\n\t\t90A0DE051C50D59300CF5A5A /* MagicalRecord.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = MagicalRecord.podspec; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };\n\t\t90AA771718F79A3300D49377 /* NSManagedObject+MagicalRecordTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObject+MagicalRecordTests.m\"; sourceTree = \"<group>\"; };\n\t\t90AA772318F79CCC00D49377 /* EntityWithoutEntityNameMethod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EntityWithoutEntityNameMethod.h; sourceTree = \"<group>\"; };\n\t\t90AA772418F79CCC00D49377 /* EntityWithoutEntityNameMethod.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EntityWithoutEntityNameMethod.m; sourceTree = \"<group>\"; };\n\t\t90B05B851B02450900354056 /* MagicalRecordShorthandMethodAliases.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MagicalRecordShorthandMethodAliases.h; sourceTree = \"<group>\"; };\n\t\t90B05B891B02452A00354056 /* MagicalRecord+ShorthandMethods.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"MagicalRecord+ShorthandMethods.h\"; sourceTree = \"<group>\"; };\n\t\t90B05B8A1B02452A00354056 /* MagicalRecord+ShorthandMethods.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"MagicalRecord+ShorthandMethods.m\"; sourceTree = \"<group>\"; };\n\t\t90BB1C3E1864F662001BBFBB /* ImportSingleRelatedEntityTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImportSingleRelatedEntityTests.m; sourceTree = \"<group>\"; };\n\t\t90BB1C4518651539001BBFBB /* MagicalRecordTestBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MagicalRecordTestBase.m; sourceTree = \"<group>\"; };\n\t\t90BB1C481865155B001BBFBB /* MagicalRecordTestBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MagicalRecordTestBase.h; sourceTree = \"<group>\"; };\n\t\t90F829B61B3306DE00CE306F /* MagicalRecordXcode7CompatibilityMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MagicalRecordXcode7CompatibilityMacros.h; sourceTree = \"<group>\"; };\n\t\t90FEC08B18F42DEA002FFC2F /* MagicalRecordLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MagicalRecordLogging.h; sourceTree = \"<group>\"; };\n\t\t9BB566891A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObjectContext+MagicalChainSave.h\"; sourceTree = \"<group>\"; };\n\t\t9BB5668A1A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObjectContext+MagicalChainSave.m\"; sourceTree = \"<group>\"; };\n\t\t9BB566931A2C47B3004174B3 /* NSManagedObjectContext+ChainSaveTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObjectContext+ChainSaveTests.m\"; sourceTree = \"<group>\"; };\n\t\tA07DF19A1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObject+MagicalRequestTests.m\"; sourceTree = \"<group>\"; };\n\t\tC7CF976817498275008D9D13 /* MagicalRecord+StackTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"MagicalRecord+StackTests.m\"; sourceTree = \"<group>\"; };\n\t\tC7CF976A17498275008D9D13 /* NSManagedObjectContextHelperTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSManagedObjectContextHelperTests.m; sourceTree = \"<group>\"; };\n\t\tC7CF976C17498275008D9D13 /* NSManagedObjectHelperTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSManagedObjectHelperTests.m; sourceTree = \"<group>\"; };\n\t\tC7CF977017498275008D9D13 /* NSPersistentStoreHelperTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSPersistentStoreHelperTests.m; sourceTree = \"<group>\"; };\n\t\tC7CF977217498275008D9D13 /* NSPersistentStoreCoordinatorHelperTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSPersistentStoreCoordinatorHelperTests.m; sourceTree = \"<group>\"; };\n\t\tC7CF9786174982AD008D9D13 /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m; sourceTree = \"<group>\"; };\n\t\tC7CF9787174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m; sourceTree = \"<group>\"; };\n\t\tC7CF9788174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m; sourceTree = \"<group>\"; };\n\t\tC7CF9789174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m; sourceTree = \"<group>\"; };\n\t\tC7CF978A174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m; sourceTree = \"<group>\"; };\n\t\tC7CF978B174982AD008D9D13 /* ImportSingleEntityWithNoRelationshipsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImportSingleEntityWithNoRelationshipsTests.m; sourceTree = \"<group>\"; };\n\t\tC7CF978D174982AD008D9D13 /* MagicalDataImportTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MagicalDataImportTestCase.h; sourceTree = \"<group>\"; };\n\t\tC7CF978E174982AD008D9D13 /* MagicalDataImportTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MagicalDataImportTestCase.m; sourceTree = \"<group>\"; };\n\t\tC7CF97AB17498414008D9D13 /* libMagicalRecord.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMagicalRecord.a; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC7CF97BB1749843F008D9D13 /* libMagicalRecord.dylib */ = {isa = PBXFileReference; explicitFileType = \"compiled.mach-o.dylib\"; includeInIndex = 0; path = libMagicalRecord.dylib; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC7CF97FF174984CA008D9D13 /* libMagicalRecord for iOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"libMagicalRecord for iOS Tests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC7CF9816174984E4008D9D13 /* libMagicalRecord for OS X Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"libMagicalRecord for OS X Tests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC7CF9B4917498985008D9D13 /* SampleJSONDataForImport.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = SampleJSONDataForImport.json; path = Fixtures/SampleJSONDataForImport.json; sourceTree = \"<group>\"; };\n\t\tC7CF9B4A17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json; path = Fixtures/SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json; sourceTree = \"<group>\"; };\n\t\tC7CF9B4B17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json; path = Fixtures/SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json; sourceTree = \"<group>\"; };\n\t\tC7CF9B4C17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingDefaults.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = SingleEntityRelatedToMappedEntityUsingDefaults.json; path = Fixtures/SingleEntityRelatedToMappedEntityUsingDefaults.json; sourceTree = \"<group>\"; };\n\t\tC7CF9B4D17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json; path = Fixtures/SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json; sourceTree = \"<group>\"; };\n\t\tC7CF9B4E17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json; path = Fixtures/SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json; sourceTree = \"<group>\"; };\n\t\tC7CF9B4F17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = SingleEntityRelatedToMappedEntityWithSecondaryMappings.json; path = Fixtures/SingleEntityRelatedToMappedEntityWithSecondaryMappings.json; sourceTree = \"<group>\"; };\n\t\tC7CF9B5017498985008D9D13 /* SingleEntityWithNoRelationships.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = SingleEntityWithNoRelationships.json; path = Fixtures/SingleEntityWithNoRelationships.json; sourceTree = \"<group>\"; };\n\t\tC7CF9B5117498985008D9D13 /* SingleEntityWithNoRelationships.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = SingleEntityWithNoRelationships.plist; path = Fixtures/SingleEntityWithNoRelationships.plist; sourceTree = \"<group>\"; };\n\t\tC7CF9B5217498985008D9D13 /* SingleRelatedEntity.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = SingleRelatedEntity.json; path = Fixtures/SingleRelatedEntity.json; sourceTree = \"<group>\"; };\n\t\tC7CF9B6B17498B5C008D9D13 /* FixtureHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FixtureHelpers.h; path = Fixtures/FixtureHelpers.h; sourceTree = \"<group>\"; };\n\t\tC7CF9B6C17498B5C008D9D13 /* FixtureHelpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FixtureHelpers.m; path = Fixtures/FixtureHelpers.m; sourceTree = \"<group>\"; };\n\t\tC7DD729C150F832A00216827 /* MagicalImportFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MagicalImportFunctions.h; sourceTree = \"<group>\"; };\n\t\tC7DD729D150F832A00216827 /* MagicalImportFunctions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MagicalImportFunctions.m; sourceTree = \"<group>\"; };\n\t\tC7DD729E150F832A00216827 /* NSAttributeDescription+MagicalDataImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSAttributeDescription+MagicalDataImport.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD729F150F832A00216827 /* NSAttributeDescription+MagicalDataImport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSAttributeDescription+MagicalDataImport.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72A0150F832A00216827 /* NSEntityDescription+MagicalDataImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSEntityDescription+MagicalDataImport.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72A1150F832A00216827 /* NSEntityDescription+MagicalDataImport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSEntityDescription+MagicalDataImport.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72A2150F832A00216827 /* NSNumber+MagicalDataImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSNumber+MagicalDataImport.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72A3150F832A00216827 /* NSNumber+MagicalDataImport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSNumber+MagicalDataImport.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72A4150F832A00216827 /* NSObject+MagicalDataImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSObject+MagicalDataImport.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72A5150F832A00216827 /* NSObject+MagicalDataImport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSObject+MagicalDataImport.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72A6150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSRelationshipDescription+MagicalDataImport.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72A7150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSRelationshipDescription+MagicalDataImport.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72A8150F832A00216827 /* NSString+MagicalDataImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSString+MagicalDataImport.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72A9150F832A00216827 /* NSString+MagicalDataImport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSString+MagicalDataImport.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72AB150F832A00216827 /* NSManagedObject+MagicalAggregation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObject+MagicalAggregation.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72AC150F832A00216827 /* NSManagedObject+MagicalAggregation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObject+MagicalAggregation.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72AD150F832A00216827 /* NSManagedObject+MagicalDataImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObject+MagicalDataImport.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72AE150F832A00216827 /* NSManagedObject+MagicalDataImport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObject+MagicalDataImport.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72AF150F832A00216827 /* NSManagedObject+MagicalFinders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObject+MagicalFinders.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72B0150F832A00216827 /* NSManagedObject+MagicalFinders.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObject+MagicalFinders.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72B1150F832A00216827 /* NSManagedObject+MagicalRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObject+MagicalRecord.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72B2150F832A00216827 /* NSManagedObject+MagicalRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObject+MagicalRecord.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72B3150F832A00216827 /* NSManagedObject+MagicalRequests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObject+MagicalRequests.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72B4150F832A00216827 /* NSManagedObject+MagicalRequests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObject+MagicalRequests.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72B6150F832A00216827 /* NSManagedObjectContext+MagicalObserving.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObjectContext+MagicalObserving.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72B7150F832A00216827 /* NSManagedObjectContext+MagicalObserving.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObjectContext+MagicalObserving.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72B8150F832A00216827 /* NSManagedObjectContext+MagicalRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObjectContext+MagicalRecord.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72B9150F832A00216827 /* NSManagedObjectContext+MagicalRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObjectContext+MagicalRecord.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72BA150F832A00216827 /* NSManagedObjectContext+MagicalSaves.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObjectContext+MagicalSaves.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72BB150F832A00216827 /* NSManagedObjectContext+MagicalSaves.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObjectContext+MagicalSaves.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72BC150F832A00216827 /* NSManagedObjectContext+MagicalThreading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObjectContext+MagicalThreading.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72BD150F832A00216827 /* NSManagedObjectContext+MagicalThreading.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObjectContext+MagicalThreading.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72BE150F832A00216827 /* NSManagedObjectModel+MagicalRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObjectModel+MagicalRecord.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72BF150F832A00216827 /* NSManagedObjectModel+MagicalRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObjectModel+MagicalRecord.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72C0150F832A00216827 /* NSPersistentStore+MagicalRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSPersistentStore+MagicalRecord.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72C1150F832A00216827 /* NSPersistentStore+MagicalRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSPersistentStore+MagicalRecord.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72C2150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSPersistentStoreCoordinator+MagicalRecord.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72C3150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSPersistentStoreCoordinator+MagicalRecord.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72C5150F832A00216827 /* MagicalRecord+Actions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"MagicalRecord+Actions.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72C6150F832A00216827 /* MagicalRecord+Actions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"MagicalRecord+Actions.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72C7150F832A00216827 /* MagicalRecord+ErrorHandling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"MagicalRecord+ErrorHandling.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72C8150F832A00216827 /* MagicalRecord+ErrorHandling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"MagicalRecord+ErrorHandling.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72C9150F832A00216827 /* MagicalRecord+iCloud.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"MagicalRecord+iCloud.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72CA150F832A00216827 /* MagicalRecord+iCloud.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"MagicalRecord+iCloud.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72CB150F832A00216827 /* MagicalRecord+Options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"MagicalRecord+Options.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72CC150F832A00216827 /* MagicalRecord+Options.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"MagicalRecord+Options.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72CD150F832A00216827 /* MagicalRecord+Setup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"MagicalRecord+Setup.h\"; sourceTree = \"<group>\"; };\n\t\tC7DD72CE150F832A00216827 /* MagicalRecord+Setup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"MagicalRecord+Setup.m\"; sourceTree = \"<group>\"; };\n\t\tC7DD72D1150F832A00216827 /* MagicalRecordInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MagicalRecordInternal.h; sourceTree = \"<group>\"; };\n\t\tC7DD72D2150F832A00216827 /* MagicalRecordInternal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MagicalRecordInternal.m; sourceTree = \"<group>\"; };\n\t\tC7DD72D4150F832A00216827 /* MagicalRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MagicalRecord.h; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3790044622BB51880087D3FC /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t3790045322BB51DD0087D3FC /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3790045B22BB51DD0087D3FC /* libMagicalRecord.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t37CA2604229FEB7000EAB9F6 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t37CA260C229FEB7000EAB9F6 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t37CA2610229FEB7000EAB9F6 /* MagicalRecord.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t9004F50E1A94CBCF00A61312 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t9004F5231A94CBF300A61312 /* MagicalRecord.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t9004F5531A94CBF900A61312 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t9004F5681A94CC0E00A61312 /* MagicalRecord.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t905D07141A63DE190076B54E /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t905D07371A63DE690076B54E /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC7CF97A817498414008D9D13 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC7CF97B81749843F008D9D13 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC7CF97FB174984CA008D9D13 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t9004F4DF1A94C76E00A61312 /* libMagicalRecord.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC7CF9812174984E4008D9D13 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t9004F4DE1A94C76A00A61312 /* libMagicalRecord.dylib in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t902CE13718F61E170024F47C /* Abstract */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t90BB1C481865155B001BBFBB /* MagicalRecordTestBase.h */,\n\t\t\t\t90BB1C4518651539001BBFBB /* MagicalRecordTestBase.m */,\n\t\t\t);\n\t\t\tname = Abstract;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t90425374187102DC0066DA41 /* Support */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t90A0DE051C50D59300CF5A5A /* MagicalRecord.podspec */,\n\t\t\t\t37CF3EAE22BDFEFE00705F72 /* CHANGELOG.md */,\n\t\t\t\t37CF3EAD22BDFEFE00705F72 /* CONTRIBUTING.md */,\n\t\t\t\t37CF3EAF22BDFEFE00705F72 /* README.md */,\n\t\t\t\t905D07C91A63DFED0076B54E /* Info.plist */,\n\t\t\t);\n\t\t\tpath = Support;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t90425378187103D00066DA41 /* Support */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t9021D9E11AFB34D6001C80BA /* MagicalRecordTestHelpers.h */,\n\t\t\t\t9021D9E21AFB34D6001C80BA /* MagicalRecordTestHelpers.m */,\n\t\t\t\t90425379187103D00066DA41 /* MagicalRecordTests-iOS-Info.plist */,\n\t\t\t\t9042537A187103D00066DA41 /* MagicalRecordTests-iOS-Prefix.pch */,\n\t\t\t\t9042537B187103D00066DA41 /* MagicalRecordTests-OSX-Info.plist */,\n\t\t\t\t9042537C187103D00066DA41 /* MagicalRecordTests-OSX-Prefix.pch */,\n\t\t\t\t37CA2616229FEB7000EAB9F6 /* MagicalRecordTests-tvOS-Info.plist */,\n\t\t\t);\n\t\t\tpath = Support;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t9099490C17C2F42100BC2B5C /* TestModel */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t9099490D17C2F42100BC2B5C /* _AbstractRelatedEntity.h */,\n\t\t\t\t9099490E17C2F42100BC2B5C /* _AbstractRelatedEntity.m */,\n\t\t\t\t9099490F17C2F42100BC2B5C /* _ConcreteRelatedEntity.h */,\n\t\t\t\t9099491017C2F42100BC2B5C /* _ConcreteRelatedEntity.m */,\n\t\t\t\t9099491117C2F42100BC2B5C /* _DifferentClassNameMapping.h */,\n\t\t\t\t9099491217C2F42100BC2B5C /* _DifferentClassNameMapping.m */,\n\t\t\t\t9099491317C2F42100BC2B5C /* _MappedEntity.h */,\n\t\t\t\t9099491417C2F42100BC2B5C /* _MappedEntity.m */,\n\t\t\t\t9099491517C2F42100BC2B5C /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.h */,\n\t\t\t\t9099491617C2F42100BC2B5C /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */,\n\t\t\t\t9099491717C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingDefaults.h */,\n\t\t\t\t9099491817C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingDefaults.m */,\n\t\t\t\t9099491917C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.h */,\n\t\t\t\t9099491A17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */,\n\t\t\t\t9099491B17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.h */,\n\t\t\t\t9099491C17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */,\n\t\t\t\t9099491D17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.h */,\n\t\t\t\t9099491E17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */,\n\t\t\t\t9099491F17C2F42100BC2B5C /* _SingleEntityWithNoRelationships.h */,\n\t\t\t\t9099492017C2F42100BC2B5C /* _SingleEntityWithNoRelationships.m */,\n\t\t\t\t9099492117C2F42100BC2B5C /* _SingleRelatedEntity.h */,\n\t\t\t\t9099492217C2F42100BC2B5C /* _SingleRelatedEntity.m */,\n\t\t\t\t9099492317C2F42100BC2B5C /* AbstractRelatedEntity.h */,\n\t\t\t\t9099492417C2F42100BC2B5C /* AbstractRelatedEntity.m */,\n\t\t\t\t9099492517C2F42100BC2B5C /* ConcreteRelatedEntity.h */,\n\t\t\t\t9099492617C2F42100BC2B5C /* ConcreteRelatedEntity.m */,\n\t\t\t\t9099492717C2F42100BC2B5C /* DifferentClassNameMapping.h */,\n\t\t\t\t9099492817C2F42100BC2B5C /* DifferentClassNameMapping.m */,\n\t\t\t\t90AA772318F79CCC00D49377 /* EntityWithoutEntityNameMethod.h */,\n\t\t\t\t90AA772418F79CCC00D49377 /* EntityWithoutEntityNameMethod.m */,\n\t\t\t\t9099492917C2F42100BC2B5C /* MappedEntity.h */,\n\t\t\t\t9099492A17C2F42100BC2B5C /* MappedEntity.m */,\n\t\t\t\t9099492B17C2F42100BC2B5C /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.h */,\n\t\t\t\t9099492C17C2F42100BC2B5C /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m */,\n\t\t\t\t9099492D17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingDefaults.h */,\n\t\t\t\t9099492E17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingDefaults.m */,\n\t\t\t\t9099492F17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.h */,\n\t\t\t\t9099493017C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m */,\n\t\t\t\t9099493117C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.h */,\n\t\t\t\t9099493217C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m */,\n\t\t\t\t9099493317C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.h */,\n\t\t\t\t9099493417C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m */,\n\t\t\t\t9099493517C2F42100BC2B5C /* SingleEntityWithNoRelationships.h */,\n\t\t\t\t9099493617C2F42100BC2B5C /* SingleEntityWithNoRelationships.m */,\n\t\t\t\t9099493717C2F42100BC2B5C /* SingleRelatedEntity.h */,\n\t\t\t\t9099493817C2F42100BC2B5C /* SingleRelatedEntity.m */,\n\t\t\t);\n\t\t\tname = TestModel;\n\t\t\tpath = Fixtures/TestModel;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t90CE059118F62B5B008CC79A /* Abstract */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF978D174982AD008D9D13 /* MagicalDataImportTestCase.h */,\n\t\t\t\tC7CF978E174982AD008D9D13 /* MagicalDataImportTestCase.m */,\n\t\t\t);\n\t\t\tname = Abstract;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC721C7A013D0A3750097AB6F = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7DD7299150F832A00216827 /* MagicalRecord */,\n\t\t\t\tC77E5FA513D0CBA600298F87 /* Tests */,\n\t\t\t\t90425374187102DC0066DA41 /* Support */,\n\t\t\t\tC721C7B113D0A3AF0097AB6F /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC721C7B113D0A3AF0097AB6F /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF97AB17498414008D9D13 /* libMagicalRecord.a */,\n\t\t\t\tC7CF97BB1749843F008D9D13 /* libMagicalRecord.dylib */,\n\t\t\t\tC7CF97FF174984CA008D9D13 /* libMagicalRecord for iOS Tests.xctest */,\n\t\t\t\tC7CF9816174984E4008D9D13 /* libMagicalRecord for OS X Tests.xctest */,\n\t\t\t\t905D07181A63DE190076B54E /* MagicalRecord.framework */,\n\t\t\t\t905D073B1A63DE690076B54E /* MagicalRecord.framework */,\n\t\t\t\t9004F5211A94CBCF00A61312 /* MagicalRecord for iOS Tests.xctest */,\n\t\t\t\t9004F5661A94CBF900A61312 /* MagicalRecord for OS X Tests.xctest */,\n\t\t\t\t37CA2607229FEB7000EAB9F6 /* MagicalRecord.framework */,\n\t\t\t\t37CA260F229FEB7000EAB9F6 /* MagicalRecord for tvOS Tests.xctest */,\n\t\t\t\t3790044922BB51880087D3FC /* libMagicalRecord.a */,\n\t\t\t\t3790045622BB51DD0087D3FC /* libMagicalRecord for tvOS Tests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC77E5FA513D0CBA600298F87 /* Tests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF976617498275008D9D13 /* Core */,\n\t\t\t\tC7CF9785174982AD008D9D13 /* DataImport */,\n\t\t\t\tC77E5FA913D0CBE300298F87 /* Fixtures */,\n\t\t\t\t90425378187103D00066DA41 /* Support */,\n\t\t\t);\n\t\t\tpath = Tests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC77E5FA913D0CBE300298F87 /* Fixtures */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF9B6B17498B5C008D9D13 /* FixtureHelpers.h */,\n\t\t\t\tC7CF9B6C17498B5C008D9D13 /* FixtureHelpers.m */,\n\t\t\t\tC77E5FB113D0D18D00298F87 /* Sample Data Files */,\n\t\t\t\tC77E5FB013D0D18000298F87 /* Sample Models */,\n\t\t\t);\n\t\t\tname = Fixtures;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC77E5FB013D0D18000298F87 /* Sample Models */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t9099490817C2F3D400BC2B5C /* TestModel.xcdatamodeld */,\n\t\t\t\t9099490C17C2F42100BC2B5C /* TestModel */,\n\t\t\t);\n\t\t\tname = \"Sample Models\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC77E5FB113D0D18D00298F87 /* Sample Data Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF9B4917498985008D9D13 /* SampleJSONDataForImport.json */,\n\t\t\t\tC7CF9B4A17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json */,\n\t\t\t\tC7CF9B4B17498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json */,\n\t\t\t\tC7CF9B4C17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingDefaults.json */,\n\t\t\t\tC7CF9B4D17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json */,\n\t\t\t\tC7CF9B4E17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json */,\n\t\t\t\tC7CF9B4F17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json */,\n\t\t\t\tC7CF9B5017498985008D9D13 /* SingleEntityWithNoRelationships.json */,\n\t\t\t\t581ECBF6187F660B00084FEE /* MultipleEntitiesWithNoPrimaryKey.json */,\n\t\t\t\tC7CF9B5117498985008D9D13 /* SingleEntityWithNoRelationships.plist */,\n\t\t\t\tC7CF9B5217498985008D9D13 /* SingleRelatedEntity.json */,\n\t\t\t);\n\t\t\tname = \"Sample Data Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF976617498275008D9D13 /* Core */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t902CE13718F61E170024F47C /* Abstract */,\n\t\t\t\t902CE12B18F61A2F0024F47C /* MagicalRecord+ActionsTests.m */,\n\t\t\t\t9007B1491C5A416500C64F94 /* MagicalRecord+ShorthandTests.m */,\n\t\t\t\tC7CF976817498275008D9D13 /* MagicalRecord+StackTests.m */,\n\t\t\t\t90AA771718F79A3300D49377 /* NSManagedObject+MagicalRecordTests.m */,\n\t\t\t\tA07DF19A1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m */,\n\t\t\t\t9BB566931A2C47B3004174B3 /* NSManagedObjectContext+ChainSaveTests.m */,\n\t\t\t\t902CE13818F61E410024F47C /* NSManagedObjectContext+MagicalSavesTests.m */,\n\t\t\t\tC7CF976A17498275008D9D13 /* NSManagedObjectContextHelperTests.m */,\n\t\t\t\tC7CF976C17498275008D9D13 /* NSManagedObjectHelperTests.m */,\n\t\t\t\tC7CF977217498275008D9D13 /* NSPersistentStoreCoordinatorHelperTests.m */,\n\t\t\t\tC7CF977017498275008D9D13 /* NSPersistentStoreHelperTests.m */,\n\t\t\t);\n\t\t\tpath = Core;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF9785174982AD008D9D13 /* DataImport */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t90CE059118F62B5B008CC79A /* Abstract */,\n\t\t\t\t581ECBEB187F63FF00084FEE /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m */,\n\t\t\t\tC7CF9786174982AD008D9D13 /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m */,\n\t\t\t\tC7CF9787174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m */,\n\t\t\t\tC7CF9788174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m */,\n\t\t\t\tC7CF9789174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m */,\n\t\t\t\tC7CF978A174982AD008D9D13 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m */,\n\t\t\t\tC7CF978B174982AD008D9D13 /* ImportSingleEntityWithNoRelationshipsTests.m */,\n\t\t\t\t90BB1C3E1864F662001BBFBB /* ImportSingleRelatedEntityTests.m */,\n\t\t\t);\n\t\t\tpath = DataImport;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7DD7299150F832A00216827 /* MagicalRecord */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7DD72D4150F832A00216827 /* MagicalRecord.h */,\n\t\t\t\tC7DD729A150F832A00216827 /* Categories */,\n\t\t\t\tC7DD72C4150F832A00216827 /* Core */,\n\t\t\t);\n\t\t\tpath = MagicalRecord;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7DD729A150F832A00216827 /* Categories */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7DD729B150F832A00216827 /* DataImport */,\n\t\t\t\tC7DD72AA150F832A00216827 /* NSManagedObject */,\n\t\t\t\tC7DD72B5150F832A00216827 /* NSManagedObjectContext */,\n\t\t\t\tC7DD72BE150F832A00216827 /* NSManagedObjectModel+MagicalRecord.h */,\n\t\t\t\tC7DD72BF150F832A00216827 /* NSManagedObjectModel+MagicalRecord.m */,\n\t\t\t\tC7DD72C0150F832A00216827 /* NSPersistentStore+MagicalRecord.h */,\n\t\t\t\tC7DD72C1150F832A00216827 /* NSPersistentStore+MagicalRecord.m */,\n\t\t\t\tC7DD72C2150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.h */,\n\t\t\t\tC7DD72C3150F832A00216827 /* NSPersistentStoreCoordinator+MagicalRecord.m */,\n\t\t\t);\n\t\t\tpath = Categories;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7DD729B150F832A00216827 /* DataImport */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7DD729C150F832A00216827 /* MagicalImportFunctions.h */,\n\t\t\t\tC7DD729D150F832A00216827 /* MagicalImportFunctions.m */,\n\t\t\t\tC7DD729E150F832A00216827 /* NSAttributeDescription+MagicalDataImport.h */,\n\t\t\t\tC7DD729F150F832A00216827 /* NSAttributeDescription+MagicalDataImport.m */,\n\t\t\t\tC7DD72A0150F832A00216827 /* NSEntityDescription+MagicalDataImport.h */,\n\t\t\t\tC7DD72A1150F832A00216827 /* NSEntityDescription+MagicalDataImport.m */,\n\t\t\t\tC7DD72A2150F832A00216827 /* NSNumber+MagicalDataImport.h */,\n\t\t\t\tC7DD72A3150F832A00216827 /* NSNumber+MagicalDataImport.m */,\n\t\t\t\tC7DD72A4150F832A00216827 /* NSObject+MagicalDataImport.h */,\n\t\t\t\tC7DD72A5150F832A00216827 /* NSObject+MagicalDataImport.m */,\n\t\t\t\tC7DD72A6150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.h */,\n\t\t\t\tC7DD72A7150F832A00216827 /* NSRelationshipDescription+MagicalDataImport.m */,\n\t\t\t\tC7DD72A8150F832A00216827 /* NSString+MagicalDataImport.h */,\n\t\t\t\tC7DD72A9150F832A00216827 /* NSString+MagicalDataImport.m */,\n\t\t\t);\n\t\t\tpath = DataImport;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7DD72AA150F832A00216827 /* NSManagedObject */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7DD72AB150F832A00216827 /* NSManagedObject+MagicalAggregation.h */,\n\t\t\t\tC7DD72AC150F832A00216827 /* NSManagedObject+MagicalAggregation.m */,\n\t\t\t\tC7DD72AD150F832A00216827 /* NSManagedObject+MagicalDataImport.h */,\n\t\t\t\tC7DD72AE150F832A00216827 /* NSManagedObject+MagicalDataImport.m */,\n\t\t\t\tC7DD72AF150F832A00216827 /* NSManagedObject+MagicalFinders.h */,\n\t\t\t\tC7DD72B0150F832A00216827 /* NSManagedObject+MagicalFinders.m */,\n\t\t\t\tC7DD72B1150F832A00216827 /* NSManagedObject+MagicalRecord.h */,\n\t\t\t\tC7DD72B2150F832A00216827 /* NSManagedObject+MagicalRecord.m */,\n\t\t\t\tC7DD72B3150F832A00216827 /* NSManagedObject+MagicalRequests.h */,\n\t\t\t\tC7DD72B4150F832A00216827 /* NSManagedObject+MagicalRequests.m */,\n\t\t\t);\n\t\t\tpath = NSManagedObject;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7DD72B5150F832A00216827 /* NSManagedObjectContext */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t9BB566891A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.h */,\n\t\t\t\t9BB5668A1A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.m */,\n\t\t\t\tC7DD72B6150F832A00216827 /* NSManagedObjectContext+MagicalObserving.h */,\n\t\t\t\tC7DD72B7150F832A00216827 /* NSManagedObjectContext+MagicalObserving.m */,\n\t\t\t\tC7DD72B8150F832A00216827 /* NSManagedObjectContext+MagicalRecord.h */,\n\t\t\t\tC7DD72B9150F832A00216827 /* NSManagedObjectContext+MagicalRecord.m */,\n\t\t\t\tC7DD72BA150F832A00216827 /* NSManagedObjectContext+MagicalSaves.h */,\n\t\t\t\tC7DD72BB150F832A00216827 /* NSManagedObjectContext+MagicalSaves.m */,\n\t\t\t\tC7DD72BC150F832A00216827 /* NSManagedObjectContext+MagicalThreading.h */,\n\t\t\t\tC7DD72BD150F832A00216827 /* NSManagedObjectContext+MagicalThreading.m */,\n\t\t\t);\n\t\t\tpath = NSManagedObjectContext;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7DD72C4150F832A00216827 /* Core */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7DD72C5150F832A00216827 /* MagicalRecord+Actions.h */,\n\t\t\t\tC7DD72C6150F832A00216827 /* MagicalRecord+Actions.m */,\n\t\t\t\tC7DD72C7150F832A00216827 /* MagicalRecord+ErrorHandling.h */,\n\t\t\t\tC7DD72C8150F832A00216827 /* MagicalRecord+ErrorHandling.m */,\n\t\t\t\tC7DD72C9150F832A00216827 /* MagicalRecord+iCloud.h */,\n\t\t\t\tC7DD72CA150F832A00216827 /* MagicalRecord+iCloud.m */,\n\t\t\t\tC7DD72CB150F832A00216827 /* MagicalRecord+Options.h */,\n\t\t\t\tC7DD72CC150F832A00216827 /* MagicalRecord+Options.m */,\n\t\t\t\tC7DD72CD150F832A00216827 /* MagicalRecord+Setup.h */,\n\t\t\t\tC7DD72CE150F832A00216827 /* MagicalRecord+Setup.m */,\n\t\t\t\t90B05B891B02452A00354056 /* MagicalRecord+ShorthandMethods.h */,\n\t\t\t\t90B05B8A1B02452A00354056 /* MagicalRecord+ShorthandMethods.m */,\n\t\t\t\t902CE11E18F6133E0024F47C /* MagicalRecordDeprecationMacros.h */,\n\t\t\t\tC7DD72D1150F832A00216827 /* MagicalRecordInternal.h */,\n\t\t\t\tC7DD72D2150F832A00216827 /* MagicalRecordInternal.m */,\n\t\t\t\t90FEC08B18F42DEA002FFC2F /* MagicalRecordLogging.h */,\n\t\t\t\t90B05B851B02450900354056 /* MagicalRecordShorthandMethodAliases.h */,\n\t\t\t\t90F829B61B3306DE00CE306F /* MagicalRecordXcode7CompatibilityMacros.h */,\n\t\t\t);\n\t\t\tpath = Core;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\t3790058722BB785D0087D3FC /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3790054422BB71BD0087D3FC /* MagicalRecord.h in Headers */,\n\t\t\t\t3790054522BB71D00087D3FC /* MagicalImportFunctions.h in Headers */,\n\t\t\t\t3790054622BB71D00087D3FC /* NSAttributeDescription+MagicalDataImport.h in Headers */,\n\t\t\t\t3790054722BB71D00087D3FC /* NSEntityDescription+MagicalDataImport.h in Headers */,\n\t\t\t\t3790054822BB71D00087D3FC /* NSNumber+MagicalDataImport.h in Headers */,\n\t\t\t\t3790054922BB71D00087D3FC /* NSObject+MagicalDataImport.h in Headers */,\n\t\t\t\t3790054A22BB71D00087D3FC /* NSRelationshipDescription+MagicalDataImport.h in Headers */,\n\t\t\t\t3790054B22BB71D00087D3FC /* NSString+MagicalDataImport.h in Headers */,\n\t\t\t\t3790054C22BB71D00087D3FC /* NSManagedObject+MagicalAggregation.h in Headers */,\n\t\t\t\t3790054D22BB71D00087D3FC /* NSManagedObject+MagicalDataImport.h in Headers */,\n\t\t\t\t3790054E22BB71D00087D3FC /* NSManagedObject+MagicalFinders.h in Headers */,\n\t\t\t\t3790054F22BB71D00087D3FC /* NSManagedObject+MagicalRecord.h in Headers */,\n\t\t\t\t3790055022BB71D00087D3FC /* NSManagedObject+MagicalRequests.h in Headers */,\n\t\t\t\t3790055122BB71D00087D3FC /* NSManagedObjectContext+MagicalChainSave.h in Headers */,\n\t\t\t\t3790055222BB71D00087D3FC /* NSManagedObjectContext+MagicalObserving.h in Headers */,\n\t\t\t\t3790055322BB71D00087D3FC /* NSManagedObjectContext+MagicalRecord.h in Headers */,\n\t\t\t\t3790055422BB71D00087D3FC /* NSManagedObjectContext+MagicalSaves.h in Headers */,\n\t\t\t\t3790055522BB71D00087D3FC /* NSManagedObjectContext+MagicalThreading.h in Headers */,\n\t\t\t\t3790055622BB71D00087D3FC /* NSManagedObjectModel+MagicalRecord.h in Headers */,\n\t\t\t\t3790055722BB71D00087D3FC /* NSPersistentStore+MagicalRecord.h in Headers */,\n\t\t\t\t3790055822BB71D00087D3FC /* NSPersistentStoreCoordinator+MagicalRecord.h in Headers */,\n\t\t\t\t3790055922BB71D00087D3FC /* MagicalRecord+Actions.h in Headers */,\n\t\t\t\t3790055A22BB71D00087D3FC /* MagicalRecord+ErrorHandling.h in Headers */,\n\t\t\t\t3790055B22BB71D00087D3FC /* MagicalRecord+iCloud.h in Headers */,\n\t\t\t\t3790055C22BB71D00087D3FC /* MagicalRecord+Options.h in Headers */,\n\t\t\t\t3790055D22BB71D00087D3FC /* MagicalRecord+Setup.h in Headers */,\n\t\t\t\t3790055E22BB71D00087D3FC /* MagicalRecord+ShorthandMethods.h in Headers */,\n\t\t\t\t3790055F22BB71D00087D3FC /* MagicalRecordDeprecationMacros.h in Headers */,\n\t\t\t\t3790056022BB71D00087D3FC /* MagicalRecordInternal.h in Headers */,\n\t\t\t\t3790056122BB71D00087D3FC /* MagicalRecordLogging.h in Headers */,\n\t\t\t\t3790056222BB71D00087D3FC /* MagicalRecordShorthandMethodAliases.h in Headers */,\n\t\t\t\t3790056322BB71D00087D3FC /* MagicalRecordXcode7CompatibilityMacros.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t37CA2602229FEB7000EAB9F6 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t379004D022BB70070087D3FC /* NSManagedObjectContext+MagicalSaves.h in Headers */,\n\t\t\t\t379004BB22BB6FE40087D3FC /* NSString+MagicalDataImport.h in Headers */,\n\t\t\t\t379004B522BB6FE40087D3FC /* MagicalImportFunctions.h in Headers */,\n\t\t\t\t379004B722BB6FE40087D3FC /* NSEntityDescription+MagicalDataImport.h in Headers */,\n\t\t\t\t379004DD22BB70290087D3FC /* MagicalRecord+Actions.h in Headers */,\n\t\t\t\t379004B822BB6FE40087D3FC /* NSNumber+MagicalDataImport.h in Headers */,\n\t\t\t\t379004E422BB70290087D3FC /* MagicalRecordLogging.h in Headers */,\n\t\t\t\t379004B322BB6F9B0087D3FC /* MagicalRecord.h in Headers */,\n\t\t\t\t379004DE22BB70290087D3FC /* MagicalRecord+ErrorHandling.h in Headers */,\n\t\t\t\t379004D922BB70130087D3FC /* NSPersistentStoreCoordinator+MagicalRecord.h in Headers */,\n\t\t\t\t379004D822BB70130087D3FC /* NSPersistentStore+MagicalRecord.h in Headers */,\n\t\t\t\t379004BA22BB6FE40087D3FC /* NSRelationshipDescription+MagicalDataImport.h in Headers */,\n\t\t\t\t379004C622BB6FF80087D3FC /* NSManagedObject+MagicalRecord.h in Headers */,\n\t\t\t\t379004E122BB70290087D3FC /* MagicalRecord+Setup.h in Headers */,\n\t\t\t\t379004E022BB70290087D3FC /* MagicalRecord+Options.h in Headers */,\n\t\t\t\t379004DF22BB70290087D3FC /* MagicalRecord+iCloud.h in Headers */,\n\t\t\t\t379004E322BB70290087D3FC /* MagicalRecordInternal.h in Headers */,\n\t\t\t\t379004D122BB70070087D3FC /* NSManagedObjectContext+MagicalThreading.h in Headers */,\n\t\t\t\t379004E522BB70290087D3FC /* MagicalRecordShorthandMethodAliases.h in Headers */,\n\t\t\t\t379004C722BB6FF80087D3FC /* NSManagedObject+MagicalRequests.h in Headers */,\n\t\t\t\t379004CD22BB70070087D3FC /* NSManagedObjectContext+MagicalChainSave.h in Headers */,\n\t\t\t\t379004B922BB6FE40087D3FC /* NSObject+MagicalDataImport.h in Headers */,\n\t\t\t\t379004E622BB70290087D3FC /* MagicalRecordXcode7CompatibilityMacros.h in Headers */,\n\t\t\t\t379004B622BB6FE40087D3FC /* NSAttributeDescription+MagicalDataImport.h in Headers */,\n\t\t\t\t379004CE22BB70070087D3FC /* NSManagedObjectContext+MagicalObserving.h in Headers */,\n\t\t\t\t379004C522BB6FF80087D3FC /* NSManagedObject+MagicalFinders.h in Headers */,\n\t\t\t\t379004F122BB70330087D3FC /* MagicalRecord+ShorthandMethods.h in Headers */,\n\t\t\t\t379004D722BB70130087D3FC /* NSManagedObjectModel+MagicalRecord.h in Headers */,\n\t\t\t\t379004C422BB6FF80087D3FC /* NSManagedObject+MagicalDataImport.h in Headers */,\n\t\t\t\t379004E222BB70290087D3FC /* MagicalRecordDeprecationMacros.h in Headers */,\n\t\t\t\t379004CF22BB70070087D3FC /* NSManagedObjectContext+MagicalRecord.h in Headers */,\n\t\t\t\t379004C322BB6FF80087D3FC /* NSManagedObject+MagicalAggregation.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t905D07151A63DE190076B54E /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t905D07641A63DEF40076B54E /* NSManagedObjectContext+MagicalSaves.h in Headers */,\n\t\t\t\t905D075B1A63DEF40076B54E /* NSString+MagicalDataImport.h in Headers */,\n\t\t\t\t90B05B8B1B02452A00354056 /* MagicalRecord+ShorthandMethods.h in Headers */,\n\t\t\t\t905D076B1A63DEF40076B54E /* MagicalRecord+ErrorHandling.h in Headers */,\n\t\t\t\t905D075A1A63DEF40076B54E /* NSObject+MagicalDataImport.h in Headers */,\n\t\t\t\t905D07551A63DEF40076B54E /* MagicalImportFunctions.h in Headers */,\n\t\t\t\t905D07581A63DEF40076B54E /* NSRelationshipDescription+MagicalDataImport.h in Headers */,\n\t\t\t\t905D07731A63DEF40076B54E /* MagicalRecord.h in Headers */,\n\t\t\t\t905D076C1A63DEF40076B54E /* MagicalRecord+iCloud.h in Headers */,\n\t\t\t\t905D07561A63DEF40076B54E /* NSEntityDescription+MagicalDataImport.h in Headers */,\n\t\t\t\t905D07681A63DEF40076B54E /* NSPersistentStoreCoordinator+MagicalRecord.h in Headers */,\n\t\t\t\t905D07671A63DEF40076B54E /* NSPersistentStore+MagicalRecord.h in Headers */,\n\t\t\t\t905D075F1A63DEF40076B54E /* NSManagedObject+MagicalRecord.h in Headers */,\n\t\t\t\t905D076A1A63DEF40076B54E /* MagicalRecord+Actions.h in Headers */,\n\t\t\t\t905D07651A63DEF40076B54E /* NSManagedObjectContext+MagicalThreading.h in Headers */,\n\t\t\t\t90F829B71B3306DE00CE306F /* MagicalRecordXcode7CompatibilityMacros.h in Headers */,\n\t\t\t\t905D07601A63DEF40076B54E /* NSManagedObject+MagicalRequests.h in Headers */,\n\t\t\t\t905D07611A63DEF40076B54E /* NSManagedObjectContext+MagicalChainSave.h in Headers */,\n\t\t\t\t905D07591A63DEF40076B54E /* NSNumber+MagicalDataImport.h in Headers */,\n\t\t\t\t905D076D1A63DEF40076B54E /* MagicalRecord+Options.h in Headers */,\n\t\t\t\t905D07691A63DEF40076B54E /* MagicalRecordInternal.h in Headers */,\n\t\t\t\t90B05B861B02450900354056 /* MagicalRecordShorthandMethodAliases.h in Headers */,\n\t\t\t\t905D07571A63DEF40076B54E /* NSAttributeDescription+MagicalDataImport.h in Headers */,\n\t\t\t\t905D07621A63DEF40076B54E /* NSManagedObjectContext+MagicalObserving.h in Headers */,\n\t\t\t\t905D075E1A63DEF40076B54E /* NSManagedObject+MagicalFinders.h in Headers */,\n\t\t\t\t905D07661A63DEF40076B54E /* NSManagedObjectModel+MagicalRecord.h in Headers */,\n\t\t\t\t905D075D1A63DEF40076B54E /* NSManagedObject+MagicalDataImport.h in Headers */,\n\t\t\t\t905D076E1A63DEF40076B54E /* MagicalRecord+Setup.h in Headers */,\n\t\t\t\t905D07631A63DEF40076B54E /* NSManagedObjectContext+MagicalRecord.h in Headers */,\n\t\t\t\t905D075C1A63DEF40076B54E /* NSManagedObject+MagicalAggregation.h in Headers */,\n\t\t\t\t905D07701A63DEF40076B54E /* MagicalRecordLogging.h in Headers */,\n\t\t\t\t905D07721A63DEF40076B54E /* MagicalRecordDeprecationMacros.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t905D07381A63DE690076B54E /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t905D07831A63DEF40076B54E /* NSManagedObjectContext+MagicalSaves.h in Headers */,\n\t\t\t\t905D077A1A63DEF40076B54E /* NSString+MagicalDataImport.h in Headers */,\n\t\t\t\t90B05B8C1B02452A00354056 /* MagicalRecord+ShorthandMethods.h in Headers */,\n\t\t\t\t905D078A1A63DEF40076B54E /* MagicalRecord+ErrorHandling.h in Headers */,\n\t\t\t\t905D07791A63DEF40076B54E /* NSObject+MagicalDataImport.h in Headers */,\n\t\t\t\t905D07741A63DEF40076B54E /* MagicalImportFunctions.h in Headers */,\n\t\t\t\t905D078F1A63DEF40076B54E /* MagicalRecordLogging.h in Headers */,\n\t\t\t\t905D07771A63DEF40076B54E /* NSRelationshipDescription+MagicalDataImport.h in Headers */,\n\t\t\t\t905D07921A63DEF40076B54E /* MagicalRecord.h in Headers */,\n\t\t\t\t905D078B1A63DEF40076B54E /* MagicalRecord+iCloud.h in Headers */,\n\t\t\t\t905D07751A63DEF40076B54E /* NSEntityDescription+MagicalDataImport.h in Headers */,\n\t\t\t\t905D07871A63DEF40076B54E /* NSPersistentStoreCoordinator+MagicalRecord.h in Headers */,\n\t\t\t\t905D07861A63DEF40076B54E /* NSPersistentStore+MagicalRecord.h in Headers */,\n\t\t\t\t905D077E1A63DEF40076B54E /* NSManagedObject+MagicalRecord.h in Headers */,\n\t\t\t\t905D07891A63DEF40076B54E /* MagicalRecord+Actions.h in Headers */,\n\t\t\t\t90F829B81B3306DE00CE306F /* MagicalRecordXcode7CompatibilityMacros.h in Headers */,\n\t\t\t\t905D07841A63DEF40076B54E /* NSManagedObjectContext+MagicalThreading.h in Headers */,\n\t\t\t\t905D077F1A63DEF40076B54E /* NSManagedObject+MagicalRequests.h in Headers */,\n\t\t\t\t905D07801A63DEF40076B54E /* NSManagedObjectContext+MagicalChainSave.h in Headers */,\n\t\t\t\t905D07781A63DEF40076B54E /* NSNumber+MagicalDataImport.h in Headers */,\n\t\t\t\t905D078C1A63DEF40076B54E /* MagicalRecord+Options.h in Headers */,\n\t\t\t\t90B05B871B02450900354056 /* MagicalRecordShorthandMethodAliases.h in Headers */,\n\t\t\t\t905D07881A63DEF40076B54E /* MagicalRecordInternal.h in Headers */,\n\t\t\t\t905D07761A63DEF40076B54E /* NSAttributeDescription+MagicalDataImport.h in Headers */,\n\t\t\t\t905D07811A63DEF40076B54E /* NSManagedObjectContext+MagicalObserving.h in Headers */,\n\t\t\t\t905D077D1A63DEF40076B54E /* NSManagedObject+MagicalFinders.h in Headers */,\n\t\t\t\t905D07851A63DEF40076B54E /* NSManagedObjectModel+MagicalRecord.h in Headers */,\n\t\t\t\t905D077C1A63DEF40076B54E /* NSManagedObject+MagicalDataImport.h in Headers */,\n\t\t\t\t905D078D1A63DEF40076B54E /* MagicalRecord+Setup.h in Headers */,\n\t\t\t\t905D07821A63DEF40076B54E /* NSManagedObjectContext+MagicalRecord.h in Headers */,\n\t\t\t\t905D077B1A63DEF40076B54E /* NSManagedObject+MagicalAggregation.h in Headers */,\n\t\t\t\t905D07911A63DEF40076B54E /* MagicalRecordDeprecationMacros.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC7CF97B91749843F008D9D13 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t1352E5F21B176AF600182E53 /* MagicalRecord.h in Headers */,\n\t\t\t\t1352E5F31B176AF600182E53 /* MagicalImportFunctions.h in Headers */,\n\t\t\t\t1352E5F41B176AF600182E53 /* NSAttributeDescription+MagicalDataImport.h in Headers */,\n\t\t\t\t1352E5F51B176AF600182E53 /* NSEntityDescription+MagicalDataImport.h in Headers */,\n\t\t\t\t1352E5F61B176AF600182E53 /* NSNumber+MagicalDataImport.h in Headers */,\n\t\t\t\t1352E5F71B176AF600182E53 /* NSObject+MagicalDataImport.h in Headers */,\n\t\t\t\t1352E5F81B176AF600182E53 /* NSRelationshipDescription+MagicalDataImport.h in Headers */,\n\t\t\t\t1352E5F91B176AF600182E53 /* NSString+MagicalDataImport.h in Headers */,\n\t\t\t\t1352E5FA1B176AF600182E53 /* NSManagedObject+MagicalAggregation.h in Headers */,\n\t\t\t\t1352E5FB1B176AF600182E53 /* NSManagedObject+MagicalDataImport.h in Headers */,\n\t\t\t\t1352E5FC1B176AF600182E53 /* NSManagedObject+MagicalFinders.h in Headers */,\n\t\t\t\t1352E5FD1B176AF600182E53 /* NSManagedObject+MagicalRecord.h in Headers */,\n\t\t\t\t1352E5FE1B176AF600182E53 /* NSManagedObject+MagicalRequests.h in Headers */,\n\t\t\t\t1352E5FF1B176AF600182E53 /* NSManagedObjectContext+MagicalChainSave.h in Headers */,\n\t\t\t\t1352E6001B176AF600182E53 /* NSManagedObjectContext+MagicalObserving.h in Headers */,\n\t\t\t\t1352E6011B176AF600182E53 /* NSManagedObjectContext+MagicalRecord.h in Headers */,\n\t\t\t\t1352E6021B176AF600182E53 /* NSManagedObjectContext+MagicalSaves.h in Headers */,\n\t\t\t\t1352E6031B176AF600182E53 /* NSManagedObjectContext+MagicalThreading.h in Headers */,\n\t\t\t\t1352E6041B176AF600182E53 /* NSManagedObjectModel+MagicalRecord.h in Headers */,\n\t\t\t\t1352E6051B176AF600182E53 /* NSPersistentStore+MagicalRecord.h in Headers */,\n\t\t\t\t1352E6061B176AF600182E53 /* NSPersistentStoreCoordinator+MagicalRecord.h in Headers */,\n\t\t\t\t1352E6071B176AF600182E53 /* MagicalRecord+Actions.h in Headers */,\n\t\t\t\t1352E6081B176AF600182E53 /* MagicalRecord+ErrorHandling.h in Headers */,\n\t\t\t\t1352E6091B176AF600182E53 /* MagicalRecord+iCloud.h in Headers */,\n\t\t\t\t1352E60A1B176AF600182E53 /* MagicalRecord+Options.h in Headers */,\n\t\t\t\t1352E60B1B176AF600182E53 /* MagicalRecord+Setup.h in Headers */,\n\t\t\t\t1352E60C1B176AF600182E53 /* MagicalRecord+ShorthandMethods.h in Headers */,\n\t\t\t\t1352E60D1B176AF600182E53 /* MagicalRecordDeprecationMacros.h in Headers */,\n\t\t\t\t1352E60E1B176AF700182E53 /* MagicalRecordInternal.h in Headers */,\n\t\t\t\t1352E60F1B176AF700182E53 /* MagicalRecordLogging.h in Headers */,\n\t\t\t\t1352E6101B176AF700182E53 /* MagicalRecordShorthandMethodAliases.h in Headers */,\n\t\t\t\t90F829B91B3306DE00CE306F /* MagicalRecordXcode7CompatibilityMacros.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\t3790044822BB51880087D3FC /* libMagicalRecord for tvOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3790045122BB51880087D3FC /* Build configuration list for PBXNativeTarget \"libMagicalRecord for tvOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3790044522BB51880087D3FC /* Sources */,\n\t\t\t\t3790044622BB51880087D3FC /* Frameworks */,\n\t\t\t\t3790058722BB785D0087D3FC /* Headers */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"libMagicalRecord for tvOS\";\n\t\t\tproductName = \"libMagicalRecord for tvOS\";\n\t\t\tproductReference = 3790044922BB51880087D3FC /* libMagicalRecord.a */;\n\t\t\tproductType = \"com.apple.product-type.library.static\";\n\t\t};\n\t\t3790045522BB51DD0087D3FC /* libMagicalRecord for tvOS Tests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3790045E22BB51DD0087D3FC /* Build configuration list for PBXNativeTarget \"libMagicalRecord for tvOS Tests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3790045222BB51DD0087D3FC /* Sources */,\n\t\t\t\t3790045322BB51DD0087D3FC /* Frameworks */,\n\t\t\t\t3790045422BB51DD0087D3FC /* Resources */,\n\t\t\t\t3790058622BB78240087D3FC /* Copy Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"libMagicalRecord for tvOS Tests\";\n\t\t\tproductName = \"libMagicalRecord for tvOS Tests\";\n\t\t\tproductReference = 3790045622BB51DD0087D3FC /* libMagicalRecord for tvOS Tests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\t37CA2606229FEB7000EAB9F6 /* MagicalRecord for tvOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 37CA2624229FEB7000EAB9F6 /* Build configuration list for PBXNativeTarget \"MagicalRecord for tvOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t37CA2602229FEB7000EAB9F6 /* Headers */,\n\t\t\t\t37CA2603229FEB7000EAB9F6 /* Sources */,\n\t\t\t\t37CA2604229FEB7000EAB9F6 /* Frameworks */,\n\t\t\t\t37CA2605229FEB7000EAB9F6 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"MagicalRecord for tvOS\";\n\t\t\tproductName = \"MagicalRecord for tvOS\";\n\t\t\tproductReference = 37CA2607229FEB7000EAB9F6 /* MagicalRecord.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\t37CA260E229FEB7000EAB9F6 /* MagicalRecord for tvOS Tests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 37CA2625229FEB7000EAB9F6 /* Build configuration list for PBXNativeTarget \"MagicalRecord for tvOS Tests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t37CA260B229FEB7000EAB9F6 /* Sources */,\n\t\t\t\t37CA260C229FEB7000EAB9F6 /* Frameworks */,\n\t\t\t\t37CA260D229FEB7000EAB9F6 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t37CA2612229FEB7000EAB9F6 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"MagicalRecord for tvOS Tests\";\n\t\t\tproductName = \"MagicalRecord for tvOSTests\";\n\t\t\tproductReference = 37CA260F229FEB7000EAB9F6 /* MagicalRecord for tvOS Tests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\t9004F4E01A94CBCF00A61312 /* MagicalRecord for iOS Tests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 9004F51E1A94CBCF00A61312 /* Build configuration list for PBXNativeTarget \"MagicalRecord for iOS Tests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t9004F4E11A94CBCF00A61312 /* Sources */,\n\t\t\t\t9004F50E1A94CBCF00A61312 /* Frameworks */,\n\t\t\t\t9004F5111A94CBCF00A61312 /* Resources */,\n\t\t\t\t9004F5791A94D7C500A61312 /* Copy Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"MagicalRecord for iOS Tests\";\n\t\t\tproductName = MagicalRecordTests;\n\t\t\tproductReference = 9004F5211A94CBCF00A61312 /* MagicalRecord for iOS Tests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\t9004F5251A94CBF900A61312 /* MagicalRecord for OS X Tests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 9004F5631A94CBF900A61312 /* Build configuration list for PBXNativeTarget \"MagicalRecord for OS X Tests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t9004F5261A94CBF900A61312 /* Sources */,\n\t\t\t\t9004F5531A94CBF900A61312 /* Frameworks */,\n\t\t\t\t9004F5561A94CBF900A61312 /* Resources */,\n\t\t\t\t9004F57B1A94D7DC00A61312 /* Copy Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"MagicalRecord for OS X Tests\";\n\t\t\tproductName = \"MagicalRecordTests-OSX\";\n\t\t\tproductReference = 9004F5661A94CBF900A61312 /* MagicalRecord for OS X Tests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\t905D07171A63DE190076B54E /* MagicalRecord for iOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 905D07341A63DE190076B54E /* Build configuration list for PBXNativeTarget \"MagicalRecord for iOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t905D07131A63DE190076B54E /* Sources */,\n\t\t\t\t905D07141A63DE190076B54E /* Frameworks */,\n\t\t\t\t905D07151A63DE190076B54E /* Headers */,\n\t\t\t\t905D07161A63DE190076B54E /* Resources */,\n\t\t\t\t90A0DE281C50E2FD00CF5A5A /* Set Version Information */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"MagicalRecord for iOS\";\n\t\t\tproductName = MagicalRecord;\n\t\t\tproductReference = 905D07181A63DE190076B54E /* MagicalRecord.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\t905D073A1A63DE690076B54E /* MagicalRecord for OS X */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 905D074E1A63DE690076B54E /* Build configuration list for PBXNativeTarget \"MagicalRecord for OS X\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t905D07361A63DE690076B54E /* Sources */,\n\t\t\t\t905D07371A63DE690076B54E /* Frameworks */,\n\t\t\t\t905D07381A63DE690076B54E /* Headers */,\n\t\t\t\t905D07391A63DE690076B54E /* Resources */,\n\t\t\t\t90A0DE291C50E32200CF5A5A /* Set Version Information */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"MagicalRecord for OS X\";\n\t\t\tproductName = \"MagicalRecord OS X\";\n\t\t\tproductReference = 905D073B1A63DE690076B54E /* MagicalRecord.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tC7CF97AA17498414008D9D13 /* libMagicalRecord for iOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C7CF97B417498414008D9D13 /* Build configuration list for PBXNativeTarget \"libMagicalRecord for iOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC7CF97A717498414008D9D13 /* Sources */,\n\t\t\t\tC7CF97A817498414008D9D13 /* Frameworks */,\n\t\t\t\tC7CF97A917498414008D9D13 /* CopyFiles */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"libMagicalRecord for iOS\";\n\t\t\tproductName = libMagicalRecord;\n\t\t\tproductReference = C7CF97AB17498414008D9D13 /* libMagicalRecord.a */;\n\t\t\tproductType = \"com.apple.product-type.library.static\";\n\t\t};\n\t\tC7CF97BA1749843F008D9D13 /* libMagicalRecord for OS X */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C7CF97C31749843F008D9D13 /* Build configuration list for PBXNativeTarget \"libMagicalRecord for OS X\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC7CF97B71749843F008D9D13 /* Sources */,\n\t\t\t\tC7CF97B81749843F008D9D13 /* Frameworks */,\n\t\t\t\tC7CF97B91749843F008D9D13 /* Headers */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"libMagicalRecord for OS X\";\n\t\t\tproductName = libMagicalRecord;\n\t\t\tproductReference = C7CF97BB1749843F008D9D13 /* libMagicalRecord.dylib */;\n\t\t\tproductType = \"com.apple.product-type.library.dynamic\";\n\t\t};\n\t\tC7CF97FE174984CA008D9D13 /* libMagicalRecord for iOS Tests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C7CF980E174984CA008D9D13 /* Build configuration list for PBXNativeTarget \"libMagicalRecord for iOS Tests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC7CF97FA174984CA008D9D13 /* Sources */,\n\t\t\t\tC7CF97FB174984CA008D9D13 /* Frameworks */,\n\t\t\t\tC7CF97FC174984CA008D9D13 /* Resources */,\n\t\t\t\t907DAC031AFB24A5003D7BB4 /* Copy Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"libMagicalRecord for iOS Tests\";\n\t\t\tproductName = MagicalRecordTests;\n\t\t\tproductReference = C7CF97FF174984CA008D9D13 /* libMagicalRecord for iOS Tests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\tC7CF9815174984E4008D9D13 /* libMagicalRecord for OS X Tests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C7CF9823174984E4008D9D13 /* Build configuration list for PBXNativeTarget \"libMagicalRecord for OS X Tests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC7CF9811174984E4008D9D13 /* Sources */,\n\t\t\t\tC7CF9812174984E4008D9D13 /* Frameworks */,\n\t\t\t\tC7CF9813174984E4008D9D13 /* Resources */,\n\t\t\t\t907DAC051AFB24B8003D7BB4 /* Copy Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"libMagicalRecord for OS X Tests\";\n\t\t\tproductName = \"MagicalRecordTests-OSX\";\n\t\t\tproductReference = C7CF9816174984E4008D9D13 /* libMagicalRecord for OS X Tests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tC721C7A213D0A3750097AB6F /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tCLASSPREFIX = MR;\n\t\t\t\tLastUpgradeCheck = 1020;\n\t\t\t\tORGANIZATIONNAME = \"Magical Panda Software LLC\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3790044822BB51880087D3FC = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 10.2.1;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\t3790045522BB51DD0087D3FC = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 10.2.1;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\t37CA2606229FEB7000EAB9F6 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 10.2.1;\n\t\t\t\t\t};\n\t\t\t\t\t37CA260E229FEB7000EAB9F6 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 10.2.1;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\t9004F4E01A94CBCF00A61312 = {\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\t905D07171A63DE190076B54E = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.2;\n\t\t\t\t\t};\n\t\t\t\t\t905D073A1A63DE690076B54E = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.2;\n\t\t\t\t\t};\n\t\t\t\t\tC7CF97FE174984CA008D9D13 = {\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = C721C7A513D0A3750097AB6F /* Build configuration list for PBXProject \"MagicalRecord\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = C721C7A013D0A3750097AB6F;\n\t\t\tproductRefGroup = C721C7B113D0A3AF0097AB6F /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t905D07171A63DE190076B54E /* MagicalRecord for iOS */,\n\t\t\t\t9004F4E01A94CBCF00A61312 /* MagicalRecord for iOS Tests */,\n\t\t\t\t905D073A1A63DE690076B54E /* MagicalRecord for OS X */,\n\t\t\t\t9004F5251A94CBF900A61312 /* MagicalRecord for OS X Tests */,\n\t\t\t\t37CA2606229FEB7000EAB9F6 /* MagicalRecord for tvOS */,\n\t\t\t\t37CA260E229FEB7000EAB9F6 /* MagicalRecord for tvOS Tests */,\n\t\t\t\tC7CF97AA17498414008D9D13 /* libMagicalRecord for iOS */,\n\t\t\t\tC7CF97FE174984CA008D9D13 /* libMagicalRecord for iOS Tests */,\n\t\t\t\tC7CF97BA1749843F008D9D13 /* libMagicalRecord for OS X */,\n\t\t\t\tC7CF9815174984E4008D9D13 /* libMagicalRecord for OS X Tests */,\n\t\t\t\t3790044822BB51880087D3FC /* libMagicalRecord for tvOS */,\n\t\t\t\t3790045522BB51DD0087D3FC /* libMagicalRecord for tvOS Tests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3790045422BB51DD0087D3FC /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t379004AB22BB6F040087D3FC /* SingleEntityRelatedToMappedEntityUsingDefaults.json in Resources */,\n\t\t\t\t379004AF22BB6F040087D3FC /* SingleEntityWithNoRelationships.json in Resources */,\n\t\t\t\t379004A822BB6F040087D3FC /* SampleJSONDataForImport.json in Resources */,\n\t\t\t\t379004AD22BB6F040087D3FC /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json in Resources */,\n\t\t\t\t379004B022BB6F040087D3FC /* MultipleEntitiesWithNoPrimaryKey.json in Resources */,\n\t\t\t\t379004AA22BB6F040087D3FC /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json in Resources */,\n\t\t\t\t379004B122BB6F040087D3FC /* SingleRelatedEntity.json in Resources */,\n\t\t\t\t379004A922BB6F040087D3FC /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json in Resources */,\n\t\t\t\t379004AC22BB6F040087D3FC /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json in Resources */,\n\t\t\t\t379004AE22BB6F040087D3FC /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t37CA2605229FEB7000EAB9F6 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t37CA260D229FEB7000EAB9F6 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3790043E22BB4ABF0087D3FC /* SingleEntityRelatedToMappedEntityUsingDefaults.json in Resources */,\n\t\t\t\t3790044222BB4ACB0087D3FC /* SingleEntityWithNoRelationships.json in Resources */,\n\t\t\t\t3790043B22BB4AB40087D3FC /* SampleJSONDataForImport.json in Resources */,\n\t\t\t\t3790044022BB4AC50087D3FC /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json in Resources */,\n\t\t\t\t3790044322BB4ACF0087D3FC /* MultipleEntitiesWithNoPrimaryKey.json in Resources */,\n\t\t\t\t3790043D22BB4ABC0087D3FC /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json in Resources */,\n\t\t\t\t3790044422BB4AD20087D3FC /* SingleRelatedEntity.json in Resources */,\n\t\t\t\t3790043C22BB4AB80087D3FC /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json in Resources */,\n\t\t\t\t3790043F22BB4AC20087D3FC /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json in Resources */,\n\t\t\t\t3790044122BB4AC80087D3FC /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t9004F5111A94CBCF00A61312 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t9004F5131A94CBCF00A61312 /* SampleJSONDataForImport.json in Resources */,\n\t\t\t\t9004F5141A94CBCF00A61312 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json in Resources */,\n\t\t\t\t9004F5151A94CBCF00A61312 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json in Resources */,\n\t\t\t\t9004F5161A94CBCF00A61312 /* MultipleEntitiesWithNoPrimaryKey.json in Resources */,\n\t\t\t\t9004F5171A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityUsingDefaults.json in Resources */,\n\t\t\t\t9004F5181A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json in Resources */,\n\t\t\t\t9004F5191A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json in Resources */,\n\t\t\t\t9004F51A1A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json in Resources */,\n\t\t\t\t9004F51B1A94CBCF00A61312 /* SingleEntityWithNoRelationships.json in Resources */,\n\t\t\t\t9004F51C1A94CBCF00A61312 /* SingleEntityWithNoRelationships.plist in Resources */,\n\t\t\t\t9004F51D1A94CBCF00A61312 /* SingleRelatedEntity.json in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t9004F5561A94CBF900A61312 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t9004F5581A94CBF900A61312 /* SampleJSONDataForImport.json in Resources */,\n\t\t\t\t9004F5591A94CBF900A61312 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json in Resources */,\n\t\t\t\t9004F55A1A94CBF900A61312 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json in Resources */,\n\t\t\t\t9004F55B1A94CBF900A61312 /* MultipleEntitiesWithNoPrimaryKey.json in Resources */,\n\t\t\t\t9004F55C1A94CBF900A61312 /* SingleEntityRelatedToMappedEntityUsingDefaults.json in Resources */,\n\t\t\t\t9004F55D1A94CBF900A61312 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json in Resources */,\n\t\t\t\t9004F55E1A94CBF900A61312 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json in Resources */,\n\t\t\t\t9004F55F1A94CBF900A61312 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json in Resources */,\n\t\t\t\t9004F5601A94CBF900A61312 /* SingleEntityWithNoRelationships.json in Resources */,\n\t\t\t\t9004F5611A94CBF900A61312 /* SingleEntityWithNoRelationships.plist in Resources */,\n\t\t\t\t9004F5621A94CBF900A61312 /* SingleRelatedEntity.json in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t905D07161A63DE190076B54E /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t905D07391A63DE690076B54E /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC7CF97FC174984CA008D9D13 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC7CF9B5317498985008D9D13 /* SampleJSONDataForImport.json in Resources */,\n\t\t\t\tC7CF9B5517498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json in Resources */,\n\t\t\t\tC7CF9B5717498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json in Resources */,\n\t\t\t\t581ECBF7187F660B00084FEE /* MultipleEntitiesWithNoPrimaryKey.json in Resources */,\n\t\t\t\tC7CF9B5917498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingDefaults.json in Resources */,\n\t\t\t\tC7CF9B5B17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json in Resources */,\n\t\t\t\tC7CF9B5D17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json in Resources */,\n\t\t\t\tC7CF9B5F17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json in Resources */,\n\t\t\t\tC7CF9B6117498985008D9D13 /* SingleEntityWithNoRelationships.json in Resources */,\n\t\t\t\tC7CF9B6317498986008D9D13 /* SingleEntityWithNoRelationships.plist in Resources */,\n\t\t\t\tC7CF9B6517498986008D9D13 /* SingleRelatedEntity.json in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC7CF9813174984E4008D9D13 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC7CF9B5417498985008D9D13 /* SampleJSONDataForImport.json in Resources */,\n\t\t\t\tC7CF9B5617498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json in Resources */,\n\t\t\t\tC7CF9B5817498985008D9D13 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json in Resources */,\n\t\t\t\t581ECBF8187F660B00084FEE /* MultipleEntitiesWithNoPrimaryKey.json in Resources */,\n\t\t\t\tC7CF9B5A17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingDefaults.json in Resources */,\n\t\t\t\tC7CF9B5C17498985008D9D13 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json in Resources */,\n\t\t\t\tC7CF9B5E17498985008D9D13 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json in Resources */,\n\t\t\t\tC7CF9B6017498985008D9D13 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.json in Resources */,\n\t\t\t\tC7CF9B6217498985008D9D13 /* SingleEntityWithNoRelationships.json in Resources */,\n\t\t\t\tC7CF9B6417498986008D9D13 /* SingleEntityWithNoRelationships.plist in Resources */,\n\t\t\t\tC7CF9B6617498986008D9D13 /* SingleRelatedEntity.json in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t90A0DE281C50E2FD00CF5A5A /* Set Version Information */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Set Version Information\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"$SRCROOT/Support/Scripts/set_version_information.sh\\\"\";\n\t\t};\n\t\t90A0DE291C50E32200CF5A5A /* Set Version Information */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Set Version Information\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"$SRCROOT/Support/Scripts/set_version_information.sh\\\"\";\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3790044522BB51880087D3FC /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3790051A22BB70610087D3FC /* NSManagedObjectContext+MagicalChainSave.m in Sources */,\n\t\t\t\t3790050F22BB70610087D3FC /* NSAttributeDescription+MagicalDataImport.m in Sources */,\n\t\t\t\t3790051022BB70610087D3FC /* NSEntityDescription+MagicalDataImport.m in Sources */,\n\t\t\t\t3790051F22BB70610087D3FC /* NSManagedObjectModel+MagicalRecord.m in Sources */,\n\t\t\t\t3790052622BB70610087D3FC /* MagicalRecord+Setup.m in Sources */,\n\t\t\t\t3790051C22BB70610087D3FC /* NSManagedObjectContext+MagicalRecord.m in Sources */,\n\t\t\t\t3790050E22BB70610087D3FC /* MagicalImportFunctions.m in Sources */,\n\t\t\t\t3790051D22BB70610087D3FC /* NSManagedObjectContext+MagicalSaves.m in Sources */,\n\t\t\t\t3790052422BB70610087D3FC /* MagicalRecord+iCloud.m in Sources */,\n\t\t\t\t3790052022BB70610087D3FC /* NSPersistentStore+MagicalRecord.m in Sources */,\n\t\t\t\t3790051322BB70610087D3FC /* NSRelationshipDescription+MagicalDataImport.m in Sources */,\n\t\t\t\t3790051122BB70610087D3FC /* NSNumber+MagicalDataImport.m in Sources */,\n\t\t\t\t3790052222BB70610087D3FC /* MagicalRecord+Actions.m in Sources */,\n\t\t\t\t3790051822BB70610087D3FC /* NSManagedObject+MagicalRecord.m in Sources */,\n\t\t\t\t3790051E22BB70610087D3FC /* NSManagedObjectContext+MagicalThreading.m in Sources */,\n\t\t\t\t3790051522BB70610087D3FC /* NSManagedObject+MagicalAggregation.m in Sources */,\n\t\t\t\t3790051622BB70610087D3FC /* NSManagedObject+MagicalDataImport.m in Sources */,\n\t\t\t\t3790052722BB70610087D3FC /* MagicalRecord+ShorthandMethods.m in Sources */,\n\t\t\t\t3790052322BB70610087D3FC /* MagicalRecord+ErrorHandling.m in Sources */,\n\t\t\t\t3790052122BB70610087D3FC /* NSPersistentStoreCoordinator+MagicalRecord.m in Sources */,\n\t\t\t\t3790058422BB76280087D3FC /* MagicalRecord+Options.m in Sources */,\n\t\t\t\t3790051422BB70610087D3FC /* NSString+MagicalDataImport.m in Sources */,\n\t\t\t\t3790051722BB70610087D3FC /* NSManagedObject+MagicalFinders.m in Sources */,\n\t\t\t\t3790052822BB70610087D3FC /* MagicalRecordInternal.m in Sources */,\n\t\t\t\t3790051922BB70610087D3FC /* NSManagedObject+MagicalRequests.m in Sources */,\n\t\t\t\t3790051B22BB70610087D3FC /* NSManagedObjectContext+MagicalObserving.m in Sources */,\n\t\t\t\t3790051222BB70610087D3FC /* NSObject+MagicalDataImport.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t3790045222BB51DD0087D3FC /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3790049922BB6EF20087D3FC /* _SingleEntityWithNoRelationships.m in Sources */,\n\t\t\t\t3790049222BB6EF20087D3FC /* _DifferentClassNameMapping.m in Sources */,\n\t\t\t\t3790049422BB6EF20087D3FC /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t3790049122BB6EF20087D3FC /* _ConcreteRelatedEntity.m in Sources */,\n\t\t\t\t3790047D22BB6EF20087D3FC /* MagicalRecord+ShorthandTests.m in Sources */,\n\t\t\t\t3790049622BB6EF20087D3FC /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t3790048922BB6EF20087D3FC /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m in Sources */,\n\t\t\t\t379004A022BB6EF20087D3FC /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t3790048E22BB6EF20087D3FC /* ImportSingleRelatedEntityTests.m in Sources */,\n\t\t\t\t3790049322BB6EF20087D3FC /* _MappedEntity.m in Sources */,\n\t\t\t\t379004A322BB6EF20087D3FC /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */,\n\t\t\t\t3790048622BB6EF20087D3FC /* MagicalDataImportTestCase.m in Sources */,\n\t\t\t\t3790048122BB6EF20087D3FC /* NSManagedObjectContext+MagicalSavesTests.m in Sources */,\n\t\t\t\t379004A722BB6EF20087D3FC /* MagicalRecordTestHelpers.m in Sources */,\n\t\t\t\t379004A422BB6EF20087D3FC /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */,\n\t\t\t\t3790048F22BB6EF20087D3FC /* FixtureHelpers.m in Sources */,\n\t\t\t\t3790048722BB6EF20087D3FC /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m in Sources */,\n\t\t\t\t3790049B22BB6EF20087D3FC /* AbstractRelatedEntity.m in Sources */,\n\t\t\t\t3790049E22BB6EF20087D3FC /* EntityWithoutEntityNameMethod.m in Sources */,\n\t\t\t\t3790048A22BB6EF20087D3FC /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m in Sources */,\n\t\t\t\t3790048522BB6EF20087D3FC /* NSPersistentStoreHelperTests.m in Sources */,\n\t\t\t\t3790049A22BB6EF20087D3FC /* _SingleRelatedEntity.m in Sources */,\n\t\t\t\t379004A222BB6EF20087D3FC /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t3790048B22BB6EF20087D3FC /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m in Sources */,\n\t\t\t\t379004B222BB6F100087D3FC /* TestModel.xcdatamodeld in Sources */,\n\t\t\t\t3790048822BB6EF20087D3FC /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m in Sources */,\n\t\t\t\t3790048C22BB6EF20087D3FC /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m in Sources */,\n\t\t\t\t3790049C22BB6EF20087D3FC /* ConcreteRelatedEntity.m in Sources */,\n\t\t\t\t3790049D22BB6EF20087D3FC /* DifferentClassNameMapping.m in Sources */,\n\t\t\t\t379004A622BB6EF20087D3FC /* SingleRelatedEntity.m in Sources */,\n\t\t\t\t3790048D22BB6EF20087D3FC /* ImportSingleEntityWithNoRelationshipsTests.m in Sources */,\n\t\t\t\t3790048222BB6EF20087D3FC /* NSManagedObjectContextHelperTests.m in Sources */,\n\t\t\t\t3790049722BB6EF20087D3FC /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */,\n\t\t\t\t3790048022BB6EF20087D3FC /* NSManagedObjectContext+ChainSaveTests.m in Sources */,\n\t\t\t\t378F22A122BD11690052968D /* NSManagedObject+MagicalRequestTests.m in Sources */,\n\t\t\t\t3790049022BB6EF20087D3FC /* _AbstractRelatedEntity.m in Sources */,\n\t\t\t\t3790048322BB6EF20087D3FC /* NSManagedObjectHelperTests.m in Sources */,\n\t\t\t\t379004A522BB6EF20087D3FC /* SingleEntityWithNoRelationships.m in Sources */,\n\t\t\t\t3790049522BB6EF20087D3FC /* _SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */,\n\t\t\t\t3790047E22BB6EF20087D3FC /* MagicalRecord+StackTests.m in Sources */,\n\t\t\t\t3790047F22BB6EF20087D3FC /* NSManagedObject+MagicalRecordTests.m in Sources */,\n\t\t\t\t3790058522BB763A0087D3FC /* MagicalRecordTestBase.m in Sources */,\n\t\t\t\t3790049822BB6EF20087D3FC /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */,\n\t\t\t\t379004A122BB6EF20087D3FC /* SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */,\n\t\t\t\t3790049F22BB6EF20087D3FC /* MappedEntity.m in Sources */,\n\t\t\t\t3790048422BB6EF20087D3FC /* NSPersistentStoreCoordinatorHelperTests.m in Sources */,\n\t\t\t\t3790047C22BB6EF20087D3FC /* MagicalRecord+ActionsTests.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t37CA2603229FEB7000EAB9F6 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t37CA2644229FEEC200EAB9F6 /* NSManagedObjectContext+MagicalChainSave.m in Sources */,\n\t\t\t\t37CA2639229FEEC200EAB9F6 /* NSAttributeDescription+MagicalDataImport.m in Sources */,\n\t\t\t\t37CA263A229FEEC200EAB9F6 /* NSEntityDescription+MagicalDataImport.m in Sources */,\n\t\t\t\t37CA2649229FEEC200EAB9F6 /* NSManagedObjectModel+MagicalRecord.m in Sources */,\n\t\t\t\t37CA2650229FEEC200EAB9F6 /* MagicalRecord+Setup.m in Sources */,\n\t\t\t\t37CA2646229FEEC200EAB9F6 /* NSManagedObjectContext+MagicalRecord.m in Sources */,\n\t\t\t\t37CA2638229FEEC200EAB9F6 /* MagicalImportFunctions.m in Sources */,\n\t\t\t\t37CA2647229FEEC200EAB9F6 /* NSManagedObjectContext+MagicalSaves.m in Sources */,\n\t\t\t\t37CA264E229FEEC200EAB9F6 /* MagicalRecord+iCloud.m in Sources */,\n\t\t\t\t37CA264A229FEEC200EAB9F6 /* NSPersistentStore+MagicalRecord.m in Sources */,\n\t\t\t\t37CA263D229FEEC200EAB9F6 /* NSRelationshipDescription+MagicalDataImport.m in Sources */,\n\t\t\t\t37CA263B229FEEC200EAB9F6 /* NSNumber+MagicalDataImport.m in Sources */,\n\t\t\t\t37CA264C229FEEC200EAB9F6 /* MagicalRecord+Actions.m in Sources */,\n\t\t\t\t37CA2642229FEEC200EAB9F6 /* NSManagedObject+MagicalRecord.m in Sources */,\n\t\t\t\t37CA2648229FEEC200EAB9F6 /* NSManagedObjectContext+MagicalThreading.m in Sources */,\n\t\t\t\t37CA264F229FEEC200EAB9F6 /* MagicalRecord+Options.m in Sources */,\n\t\t\t\t37CA263F229FEEC200EAB9F6 /* NSManagedObject+MagicalAggregation.m in Sources */,\n\t\t\t\t37CA2640229FEEC200EAB9F6 /* NSManagedObject+MagicalDataImport.m in Sources */,\n\t\t\t\t37CA2651229FEEC200EAB9F6 /* MagicalRecord+ShorthandMethods.m in Sources */,\n\t\t\t\t37CA264D229FEEC200EAB9F6 /* MagicalRecord+ErrorHandling.m in Sources */,\n\t\t\t\t37CA264B229FEEC200EAB9F6 /* NSPersistentStoreCoordinator+MagicalRecord.m in Sources */,\n\t\t\t\t37CA263E229FEEC200EAB9F6 /* NSString+MagicalDataImport.m in Sources */,\n\t\t\t\t37CA2641229FEEC200EAB9F6 /* NSManagedObject+MagicalFinders.m in Sources */,\n\t\t\t\t37CA2652229FEEC200EAB9F6 /* MagicalRecordInternal.m in Sources */,\n\t\t\t\t37CA2643229FEEC200EAB9F6 /* NSManagedObject+MagicalRequests.m in Sources */,\n\t\t\t\t37CA2645229FEEC200EAB9F6 /* NSManagedObjectContext+MagicalObserving.m in Sources */,\n\t\t\t\t37CA263C229FEEC200EAB9F6 /* NSObject+MagicalDataImport.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t37CA260B229FEB7000EAB9F6 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t37CA265F229FEEED00EAB9F6 /* _SingleEntityWithNoRelationships.m in Sources */,\n\t\t\t\t37CA2658229FEEED00EAB9F6 /* _DifferentClassNameMapping.m in Sources */,\n\t\t\t\t37CA265A229FEEED00EAB9F6 /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t37CA2657229FEEED00EAB9F6 /* _ConcreteRelatedEntity.m in Sources */,\n\t\t\t\t37CA262F229FEC4200EAB9F6 /* NSPersistentStoreCoordinatorHelperTests.m in Sources */,\n\t\t\t\t37CA265C229FEEED00EAB9F6 /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t37CA2635229FEC4200EAB9F6 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m in Sources */,\n\t\t\t\t37CA2666229FEEED00EAB9F6 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t37CA2636229FEC4200EAB9F6 /* ImportSingleEntityWithNoRelationshipsTests.m in Sources */,\n\t\t\t\t37CA2659229FEEED00EAB9F6 /* _MappedEntity.m in Sources */,\n\t\t\t\t37CA2669229FEEED00EAB9F6 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */,\n\t\t\t\t37CA2627229FEC4200EAB9F6 /* MagicalRecord+ActionsTests.m in Sources */,\n\t\t\t\t37CA262E229FEC4200EAB9F6 /* NSManagedObjectHelperTests.m in Sources */,\n\t\t\t\t37CA266D229FEEF200EAB9F6 /* MagicalRecordTestHelpers.m in Sources */,\n\t\t\t\t37CA266A229FEEED00EAB9F6 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */,\n\t\t\t\t37CA2655229FEEE300EAB9F6 /* FixtureHelpers.m in Sources */,\n\t\t\t\t37CA2654229FEED900EAB9F6 /* MagicalDataImportTestCase.m in Sources */,\n\t\t\t\t37CA2661229FEEED00EAB9F6 /* AbstractRelatedEntity.m in Sources */,\n\t\t\t\t37CA2664229FEEED00EAB9F6 /* EntityWithoutEntityNameMethod.m in Sources */,\n\t\t\t\t37CA2631229FEC4200EAB9F6 /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m in Sources */,\n\t\t\t\t37CA262D229FEC4200EAB9F6 /* NSManagedObjectContextHelperTests.m in Sources */,\n\t\t\t\t37CA2634229FEC4200EAB9F6 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m in Sources */,\n\t\t\t\t37CA2660229FEEED00EAB9F6 /* _SingleRelatedEntity.m in Sources */,\n\t\t\t\t37CA2668229FEEED00EAB9F6 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t37CA2632229FEC4200EAB9F6 /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m in Sources */,\n\t\t\t\t3790043A22BB49140087D3FC /* TestModel.xcdatamodeld in Sources */,\n\t\t\t\t37CA262A229FEC4200EAB9F6 /* NSManagedObject+MagicalRecordTests.m in Sources */,\n\t\t\t\t37CA2626229FEC1D00EAB9F6 /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m in Sources */,\n\t\t\t\t37CA2662229FEEED00EAB9F6 /* ConcreteRelatedEntity.m in Sources */,\n\t\t\t\t37CA2663229FEEED00EAB9F6 /* DifferentClassNameMapping.m in Sources */,\n\t\t\t\t37CA266C229FEEED00EAB9F6 /* SingleRelatedEntity.m in Sources */,\n\t\t\t\t37CA2637229FEC4200EAB9F6 /* ImportSingleRelatedEntityTests.m in Sources */,\n\t\t\t\t37CA2630229FEC4200EAB9F6 /* NSPersistentStoreHelperTests.m in Sources */,\n\t\t\t\t37CA265D229FEEED00EAB9F6 /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */,\n\t\t\t\t378F22A022BD11680052968D /* NSManagedObject+MagicalRequestTests.m in Sources */,\n\t\t\t\t37CA2653229FEED400EAB9F6 /* MagicalRecordTestBase.m in Sources */,\n\t\t\t\t37CA2656229FEEED00EAB9F6 /* _AbstractRelatedEntity.m in Sources */,\n\t\t\t\t37CA2629229FEC4200EAB9F6 /* MagicalRecord+StackTests.m in Sources */,\n\t\t\t\t37CA266B229FEEED00EAB9F6 /* SingleEntityWithNoRelationships.m in Sources */,\n\t\t\t\t37CA265B229FEEED00EAB9F6 /* _SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */,\n\t\t\t\t37CA262C229FEC4200EAB9F6 /* NSManagedObjectContext+MagicalSavesTests.m in Sources */,\n\t\t\t\t37CA262B229FEC4200EAB9F6 /* NSManagedObjectContext+ChainSaveTests.m in Sources */,\n\t\t\t\t37CA265E229FEEED00EAB9F6 /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */,\n\t\t\t\t37CA2667229FEEED00EAB9F6 /* SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */,\n\t\t\t\t37CA2665229FEEED00EAB9F6 /* MappedEntity.m in Sources */,\n\t\t\t\t37CA2633229FEC4200EAB9F6 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m in Sources */,\n\t\t\t\t37CA2628229FEC4200EAB9F6 /* MagicalRecord+ShorthandTests.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t9004F4E11A94CBCF00A61312 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t9004F4E21A94CBCF00A61312 /* DifferentClassNameMapping.m in Sources */,\n\t\t\t\t9004F4E31A94CBCF00A61312 /* _AbstractRelatedEntity.m in Sources */,\n\t\t\t\t9004F4E41A94CBCF00A61312 /* SingleRelatedEntity.m in Sources */,\n\t\t\t\t9004F4E51A94CBCF00A61312 /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */,\n\t\t\t\t9004F4E61A94CBCF00A61312 /* NSManagedObjectContext+ChainSaveTests.m in Sources */,\n\t\t\t\t9004F4E71A94CBCF00A61312 /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t9004F4E81A94CBCF00A61312 /* NSPersistentStoreHelperTests.m in Sources */,\n\t\t\t\t9004F4E91A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t9004F4EA1A94CBCF00A61312 /* _SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */,\n\t\t\t\t9004F4EB1A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */,\n\t\t\t\t9004F4EC1A94CBCF00A61312 /* NSManagedObjectHelperTests.m in Sources */,\n\t\t\t\t9004F4ED1A94CBCF00A61312 /* ConcreteRelatedEntity.m in Sources */,\n\t\t\t\t9004F4EE1A94CBCF00A61312 /* MagicalDataImportTestCase.m in Sources */,\n\t\t\t\t9021D9E31AFB34D6001C80BA /* MagicalRecordTestHelpers.m in Sources */,\n\t\t\t\t9004F4EF1A94CBCF00A61312 /* AbstractRelatedEntity.m in Sources */,\n\t\t\t\t9004F4F01A94CBCF00A61312 /* MappedEntity.m in Sources */,\n\t\t\t\t9004F4F11A94CBCF00A61312 /* MagicalRecordTestBase.m in Sources */,\n\t\t\t\t9004F4F21A94CBCF00A61312 /* _SingleRelatedEntity.m in Sources */,\n\t\t\t\t9004F4F31A94CBCF00A61312 /* ImportSingleEntityWithNoRelationshipsTests.m in Sources */,\n\t\t\t\t9004F4F41A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */,\n\t\t\t\t9004F4F51A94CBCF00A61312 /* EntityWithoutEntityNameMethod.m in Sources */,\n\t\t\t\t9004F4F61A94CBCF00A61312 /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m in Sources */,\n\t\t\t\t9004F4F71A94CBCF00A61312 /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m in Sources */,\n\t\t\t\t9004F4F81A94CBCF00A61312 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m in Sources */,\n\t\t\t\t9004F4F91A94CBCF00A61312 /* NSPersistentStoreCoordinatorHelperTests.m in Sources */,\n\t\t\t\t9007B14A1C5A416500C64F94 /* MagicalRecord+ShorthandTests.m in Sources */,\n\t\t\t\t9004F4FA1A94CBCF00A61312 /* NSManagedObjectContextHelperTests.m in Sources */,\n\t\t\t\t9004F4FB1A94CBCF00A61312 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m in Sources */,\n\t\t\t\t9004F4FC1A94CBCF00A61312 /* _SingleEntityWithNoRelationships.m in Sources */,\n\t\t\t\t9004F4FD1A94CBCF00A61312 /* FixtureHelpers.m in Sources */,\n\t\t\t\t9004F4FE1A94CBCF00A61312 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m in Sources */,\n\t\t\t\t9004F4FF1A94CBCF00A61312 /* TestModel.xcdatamodeld in Sources */,\n\t\t\t\t9004F5001A94CBCF00A61312 /* NSManagedObjectContext+MagicalSavesTests.m in Sources */,\n\t\t\t\t9004F5011A94CBCF00A61312 /* SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */,\n\t\t\t\tA07DF19B1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m in Sources */,\n\t\t\t\t9004F5021A94CBCF00A61312 /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t9004F5031A94CBCF00A61312 /* ImportSingleRelatedEntityTests.m in Sources */,\n\t\t\t\t9004F5041A94CBCF00A61312 /* MagicalRecord+ActionsTests.m in Sources */,\n\t\t\t\t9004F5051A94CBCF00A61312 /* NSManagedObject+MagicalRecordTests.m in Sources */,\n\t\t\t\t9004F5061A94CBCF00A61312 /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m in Sources */,\n\t\t\t\t9004F5071A94CBCF00A61312 /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */,\n\t\t\t\t9004F5081A94CBCF00A61312 /* MagicalRecord+StackTests.m in Sources */,\n\t\t\t\t9004F5091A94CBCF00A61312 /* _MappedEntity.m in Sources */,\n\t\t\t\t9004F50A1A94CBCF00A61312 /* _DifferentClassNameMapping.m in Sources */,\n\t\t\t\t9004F50B1A94CBCF00A61312 /* _ConcreteRelatedEntity.m in Sources */,\n\t\t\t\t9004F50C1A94CBCF00A61312 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t9004F50D1A94CBCF00A61312 /* SingleEntityWithNoRelationships.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t9004F5261A94CBF900A61312 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t9004F5271A94CBF900A61312 /* DifferentClassNameMapping.m in Sources */,\n\t\t\t\t9004F5281A94CBF900A61312 /* _AbstractRelatedEntity.m in Sources */,\n\t\t\t\t9004F5291A94CBF900A61312 /* SingleRelatedEntity.m in Sources */,\n\t\t\t\t9004F52A1A94CBF900A61312 /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */,\n\t\t\t\t9004F52B1A94CBF900A61312 /* NSManagedObjectContext+ChainSaveTests.m in Sources */,\n\t\t\t\t9004F52C1A94CBF900A61312 /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t9004F52D1A94CBF900A61312 /* NSPersistentStoreHelperTests.m in Sources */,\n\t\t\t\t9004F52E1A94CBF900A61312 /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t9004F52F1A94CBF900A61312 /* _SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */,\n\t\t\t\t9004F5301A94CBF900A61312 /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */,\n\t\t\t\t9004F5311A94CBF900A61312 /* NSManagedObjectHelperTests.m in Sources */,\n\t\t\t\t9004F5321A94CBF900A61312 /* ConcreteRelatedEntity.m in Sources */,\n\t\t\t\t9004F5331A94CBF900A61312 /* MagicalDataImportTestCase.m in Sources */,\n\t\t\t\t9021D9E41AFB34D6001C80BA /* MagicalRecordTestHelpers.m in Sources */,\n\t\t\t\t9004F5341A94CBF900A61312 /* AbstractRelatedEntity.m in Sources */,\n\t\t\t\t9004F5351A94CBF900A61312 /* MappedEntity.m in Sources */,\n\t\t\t\t9004F5361A94CBF900A61312 /* MagicalRecordTestBase.m in Sources */,\n\t\t\t\t9004F5371A94CBF900A61312 /* _SingleRelatedEntity.m in Sources */,\n\t\t\t\t9004F5381A94CBF900A61312 /* ImportSingleEntityWithNoRelationshipsTests.m in Sources */,\n\t\t\t\t9004F5391A94CBF900A61312 /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */,\n\t\t\t\t9004F53A1A94CBF900A61312 /* EntityWithoutEntityNameMethod.m in Sources */,\n\t\t\t\t9004F53B1A94CBF900A61312 /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m in Sources */,\n\t\t\t\t9004F53C1A94CBF900A61312 /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m in Sources */,\n\t\t\t\t9004F53D1A94CBF900A61312 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m in Sources */,\n\t\t\t\t9004F53E1A94CBF900A61312 /* NSPersistentStoreCoordinatorHelperTests.m in Sources */,\n\t\t\t\t9007B14B1C5A416500C64F94 /* MagicalRecord+ShorthandTests.m in Sources */,\n\t\t\t\t9004F53F1A94CBF900A61312 /* NSManagedObjectContextHelperTests.m in Sources */,\n\t\t\t\t9004F5401A94CBF900A61312 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m in Sources */,\n\t\t\t\t9004F5411A94CBF900A61312 /* _SingleEntityWithNoRelationships.m in Sources */,\n\t\t\t\t9004F5421A94CBF900A61312 /* FixtureHelpers.m in Sources */,\n\t\t\t\t9004F5431A94CBF900A61312 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m in Sources */,\n\t\t\t\t9004F5441A94CBF900A61312 /* TestModel.xcdatamodeld in Sources */,\n\t\t\t\t9004F5451A94CBF900A61312 /* NSManagedObjectContext+MagicalSavesTests.m in Sources */,\n\t\t\t\t9004F5461A94CBF900A61312 /* SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */,\n\t\t\t\tA07DF19C1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m in Sources */,\n\t\t\t\t9004F5471A94CBF900A61312 /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t9004F5481A94CBF900A61312 /* ImportSingleRelatedEntityTests.m in Sources */,\n\t\t\t\t9004F5491A94CBF900A61312 /* MagicalRecord+ActionsTests.m in Sources */,\n\t\t\t\t9004F54A1A94CBF900A61312 /* NSManagedObject+MagicalRecordTests.m in Sources */,\n\t\t\t\t9004F54B1A94CBF900A61312 /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m in Sources */,\n\t\t\t\t9004F54C1A94CBF900A61312 /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */,\n\t\t\t\t9004F54D1A94CBF900A61312 /* MagicalRecord+StackTests.m in Sources */,\n\t\t\t\t9004F54E1A94CBF900A61312 /* _MappedEntity.m in Sources */,\n\t\t\t\t9004F54F1A94CBF900A61312 /* _DifferentClassNameMapping.m in Sources */,\n\t\t\t\t9004F5501A94CBF900A61312 /* _ConcreteRelatedEntity.m in Sources */,\n\t\t\t\t9004F5511A94CBF900A61312 /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t9004F5521A94CBF900A61312 /* SingleEntityWithNoRelationships.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t905D07131A63DE190076B54E /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t905D079F1A63DF120076B54E /* NSManagedObjectContext+MagicalChainSave.m in Sources */,\n\t\t\t\t905D07AA1A63DF120076B54E /* MagicalRecord+iCloud.m in Sources */,\n\t\t\t\t905D07951A63DF120076B54E /* NSAttributeDescription+MagicalDataImport.m in Sources */,\n\t\t\t\t905D07AC1A63DF120076B54E /* MagicalRecord+Setup.m in Sources */,\n\t\t\t\t905D07961A63DF120076B54E /* NSRelationshipDescription+MagicalDataImport.m in Sources */,\n\t\t\t\t905D07A41A63DF120076B54E /* NSManagedObjectModel+MagicalRecord.m in Sources */,\n\t\t\t\t905D07A71A63DF120076B54E /* MagicalRecordInternal.m in Sources */,\n\t\t\t\t905D07A81A63DF120076B54E /* MagicalRecord+Actions.m in Sources */,\n\t\t\t\t905D07AB1A63DF120076B54E /* MagicalRecord+Options.m in Sources */,\n\t\t\t\t905D07A11A63DF120076B54E /* NSManagedObjectContext+MagicalRecord.m in Sources */,\n\t\t\t\t905D07971A63DF120076B54E /* NSNumber+MagicalDataImport.m in Sources */,\n\t\t\t\t905D07A91A63DF120076B54E /* MagicalRecord+ErrorHandling.m in Sources */,\n\t\t\t\t905D07A21A63DF120076B54E /* NSManagedObjectContext+MagicalSaves.m in Sources */,\n\t\t\t\t90B05B8E1B02452A00354056 /* MagicalRecord+ShorthandMethods.m in Sources */,\n\t\t\t\t905D07A51A63DF120076B54E /* NSPersistentStore+MagicalRecord.m in Sources */,\n\t\t\t\t905D07941A63DF120076B54E /* NSEntityDescription+MagicalDataImport.m in Sources */,\n\t\t\t\t905D07931A63DF120076B54E /* MagicalImportFunctions.m in Sources */,\n\t\t\t\t905D079D1A63DF120076B54E /* NSManagedObject+MagicalRecord.m in Sources */,\n\t\t\t\t905D07A31A63DF120076B54E /* NSManagedObjectContext+MagicalThreading.m in Sources */,\n\t\t\t\t905D079A1A63DF120076B54E /* NSManagedObject+MagicalAggregation.m in Sources */,\n\t\t\t\t905D079B1A63DF120076B54E /* NSManagedObject+MagicalDataImport.m in Sources */,\n\t\t\t\t905D07A61A63DF120076B54E /* NSPersistentStoreCoordinator+MagicalRecord.m in Sources */,\n\t\t\t\t905D07991A63DF120076B54E /* NSString+MagicalDataImport.m in Sources */,\n\t\t\t\t905D079C1A63DF120076B54E /* NSManagedObject+MagicalFinders.m in Sources */,\n\t\t\t\t905D079E1A63DF120076B54E /* NSManagedObject+MagicalRequests.m in Sources */,\n\t\t\t\t905D07A01A63DF120076B54E /* NSManagedObjectContext+MagicalObserving.m in Sources */,\n\t\t\t\t905D07981A63DF120076B54E /* NSObject+MagicalDataImport.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t905D07361A63DE690076B54E /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t905D07BA1A63DF130076B54E /* NSManagedObjectContext+MagicalChainSave.m in Sources */,\n\t\t\t\t905D07C51A63DF130076B54E /* MagicalRecord+iCloud.m in Sources */,\n\t\t\t\t905D07B01A63DF130076B54E /* NSAttributeDescription+MagicalDataImport.m in Sources */,\n\t\t\t\t905D07C71A63DF130076B54E /* MagicalRecord+Setup.m in Sources */,\n\t\t\t\t905D07B11A63DF130076B54E /* NSRelationshipDescription+MagicalDataImport.m in Sources */,\n\t\t\t\t905D07BF1A63DF130076B54E /* NSManagedObjectModel+MagicalRecord.m in Sources */,\n\t\t\t\t905D07C21A63DF130076B54E /* MagicalRecordInternal.m in Sources */,\n\t\t\t\t905D07C31A63DF130076B54E /* MagicalRecord+Actions.m in Sources */,\n\t\t\t\t905D07C61A63DF130076B54E /* MagicalRecord+Options.m in Sources */,\n\t\t\t\t905D07BC1A63DF130076B54E /* NSManagedObjectContext+MagicalRecord.m in Sources */,\n\t\t\t\t905D07B21A63DF130076B54E /* NSNumber+MagicalDataImport.m in Sources */,\n\t\t\t\t905D07C41A63DF130076B54E /* MagicalRecord+ErrorHandling.m in Sources */,\n\t\t\t\t905D07BD1A63DF130076B54E /* NSManagedObjectContext+MagicalSaves.m in Sources */,\n\t\t\t\t90B05B8F1B02452A00354056 /* MagicalRecord+ShorthandMethods.m in Sources */,\n\t\t\t\t905D07C01A63DF130076B54E /* NSPersistentStore+MagicalRecord.m in Sources */,\n\t\t\t\t905D07AF1A63DF130076B54E /* NSEntityDescription+MagicalDataImport.m in Sources */,\n\t\t\t\t905D07AE1A63DF130076B54E /* MagicalImportFunctions.m in Sources */,\n\t\t\t\t905D07B81A63DF130076B54E /* NSManagedObject+MagicalRecord.m in Sources */,\n\t\t\t\t905D07BE1A63DF130076B54E /* NSManagedObjectContext+MagicalThreading.m in Sources */,\n\t\t\t\t905D07B51A63DF130076B54E /* NSManagedObject+MagicalAggregation.m in Sources */,\n\t\t\t\t905D07B61A63DF130076B54E /* NSManagedObject+MagicalDataImport.m in Sources */,\n\t\t\t\t905D07C11A63DF130076B54E /* NSPersistentStoreCoordinator+MagicalRecord.m in Sources */,\n\t\t\t\t905D07B41A63DF130076B54E /* NSString+MagicalDataImport.m in Sources */,\n\t\t\t\t905D07B71A63DF130076B54E /* NSManagedObject+MagicalFinders.m in Sources */,\n\t\t\t\t905D07B91A63DF130076B54E /* NSManagedObject+MagicalRequests.m in Sources */,\n\t\t\t\t905D07BB1A63DF130076B54E /* NSManagedObjectContext+MagicalObserving.m in Sources */,\n\t\t\t\t905D07B31A63DF130076B54E /* NSObject+MagicalDataImport.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC7CF97A717498414008D9D13 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC7CF97C617498493008D9D13 /* MagicalImportFunctions.m in Sources */,\n\t\t\t\tC7CF97C717498493008D9D13 /* NSEntityDescription+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF97C817498493008D9D13 /* NSAttributeDescription+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF97C917498493008D9D13 /* NSRelationshipDescription+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF97CA17498493008D9D13 /* NSNumber+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF97CB17498493008D9D13 /* NSObject+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF97CC17498493008D9D13 /* NSString+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF97CD17498493008D9D13 /* NSManagedObject+MagicalAggregation.m in Sources */,\n\t\t\t\tC7CF97CE17498493008D9D13 /* NSManagedObject+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF97CF17498493008D9D13 /* NSManagedObject+MagicalFinders.m in Sources */,\n\t\t\t\tC7CF97D017498493008D9D13 /* NSManagedObject+MagicalRecord.m in Sources */,\n\t\t\t\tC7CF97D117498493008D9D13 /* NSManagedObject+MagicalRequests.m in Sources */,\n\t\t\t\tC7CF97D217498493008D9D13 /* NSManagedObjectContext+MagicalObserving.m in Sources */,\n\t\t\t\t90B05B901B02452A00354056 /* MagicalRecord+ShorthandMethods.m in Sources */,\n\t\t\t\tC7CF97D317498493008D9D13 /* NSManagedObjectContext+MagicalRecord.m in Sources */,\n\t\t\t\tC7CF97D417498493008D9D13 /* NSManagedObjectContext+MagicalSaves.m in Sources */,\n\t\t\t\tC7CF97D517498493008D9D13 /* NSManagedObjectContext+MagicalThreading.m in Sources */,\n\t\t\t\tC7CF97D617498493008D9D13 /* NSManagedObjectModel+MagicalRecord.m in Sources */,\n\t\t\t\t9BB5668C1A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.m in Sources */,\n\t\t\t\tC7CF97D717498493008D9D13 /* NSPersistentStore+MagicalRecord.m in Sources */,\n\t\t\t\tC7CF97D817498493008D9D13 /* NSPersistentStoreCoordinator+MagicalRecord.m in Sources */,\n\t\t\t\tC7CF97D917498493008D9D13 /* MagicalRecordInternal.m in Sources */,\n\t\t\t\tC7CF97DA17498493008D9D13 /* MagicalRecord+Actions.m in Sources */,\n\t\t\t\tC7CF97DB17498493008D9D13 /* MagicalRecord+ErrorHandling.m in Sources */,\n\t\t\t\tC7CF97DC17498493008D9D13 /* MagicalRecord+iCloud.m in Sources */,\n\t\t\t\tC7CF97DD17498493008D9D13 /* MagicalRecord+Options.m in Sources */,\n\t\t\t\tC7CF97DE17498493008D9D13 /* MagicalRecord+Setup.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC7CF97B71749843F008D9D13 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC7CF97E0174984A5008D9D13 /* MagicalImportFunctions.m in Sources */,\n\t\t\t\tC7CF97E1174984A5008D9D13 /* NSEntityDescription+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF97E2174984A5008D9D13 /* NSAttributeDescription+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF97E3174984A5008D9D13 /* NSRelationshipDescription+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF97E4174984A5008D9D13 /* NSNumber+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF97E5174984A5008D9D13 /* NSObject+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF97E6174984A5008D9D13 /* NSString+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF97E7174984A5008D9D13 /* NSManagedObject+MagicalAggregation.m in Sources */,\n\t\t\t\tC7CF97E8174984A5008D9D13 /* NSManagedObject+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF97E9174984A5008D9D13 /* NSManagedObject+MagicalFinders.m in Sources */,\n\t\t\t\tC7CF97EA174984A5008D9D13 /* NSManagedObject+MagicalRecord.m in Sources */,\n\t\t\t\tC7CF97EB174984A5008D9D13 /* NSManagedObject+MagicalRequests.m in Sources */,\n\t\t\t\tC7CF97EC174984A5008D9D13 /* NSManagedObjectContext+MagicalObserving.m in Sources */,\n\t\t\t\t90B05B911B02452A00354056 /* MagicalRecord+ShorthandMethods.m in Sources */,\n\t\t\t\tC7CF97ED174984A5008D9D13 /* NSManagedObjectContext+MagicalRecord.m in Sources */,\n\t\t\t\tC7CF97EE174984A5008D9D13 /* NSManagedObjectContext+MagicalSaves.m in Sources */,\n\t\t\t\tC7CF97EF174984A5008D9D13 /* NSManagedObjectContext+MagicalThreading.m in Sources */,\n\t\t\t\tC7CF97F0174984A5008D9D13 /* NSManagedObjectModel+MagicalRecord.m in Sources */,\n\t\t\t\t9BB5668D1A2C44C4004174B3 /* NSManagedObjectContext+MagicalChainSave.m in Sources */,\n\t\t\t\tC7CF97F1174984A5008D9D13 /* NSPersistentStore+MagicalRecord.m in Sources */,\n\t\t\t\tC7CF97F2174984A5008D9D13 /* NSPersistentStoreCoordinator+MagicalRecord.m in Sources */,\n\t\t\t\tC7CF97F3174984A5008D9D13 /* MagicalRecordInternal.m in Sources */,\n\t\t\t\tC7CF97F4174984A5008D9D13 /* MagicalRecord+Actions.m in Sources */,\n\t\t\t\tC7CF97F5174984A5008D9D13 /* MagicalRecord+ErrorHandling.m in Sources */,\n\t\t\t\tC7CF97F6174984A5008D9D13 /* MagicalRecord+iCloud.m in Sources */,\n\t\t\t\tC7CF97F7174984A5008D9D13 /* MagicalRecord+Options.m in Sources */,\n\t\t\t\tC7CF97F8174984A5008D9D13 /* MagicalRecord+Setup.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC7CF97FA174984CA008D9D13 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t9099495317C2F42100BC2B5C /* DifferentClassNameMapping.m in Sources */,\n\t\t\t\t9099493917C2F42100BC2B5C /* _AbstractRelatedEntity.m in Sources */,\n\t\t\t\t9099496317C2F42100BC2B5C /* SingleRelatedEntity.m in Sources */,\n\t\t\t\t9099494917C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */,\n\t\t\t\t9BB566991A2EA8FF004174B3 /* NSManagedObjectContext+ChainSaveTests.m in Sources */,\n\t\t\t\t9099494117C2F42100BC2B5C /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t90542E241864894D00916224 /* NSPersistentStoreHelperTests.m in Sources */,\n\t\t\t\t9099495B17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t9099494317C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */,\n\t\t\t\t9099495D17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */,\n\t\t\t\t90542E221864861100916224 /* NSManagedObjectHelperTests.m in Sources */,\n\t\t\t\t9099495117C2F42100BC2B5C /* ConcreteRelatedEntity.m in Sources */,\n\t\t\t\t90542E121863F20900916224 /* MagicalDataImportTestCase.m in Sources */,\n\t\t\t\t9021D9E51AFB34D6001C80BA /* MagicalRecordTestHelpers.m in Sources */,\n\t\t\t\t9099494F17C2F42100BC2B5C /* AbstractRelatedEntity.m in Sources */,\n\t\t\t\t9099495517C2F42100BC2B5C /* MappedEntity.m in Sources */,\n\t\t\t\t90BB1C491865159A001BBFBB /* MagicalRecordTestBase.m in Sources */,\n\t\t\t\t9099494D17C2F42100BC2B5C /* _SingleRelatedEntity.m in Sources */,\n\t\t\t\t90542E141863F20C00916224 /* ImportSingleEntityWithNoRelationshipsTests.m in Sources */,\n\t\t\t\t9099495F17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */,\n\t\t\t\t90AA772518F79CCC00D49377 /* EntityWithoutEntityNameMethod.m in Sources */,\n\t\t\t\t90BB1C3A1864F341001BBFBB /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m in Sources */,\n\t\t\t\t581ECBF9187F663100084FEE /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m in Sources */,\n\t\t\t\t90542E1A1864688100916224 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m in Sources */,\n\t\t\t\t90542E2618648AAF00916224 /* NSPersistentStoreCoordinatorHelperTests.m in Sources */,\n\t\t\t\t9007B14C1C5A416500C64F94 /* MagicalRecord+ShorthandTests.m in Sources */,\n\t\t\t\t90542E201864855500916224 /* NSManagedObjectContextHelperTests.m in Sources */,\n\t\t\t\t90542E1C1864691E00916224 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m in Sources */,\n\t\t\t\t9099494B17C2F42100BC2B5C /* _SingleEntityWithNoRelationships.m in Sources */,\n\t\t\t\t90171E1B17C329CC00E7084A /* FixtureHelpers.m in Sources */,\n\t\t\t\t90542E181864438900916224 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m in Sources */,\n\t\t\t\t9099490A17C2F3D400BC2B5C /* TestModel.xcdatamodeld in Sources */,\n\t\t\t\t902CE13918F61E410024F47C /* NSManagedObjectContext+MagicalSavesTests.m in Sources */,\n\t\t\t\t9099495917C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */,\n\t\t\t\tA07DF19D1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m in Sources */,\n\t\t\t\t9099494517C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t90BB1C3F1864F662001BBFBB /* ImportSingleRelatedEntityTests.m in Sources */,\n\t\t\t\t902CE12C18F61A2F0024F47C /* MagicalRecord+ActionsTests.m in Sources */,\n\t\t\t\t90AA771818F79A3300D49377 /* NSManagedObject+MagicalRecordTests.m in Sources */,\n\t\t\t\t90BB1C3C1864F3E9001BBFBB /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m in Sources */,\n\t\t\t\t9099494717C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */,\n\t\t\t\t90542E1E1864853900916224 /* MagicalRecord+StackTests.m in Sources */,\n\t\t\t\t9099493F17C2F42100BC2B5C /* _MappedEntity.m in Sources */,\n\t\t\t\t9099493D17C2F42100BC2B5C /* _DifferentClassNameMapping.m in Sources */,\n\t\t\t\t9099493B17C2F42100BC2B5C /* _ConcreteRelatedEntity.m in Sources */,\n\t\t\t\t9099495717C2F42100BC2B5C /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t9099496117C2F42100BC2B5C /* SingleEntityWithNoRelationships.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC7CF9811174984E4008D9D13 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t9099495417C2F42100BC2B5C /* DifferentClassNameMapping.m in Sources */,\n\t\t\t\t9099493A17C2F42100BC2B5C /* _AbstractRelatedEntity.m in Sources */,\n\t\t\t\t9099496417C2F42100BC2B5C /* SingleRelatedEntity.m in Sources */,\n\t\t\t\t9099494A17C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */,\n\t\t\t\t9BB566981A2EA8F8004174B3 /* NSManagedObjectContext+ChainSaveTests.m in Sources */,\n\t\t\t\t9099494217C2F42100BC2B5C /* _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t90542E251864894D00916224 /* NSPersistentStoreHelperTests.m in Sources */,\n\t\t\t\t9099495C17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t9099494417C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */,\n\t\t\t\t9099495E17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */,\n\t\t\t\t90542E231864861200916224 /* NSManagedObjectHelperTests.m in Sources */,\n\t\t\t\t9099495217C2F42100BC2B5C /* ConcreteRelatedEntity.m in Sources */,\n\t\t\t\t90542E131863F20900916224 /* MagicalDataImportTestCase.m in Sources */,\n\t\t\t\t9021D9E61AFB34D6001C80BA /* MagicalRecordTestHelpers.m in Sources */,\n\t\t\t\t9099495017C2F42100BC2B5C /* AbstractRelatedEntity.m in Sources */,\n\t\t\t\t9099495617C2F42100BC2B5C /* MappedEntity.m in Sources */,\n\t\t\t\t90BB1C4A1865159A001BBFBB /* MagicalRecordTestBase.m in Sources */,\n\t\t\t\t9099494E17C2F42100BC2B5C /* _SingleRelatedEntity.m in Sources */,\n\t\t\t\t90542E151863F20C00916224 /* ImportSingleEntityWithNoRelationshipsTests.m in Sources */,\n\t\t\t\t9099496017C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityWithSecondaryMappings.m in Sources */,\n\t\t\t\t90AA772618F79CCC00D49377 /* EntityWithoutEntityNameMethod.m in Sources */,\n\t\t\t\t90BB1C3B1864F341001BBFBB /* ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m in Sources */,\n\t\t\t\t581ECBFA187F663200084FEE /* ImportMultipleEntitiesWithNoPrimaryKeyTests.m in Sources */,\n\t\t\t\t90542E1B1864688100916224 /* ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m in Sources */,\n\t\t\t\t90542E2718648AB000916224 /* NSPersistentStoreCoordinatorHelperTests.m in Sources */,\n\t\t\t\t9007B14D1C5A416500C64F94 /* MagicalRecord+ShorthandTests.m in Sources */,\n\t\t\t\t90542E211864855500916224 /* NSManagedObjectContextHelperTests.m in Sources */,\n\t\t\t\t90542E1D1864691E00916224 /* ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m in Sources */,\n\t\t\t\t9099494C17C2F42100BC2B5C /* _SingleEntityWithNoRelationships.m in Sources */,\n\t\t\t\t90171E1C17C329CD00E7084A /* FixtureHelpers.m in Sources */,\n\t\t\t\t90542E191864438A00916224 /* ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m in Sources */,\n\t\t\t\t9099490B17C2F3D400BC2B5C /* TestModel.xcdatamodeld in Sources */,\n\t\t\t\t902CE13A18F61E410024F47C /* NSManagedObjectContext+MagicalSavesTests.m in Sources */,\n\t\t\t\t9099495A17C2F42100BC2B5C /* SingleEntityRelatedToMappedEntityUsingDefaults.m in Sources */,\n\t\t\t\tA07DF19E1D4CE66400A07B33 /* NSManagedObject+MagicalRequestTests.m in Sources */,\n\t\t\t\t9099494617C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t90BB1C401864F662001BBFBB /* ImportSingleRelatedEntityTests.m in Sources */,\n\t\t\t\t902CE12D18F61A2F0024F47C /* MagicalRecord+ActionsTests.m in Sources */,\n\t\t\t\t90AA771918F79A3300D49377 /* NSManagedObject+MagicalRecordTests.m in Sources */,\n\t\t\t\t90BB1C3D1864F3E9001BBFBB /* ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m in Sources */,\n\t\t\t\t9099494817C2F42100BC2B5C /* _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m in Sources */,\n\t\t\t\t90542E1F1864853A00916224 /* MagicalRecord+StackTests.m in Sources */,\n\t\t\t\t9099494017C2F42100BC2B5C /* _MappedEntity.m in Sources */,\n\t\t\t\t9099493E17C2F42100BC2B5C /* _DifferentClassNameMapping.m in Sources */,\n\t\t\t\t9099493C17C2F42100BC2B5C /* _ConcreteRelatedEntity.m in Sources */,\n\t\t\t\t9099495817C2F42100BC2B5C /* SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m in Sources */,\n\t\t\t\t9099496217C2F42100BC2B5C /* SingleEntityWithNoRelationships.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t37CA2612229FEB7000EAB9F6 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 37CA2606229FEB7000EAB9F6 /* MagicalRecord for tvOS */;\n\t\t\ttargetProxy = 37CA2611229FEB7000EAB9F6 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3790044F22BB51880087D3FC /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = NO;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tPRODUCT_NAME = \"$(PROJECT_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tSKIP_INSTALL = NO;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3790045022BB51880087D3FC /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = NO;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tPRODUCT_NAME = \"$(PROJECT_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tSKIP_INSTALL = NO;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3790045F22BB51DD0087D3FC /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = NO;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES_AGGRESSIVE;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = \"Tests/Support/MagicalRecordTests-tvOS-Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tMOMC_NO_INVERSE_RELATIONSHIP_WARNINGS = YES;\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tXCTest,\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-all_load\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3790046022BB51DD0087D3FC /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = NO;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES_AGGRESSIVE;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = \"Tests/Support/MagicalRecordTests-tvOS-Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tMOMC_NO_INVERSE_RELATIONSHIP_WARNINGS = YES;\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tXCTest,\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-all_load\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t37CA2618229FEB7000EAB9F6 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = Support/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.magicalpanda.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(PROJECT_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 3;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t37CA2619229FEB7000EAB9F6 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = Support/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.magicalpanda.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(PROJECT_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 3;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t37CA261A229FEB7000EAB9F6 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = \"Tests/Support/MagicalRecordTests-tvOS-Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMOMC_NO_INVERSE_RELATIONSHIP_WARNINGS = YES;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 3;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t37CA261B229FEB7000EAB9F6 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = \"Tests/Support/MagicalRecordTests-tvOS-Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMOMC_NO_INVERSE_RELATIONSHIP_WARNINGS = YES;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 3;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t9004F51F1A94CBCF00A61312 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = \"Tests/Support/MagicalRecordTests-iOS-Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMOMC_NO_INVERSE_RELATIONSHIP_WARNINGS = YES;\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-all_load\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t9004F5201A94CBCF00A61312 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = \"Tests/Support/MagicalRecordTests-iOS-Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMOMC_NO_INVERSE_RELATIONSHIP_WARNINGS = YES;\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-all_load\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t9004F5641A94CBF900A61312 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = \"Tests/Support/MagicalRecordTests-OSX-Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tMOMC_NO_INVERSE_RELATIONSHIP_WARNINGS = YES;\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tXCTest,\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-all_load\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t9004F5651A94CBF900A61312 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = \"Tests/Support/MagicalRecordTests-OSX-Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tMOMC_NO_INVERSE_RELATIONSHIP_WARNINGS = YES;\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tXCTest,\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-all_load\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t905D072B1A63DE190076B54E /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = Support/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tPRODUCT_NAME = \"$(PROJECT_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t905D072C1A63DE190076B54E /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = Support/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tPRODUCT_NAME = \"$(PROJECT_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t905D074F1A63DE690076B54E /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tFRAMEWORK_VERSION = A;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_GENERATE_TEST_COVERAGE_FILES = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = Support/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tPRODUCT_NAME = \"$(PROJECT_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t905D07501A63DE690076B54E /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tFRAMEWORK_VERSION = A;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_GENERATE_TEST_COVERAGE_FILES = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = Support/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tPRODUCT_NAME = \"$(PROJECT_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC721C7A713D0A3750097AB6F /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 2.4.0;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 2.0;\n\t\t\t\tDYLIB_CURRENT_VERSION = \"$(CURRENT_PROJECT_VERSION)\";\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_TREAT_WARNINGS_AS_ERRORS = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;\n\t\t\t\tGCC_WARN_ABOUT_MISSING_NEWLINE = YES;\n\t\t\t\tGCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;\n\t\t\t\tGCC_WARN_SHADOW = YES;\n\t\t\t\tGCC_WARN_SIGN_COMPARE = YES;\n\t\t\t\tGCC_WARN_STRICT_SELECTOR_MATCH = YES;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_LABEL = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.8;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tOTHER_CFLAGS = \"-DDEBUG\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.magicalpanda.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tSTRIP_INSTALLED_PRODUCT = NO;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC721C7A813D0A3750097AB6F /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_ENABLE_CODE_COVERAGE = NO;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = 2.4.0;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 2.0;\n\t\t\t\tDYLIB_CURRENT_VERSION = \"$(CURRENT_PROJECT_VERSION)\";\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_TREAT_WARNINGS_AS_ERRORS = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;\n\t\t\t\tGCC_WARN_ABOUT_MISSING_NEWLINE = YES;\n\t\t\t\tGCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;\n\t\t\t\tGCC_WARN_SHADOW = YES;\n\t\t\t\tGCC_WARN_SIGN_COMPARE = YES;\n\t\t\t\tGCC_WARN_STRICT_SELECTOR_MATCH = YES;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_LABEL = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.8;\n\t\t\t\tOTHER_CFLAGS = \"-DNEBUG\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.magicalpanda.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC7CF97B517498414008D9D13 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDSTROOT = /tmp/libMagicalRecord.dst;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tOTHER_LDFLAGS = \"-ObjC\";\n\t\t\t\tPRODUCT_NAME = \"$(PROJECT_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC7CF97B617498414008D9D13 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tDSTROOT = /tmp/libMagicalRecord.dst;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = NDEBUG;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tOTHER_LDFLAGS = \"-ObjC\";\n\t\t\t\tPRODUCT_NAME = \"$(PROJECT_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC7CF97C41749843F008D9D13 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tEXECUTABLE_PREFIX = lib;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_NAME = \"$(PROJECT_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC7CF97C51749843F008D9D13 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tEXECUTABLE_PREFIX = lib;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tPRODUCT_NAME = \"$(PROJECT_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC7CF980F174984CA008D9D13 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = \"Tests/Support/MagicalRecordTests-iOS-Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/Frameworks\";\n\t\t\t\tMOMC_NO_INVERSE_RELATIONSHIP_WARNINGS = YES;\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-all_load\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC7CF9810174984CA008D9D13 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = \"Tests/Support/MagicalRecordTests-iOS-Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/Frameworks\";\n\t\t\t\tMOMC_NO_INVERSE_RELATIONSHIP_WARNINGS = YES;\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-all_load\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC7CF9824174984E4008D9D13 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = \"Tests/Support/MagicalRecordTests-OSX-Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tMOMC_NO_INVERSE_RELATIONSHIP_WARNINGS = YES;\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tXCTest,\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-all_load\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC7CF9825174984E4008D9D13 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = \"Tests/Support/MagicalRecordTests-OSX-Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tMOMC_NO_INVERSE_RELATIONSHIP_WARNINGS = YES;\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tXCTest,\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-all_load\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3790045122BB51880087D3FC /* Build configuration list for PBXNativeTarget \"libMagicalRecord for tvOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3790044F22BB51880087D3FC /* Debug */,\n\t\t\t\t3790045022BB51880087D3FC /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3790045E22BB51DD0087D3FC /* Build configuration list for PBXNativeTarget \"libMagicalRecord for tvOS Tests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3790045F22BB51DD0087D3FC /* Debug */,\n\t\t\t\t3790046022BB51DD0087D3FC /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t37CA2624229FEB7000EAB9F6 /* Build configuration list for PBXNativeTarget \"MagicalRecord for tvOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t37CA2618229FEB7000EAB9F6 /* Debug */,\n\t\t\t\t37CA2619229FEB7000EAB9F6 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t37CA2625229FEB7000EAB9F6 /* Build configuration list for PBXNativeTarget \"MagicalRecord for tvOS Tests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t37CA261A229FEB7000EAB9F6 /* Debug */,\n\t\t\t\t37CA261B229FEB7000EAB9F6 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t9004F51E1A94CBCF00A61312 /* Build configuration list for PBXNativeTarget \"MagicalRecord for iOS Tests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t9004F51F1A94CBCF00A61312 /* Debug */,\n\t\t\t\t9004F5201A94CBCF00A61312 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t9004F5631A94CBF900A61312 /* Build configuration list for PBXNativeTarget \"MagicalRecord for OS X Tests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t9004F5641A94CBF900A61312 /* Debug */,\n\t\t\t\t9004F5651A94CBF900A61312 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t905D07341A63DE190076B54E /* Build configuration list for PBXNativeTarget \"MagicalRecord for iOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t905D072B1A63DE190076B54E /* Debug */,\n\t\t\t\t905D072C1A63DE190076B54E /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t905D074E1A63DE690076B54E /* Build configuration list for PBXNativeTarget \"MagicalRecord for OS X\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t905D074F1A63DE690076B54E /* Debug */,\n\t\t\t\t905D07501A63DE690076B54E /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC721C7A513D0A3750097AB6F /* Build configuration list for PBXProject \"MagicalRecord\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC721C7A713D0A3750097AB6F /* Debug */,\n\t\t\t\tC721C7A813D0A3750097AB6F /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC7CF97B417498414008D9D13 /* Build configuration list for PBXNativeTarget \"libMagicalRecord for iOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC7CF97B517498414008D9D13 /* Debug */,\n\t\t\t\tC7CF97B617498414008D9D13 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC7CF97C31749843F008D9D13 /* Build configuration list for PBXNativeTarget \"libMagicalRecord for OS X\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC7CF97C41749843F008D9D13 /* Debug */,\n\t\t\t\tC7CF97C51749843F008D9D13 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC7CF980E174984CA008D9D13 /* Build configuration list for PBXNativeTarget \"libMagicalRecord for iOS Tests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC7CF980F174984CA008D9D13 /* Debug */,\n\t\t\t\tC7CF9810174984CA008D9D13 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC7CF9823174984E4008D9D13 /* Build configuration list for PBXNativeTarget \"libMagicalRecord for OS X Tests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC7CF9824174984E4008D9D13 /* Debug */,\n\t\t\t\tC7CF9825174984E4008D9D13 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCVersionGroup section */\n\t\t9099490817C2F3D400BC2B5C /* TestModel.xcdatamodeld */ = {\n\t\t\tisa = XCVersionGroup;\n\t\t\tchildren = (\n\t\t\t\t9099490917C2F3D400BC2B5C /* TestModel.xcdatamodel */,\n\t\t\t);\n\t\t\tcurrentVersion = 9099490917C2F3D400BC2B5C /* TestModel.xcdatamodel */;\n\t\t\tname = TestModel.xcdatamodeld;\n\t\t\tpath = Fixtures/TestModel.xcdatamodeld;\n\t\t\tsourceTree = \"<group>\";\n\t\t\tversionGroupType = wrapper.xcdatamodel;\n\t\t};\n/* End XCVersionGroup section */\n\t};\n\trootObject = C721C7A213D0A3750097AB6F /* Project object */;\n}\n"
  },
  {
    "path": "MagicalRecord.xcodeproj/xcshareddata/xcschemes/MagicalRecord for OS X.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"905D073A1A63DE690076B54E\"\n               BuildableName = \"MagicalRecord.framework\"\n               BlueprintName = \"MagicalRecord for OS X\"\n               ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      codeCoverageEnabled = \"YES\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"9004F5251A94CBF900A61312\"\n               BuildableName = \"MagicalRecord for OS X Tests.xctest\"\n               BlueprintName = \"MagicalRecord for OS X Tests\"\n               ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"905D073A1A63DE690076B54E\"\n            BuildableName = \"MagicalRecord.framework\"\n            BlueprintName = \"MagicalRecord for OS X\"\n            ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"905D073A1A63DE690076B54E\"\n            BuildableName = \"MagicalRecord.framework\"\n            BlueprintName = \"MagicalRecord for OS X\"\n            ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <CommandLineArguments>\n         <CommandLineArgument\n            argument = \"-com.apple.CoreData.ConcurrencyDebug 1\"\n            isEnabled = \"YES\">\n         </CommandLineArgument>\n      </CommandLineArguments>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"905D073A1A63DE690076B54E\"\n            BuildableName = \"MagicalRecord.framework\"\n            BlueprintName = \"MagicalRecord for OS X\"\n            ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "MagicalRecord.xcodeproj/xcshareddata/xcschemes/MagicalRecord for iOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"905D07171A63DE190076B54E\"\n               BuildableName = \"MagicalRecord.framework\"\n               BlueprintName = \"MagicalRecord for iOS\"\n               ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      codeCoverageEnabled = \"YES\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"9004F4E01A94CBCF00A61312\"\n               BuildableName = \"MagicalRecord for iOS Tests.xctest\"\n               BlueprintName = \"MagicalRecord for iOS Tests\"\n               ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"905D07171A63DE190076B54E\"\n            BuildableName = \"MagicalRecord.framework\"\n            BlueprintName = \"MagicalRecord for iOS\"\n            ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"905D07171A63DE190076B54E\"\n            BuildableName = \"MagicalRecord.framework\"\n            BlueprintName = \"MagicalRecord for iOS\"\n            ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <CommandLineArguments>\n         <CommandLineArgument\n            argument = \"-com.apple.CoreData.ConcurrencyDebug 1\"\n            isEnabled = \"YES\">\n         </CommandLineArgument>\n      </CommandLineArguments>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"905D07171A63DE190076B54E\"\n            BuildableName = \"MagicalRecord.framework\"\n            BlueprintName = \"MagicalRecord for iOS\"\n            ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "MagicalRecord.xcodeproj/xcshareddata/xcschemes/MagicalRecord for tvOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"37CA2606229FEB7000EAB9F6\"\n               BuildableName = \"MagicalRecord.framework\"\n               BlueprintName = \"MagicalRecord for tvOS\"\n               ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"37CA260E229FEB7000EAB9F6\"\n               BuildableName = \"MagicalRecord for tvOS Tests.xctest\"\n               BlueprintName = \"MagicalRecord for tvOS Tests\"\n               ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"37CA2606229FEB7000EAB9F6\"\n            BuildableName = \"MagicalRecord.framework\"\n            BlueprintName = \"MagicalRecord for tvOS\"\n            ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"37CA2606229FEB7000EAB9F6\"\n            BuildableName = \"MagicalRecord.framework\"\n            BlueprintName = \"MagicalRecord for tvOS\"\n            ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <CommandLineArguments>\n         <CommandLineArgument\n            argument = \"-com.apple.CoreData.ConcurrencyDebug 1\"\n            isEnabled = \"YES\">\n         </CommandLineArgument>\n      </CommandLineArguments>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"37CA2606229FEB7000EAB9F6\"\n            BuildableName = \"MagicalRecord.framework\"\n            BlueprintName = \"MagicalRecord for tvOS\"\n            ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "MagicalRecord.xcodeproj/xcshareddata/xcschemes/libMagicalRecord for OS X.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C7CF97BA1749843F008D9D13\"\n               BuildableName = \"libMagicalRecord.dylib\"\n               BlueprintName = \"libMagicalRecord for OS X\"\n               ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      codeCoverageEnabled = \"YES\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C7CF9815174984E4008D9D13\"\n               BuildableName = \"libMagicalRecord for OS X Tests.xctest\"\n               BlueprintName = \"libMagicalRecord for OS X Tests\"\n               ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C7CF97BA1749843F008D9D13\"\n            BuildableName = \"libMagicalRecord.dylib\"\n            BlueprintName = \"libMagicalRecord for OS X\"\n            ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <CommandLineArguments>\n         <CommandLineArgument\n            argument = \"-com.apple.CoreData.ConcurrencyDebug 1\"\n            isEnabled = \"YES\">\n         </CommandLineArgument>\n      </CommandLineArguments>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "MagicalRecord.xcodeproj/xcshareddata/xcschemes/libMagicalRecord for iOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C7CF97AA17498414008D9D13\"\n               BuildableName = \"libMagicalRecord.a\"\n               BlueprintName = \"libMagicalRecord for iOS\"\n               ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      codeCoverageEnabled = \"YES\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C7CF97FE174984CA008D9D13\"\n               BuildableName = \"libMagicalRecord for iOS Tests.xctest\"\n               BlueprintName = \"libMagicalRecord for iOS Tests\"\n               ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C7CF97AA17498414008D9D13\"\n            BuildableName = \"libMagicalRecord.a\"\n            BlueprintName = \"libMagicalRecord for iOS\"\n            ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <CommandLineArguments>\n         <CommandLineArgument\n            argument = \"-com.apple.CoreData.ConcurrencyDebug 1\"\n            isEnabled = \"YES\">\n         </CommandLineArgument>\n      </CommandLineArguments>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "MagicalRecord.xcodeproj/xcshareddata/xcschemes/libMagicalRecord for tvOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"3790044822BB51880087D3FC\"\n               BuildableName = \"libMagicalRecord.a\"\n               BlueprintName = \"libMagicalRecord for tvOS\"\n               ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"3790045522BB51DD0087D3FC\"\n               BuildableName = \"libMagicalRecord for tvOS Tests.xctest\"\n               BlueprintName = \"libMagicalRecord for tvOS Tests\"\n               ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"3790044822BB51880087D3FC\"\n            BuildableName = \"libMagicalRecord.a\"\n            BlueprintName = \"libMagicalRecord for tvOS\"\n            ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"3790044822BB51880087D3FC\"\n            BuildableName = \"libMagicalRecord.a\"\n            BlueprintName = \"libMagicalRecord for tvOS\"\n            ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <CommandLineArguments>\n         <CommandLineArgument\n            argument = \"-com.apple.CoreData.ConcurrencyDebug 1\"\n            isEnabled = \"YES\">\n         </CommandLineArgument>\n      </CommandLineArguments>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"3790044822BB51880087D3FC\"\n            BuildableName = \"libMagicalRecord.a\"\n            BlueprintName = \"libMagicalRecord for tvOS\"\n            ReferencedContainer = \"container:MagicalRecord.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "README.md",
    "content": "# ![Awesome](https://github.com/magicalpanda/magicalpanda.github.com/blob/master/images/awesome_logo_small.png?raw=true) MagicalRecord\n\n[![Circle CI](https://circleci.com/gh/magicalpanda/MagicalRecord/tree/develop.svg?style=svg)](https://circleci.com/gh/magicalpanda/MagicalRecord/tree/develop)\n\nIn software engineering, the active record pattern is a design pattern found in software that stores its data in relational databases. It was named by Martin Fowler in his book Patterns of Enterprise Application Architecture. The interface to such an object would include functions such as Insert, Update, and Delete, plus properties that correspond more-or-less directly to the columns in the underlying database table.\n\n>\tActive record is an approach to accessing data in a database. A database table or view is wrapped into a class; thus an object instance is tied to a single row in the table. After creation of an object, a new row is added to the table upon save. Any object loaded gets its information from the database; when an object is updated, the corresponding row in the table is also updated. The\twrapper class implements accessor methods or properties for each column in the table or view.\n\n>\t*- [Wikipedia](https://en.wikipedia.org/wiki/Active_record_pattern)*\n\nMagicalRecord was inspired by the ease of Ruby on Rails' Active Record fetching. The goals of this code are:\n\n* Clean up my Core Data related code\n* Allow for clear, simple, one-line fetches\n* Still allow the modification of the NSFetchRequest when request optimizations are needed\n\n## Status of the project\n\nThis project's activity has stopped, superseded by Core Data itself. Our latest versions available are:\n\n- MagicalRecord 2.4.0, a stable version, available from tag '2.4.0' or `pod 'MagicalRecord', :git => 'https://github.com/magicalpanda/MagicalRecord'`.\n- MagicalRecord 3.0.0, an experimental version, available in two flavors, one is branch `release/3.0` and the other is branch `maintenance/3.0`.\n\n## Documentation\n\n- [Installation](Docs/Installing-MagicalRecord.md)\n- [Getting Started](Docs/Getting-Started.md)\n- [Working with Managed Object Contexts](Docs/Working-with-Managed-Object-Contexts.md)\n- [Creating Entities](Docs/Creating-Entities.md)\n- [Deleting Entities](Docs/Deleting-Entities.md)\n- [Fetching Entities](Docs/Fetching-Entities.md)\n- [Saving Entities](Docs/Saving-Entities.md)\n- [Importing Data](Docs/Importing-Data.md)\n- [Logging](Docs/Logging.md)\n* [Other Resources](Docs/Other-Resources.md)\n\n## Support\n\nThis project's activity has stopped. MagicalRecord is provided as-is, free of charge. For support, you have a few choices:\n\n- Ask your support question on [Stack Overflow](https://stackoverflow.com), and tag your question with **MagicalRecord**.\n- If you believe you have found a bug in MagicalRecord, please submit a support ticket on the [GitHub Issues page for MagicalRecord](https://github.com/magicalpanda/magicalrecord/issues) or a pull request. Please do **NOT** ask general questions on the issue tracker. Support questions will be closed unanswered.\n- For more personal or immediate support, [MagicalPanda](http://magicalpanda.com/) is available for hire to consult on your project.\n"
  },
  {
    "path": "Samples/iOS/Application/Categories/ImageToDataTransformer.h",
    "content": "//\n//  ImageToDataTransformer.h\n//  MagicalRecordRecipes\n//\n//  Created by Saul Mora on 5/19/13.\n//\n//\n\n#import <Foundation/Foundation.h>\n\n@interface ImageToDataTransformer : NSValueTransformer\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Categories/ImageToDataTransformer.m",
    "content": "//\n//  ImageToDataTransformer.m\n//  MagicalRecordRecipes\n//\n//  Created by Saul Mora on 5/19/13.\n//\n//\n\n#import \"ImageToDataTransformer.h\"\n\n\n@implementation ImageToDataTransformer\n\n\n+ (BOOL)allowsReverseTransformation {\n\treturn YES;\n}\n\n+ (Class)transformedValueClass {\n\treturn [NSData class];\n}\n\n\n- (id)transformedValue:(id)value {\n\tNSData *data = UIImagePNGRepresentation(value);\n\treturn data;\n}\n\n\n- (id)reverseTransformedValue:(id)value {\n\tUIImage *uiImage = [[UIImage alloc] initWithData:value];\n\treturn uiImage;\n}\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/AddressBook_Prefix.pch",
    "content": "//\n// Prefix header for all source files of the 'AddressBook' target in the 'AddressBook' project\n//\n\n#ifdef __OBJC__\n#import <Foundation/Foundation.h>\n#import <UIKit/UIKit.h>\n#endif\n\n#ifndef __ADDRESS_BOOK_FOR_IPHONE__\n#define __ADDRESS_BOOK_FOR_IPHONE__ 1\n#endif"
  },
  {
    "path": "Samples/iOS/Application/Controllers/EditingTableViewCell.h",
    "content": "/*\n     File: EditingTableViewCell.h\n Abstract: A table view cell that displays a label and a text field so that a value can be edited. The user interface is loaded from a nib file.\n \n  Version: 1.4\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2010 Apple Inc. All Rights Reserved.\n \n */\n\n@interface EditingTableViewCell : UITableViewCell\n\n@property (nonatomic, retain) IBOutlet UILabel *label;\n@property (nonatomic, retain) IBOutlet UITextField *textField;\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/EditingTableViewCell.m",
    "content": "/*\n     File: EditingTableViewCell.m \n Abstract: A table view cell that displays a label and a text field so that a value can be edited. The user interface is loaded from a nib file.\n  \n  Version: 1.4 \n  \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple \n Inc. (\"Apple\") in consideration of your agreement to the following \n terms, and your use, installation, modification or redistribution of \n this Apple software constitutes acceptance of these terms.  If you do \n not agree with these terms, please do not use, install, modify or \n redistribute this Apple software. \n  \n In consideration of your agreement to abide by the following terms, and \n subject to these terms, Apple grants you a personal, non-exclusive \n license, under Apple's copyrights in this original Apple software (the \n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple \n Software, with or without modifications, in source and/or binary forms; \n provided that if you redistribute the Apple Software in its entirety and \n without modifications, you must retain this notice and the following \n text and disclaimers in all such redistributions of the Apple Software. \n Neither the name, trademarks, service marks or logos of Apple Inc. may \n be used to endorse or promote products derived from the Apple Software \n without specific prior written permission from Apple.  Except as \n expressly stated in this notice, no other rights or licenses, express or \n implied, are granted by Apple herein, including but not limited to any \n patent rights that may be infringed by your derivative works or by other \n works in which the Apple Software may be incorporated. \n  \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE \n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION \n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS \n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND \n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. \n  \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL \n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, \n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED \n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), \n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE \n POSSIBILITY OF SUCH DAMAGE. \n  \n Copyright (C) 2010 Apple Inc. All Rights Reserved. \n  \n */\n\n#import \"EditingTableViewCell.h\"\n\n@implementation EditingTableViewCell\n\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/ImperialPickerController.h",
    "content": "/*\n     File: ImperialPickerController.h\n Abstract: Controller to managed a picker view displaying imperial weights.\n \n  Version: 1.4\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2010 Apple Inc. All Rights Reserved.\n \n */\n\n@interface ImperialPickerController : NSObject <UIPickerViewDataSource, UIPickerViewDelegate>\n\n@property (nonatomic, retain) IBOutlet UIPickerView *pickerView;\n@property (nonatomic, retain) IBOutlet UILabel *label;\n\n- (void)updateLabel;\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/ImperialPickerController.m",
    "content": "/*\n     File: ImperialPickerController.m \n Abstract: Controller to managed a picker view displaying imperial weights.\n  \n  Version: 1.4 \n  \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple \n Inc. (\"Apple\") in consideration of your agreement to the following \n terms, and your use, installation, modification or redistribution of \n this Apple software constitutes acceptance of these terms.  If you do \n not agree with these terms, please do not use, install, modify or \n redistribute this Apple software. \n  \n In consideration of your agreement to abide by the following terms, and \n subject to these terms, Apple grants you a personal, non-exclusive \n license, under Apple's copyrights in this original Apple software (the \n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple \n Software, with or without modifications, in source and/or binary forms; \n provided that if you redistribute the Apple Software in its entirety and \n without modifications, you must retain this notice and the following \n text and disclaimers in all such redistributions of the Apple Software. \n Neither the name, trademarks, service marks or logos of Apple Inc. may \n be used to endorse or promote products derived from the Apple Software \n without specific prior written permission from Apple.  Except as \n expressly stated in this notice, no other rights or licenses, express or \n implied, are granted by Apple herein, including but not limited to any \n patent rights that may be infringed by your derivative works or by other \n works in which the Apple Software may be incorporated. \n  \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE \n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION \n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS \n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND \n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. \n  \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL \n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, \n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED \n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), \n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE \n POSSIBILITY OF SUCH DAMAGE. \n  \n Copyright (C) 2010 Apple Inc. All Rights Reserved. \n  \n */\n\n#import \"ImperialPickerController.h\"\n\n\n@implementation ImperialPickerController\n\n\n// Identifiers and widths for the various components\n#define POUNDS_COMPONENT 0\n#define POUNDS_COMPONENT_WIDTH 110\n#define POUNDS_LABEL_WIDTH 60\n\n#define OUNCES_COMPONENT 1\n#define OUNCES_COMPONENT_WIDTH 106\n#define OUNCES_LABEL_WIDTH 56\n\n\n// Identifies for component views\n#define VIEW_TAG 41\n#define SUB_LABEL_TAG 42\n#define LABEL_TAG 43\n\n- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {\n\t\n\treturn 2;\n}\n\n\n- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {\n\t\n\t// Number of rows depends on the currently-selected unit and the component.\n    if (component == POUNDS_COMPONENT) {\n\t\treturn 29;\n\t}\n\t// OUNCES_LABEL_COMPONENT\n\treturn 16;\n}\n\n\n- (UIView *)labelCellWithWidth:(CGFloat)width rightOffset:(CGFloat)offset {\n\t\n\t// Create a new view that contains a label offset from the right.\n\tCGRect frame = CGRectMake(0.0, 0.0, width, 32.0);\n\tUIView *view = [[UIView alloc] initWithFrame:frame];\n\tview.tag = VIEW_TAG;\n\t\n\tframe.size.width = width - offset;\n\tUILabel *subLabel = [[UILabel alloc] initWithFrame:frame];\n\tsubLabel.textAlignment = NSTextAlignmentRight;\n\tsubLabel.backgroundColor = [UIColor clearColor];\n\tsubLabel.font = [UIFont systemFontOfSize:24.0];\n\tsubLabel.userInteractionEnabled = NO;\n\t\n\tsubLabel.tag = SUB_LABEL_TAG;\n\t\n\t[view addSubview:subLabel];\n\treturn view;\n}\n\n\n- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {\n\t\n\tUIView *returnView = nil;\n\t\n\t// Reuse the label if possible, otherwise create and configure a new one.\n\tif ((view.tag == VIEW_TAG) || (view.tag == LABEL_TAG)) {\n\t\treturnView = view;\n\t}\n\telse {\n        if (component == POUNDS_COMPONENT) {\n            returnView = [self labelCellWithWidth:POUNDS_COMPONENT_WIDTH rightOffset:POUNDS_LABEL_WIDTH];\n        }\n        else {\n            returnView = [self labelCellWithWidth:OUNCES_COMPONENT_WIDTH rightOffset:OUNCES_LABEL_WIDTH];\n        }\n\t}\n\t\n\t// The text shown in the component is just the number of the component.\n\tNSString *text = [NSString stringWithFormat:@\"%zd\", row];\n\t\n\t// Where to set the text in depends on what sort of view it is.\n\tUILabel *theLabel = nil;\n\tif (returnView.tag == VIEW_TAG) {\n\t\ttheLabel = (UILabel *)[returnView viewWithTag:SUB_LABEL_TAG];\n\t}\n\telse {\n\t\ttheLabel = (UILabel *)returnView;\n\t}\n    \n\ttheLabel.text = text;\n\treturn returnView;\n}\n\n\n- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {\n\t\n\tif (component == POUNDS_COMPONENT) {\n\t\treturn POUNDS_COMPONENT_WIDTH;\n\t}\n\t// OUNCES_COMPONENT\n\treturn OUNCES_COMPONENT_WIDTH;\n}\n\n\n- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {\n\t// If the user chooses a new row, update the label accordingly.\n\t[self updateLabel];\n}\n\n\n- (void)updateLabel {\n\n    /*\n     If the user has entered imperial units, find the number of pounds and ounces and convert that to kilograms and grams.\n     Don't display 0 kg.\n     */\n    NSInteger ounces = [self.pickerView selectedRowInComponent:OUNCES_COMPONENT];\n    ounces += [self.pickerView selectedRowInComponent:POUNDS_COMPONENT] * 16;\n    \n    float grams = ounces * 28.349;\n    if (grams > 1000.0) {\n        NSInteger kg = grams / 1000;\n        grams -= kg *1000;\n        self.label.text = [NSString stringWithFormat:@\"%zd kg  %1.0f g\", kg, grams];\n    }\n\telse {\n        self.label.text = [NSString stringWithFormat:@\"%1.0f g\", grams];\n    }\n}\n\n\t\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/IngredientDetailViewController.h",
    "content": "/*\n     File: IngredientDetailViewController.h\n Abstract: Table view controller to manage editing details of a recipe ingredient -- its name and amount.\n \n  Version: 1.4\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2010 Apple Inc. All Rights Reserved.\n \n */\n\n@class Recipe, Ingredient, EditingTableViewCell;\n\n@interface IngredientDetailViewController : UITableViewController\n\n@property (nonatomic, retain) Recipe *recipe;\n@property (nonatomic, retain) Ingredient *ingredient;\n\n@property (nonatomic, weak) IBOutlet EditingTableViewCell *editingTableViewCell;\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/IngredientDetailViewController.m",
    "content": "/*\n     File: IngredientDetailViewController.m \n Abstract: Table view controller to manage editing details of a recipe ingredient -- its name and amount.\n  \n  Version: 1.4 \n  \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple \n Inc. (\"Apple\") in consideration of your agreement to the following \n terms, and your use, installation, modification or redistribution of \n this Apple software constitutes acceptance of these terms.  If you do \n not agree with these terms, please do not use, install, modify or \n redistribute this Apple software. \n  \n In consideration of your agreement to abide by the following terms, and \n subject to these terms, Apple grants you a personal, non-exclusive \n license, under Apple's copyrights in this original Apple software (the \n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple \n Software, with or without modifications, in source and/or binary forms; \n provided that if you redistribute the Apple Software in its entirety and \n without modifications, you must retain this notice and the following \n text and disclaimers in all such redistributions of the Apple Software. \n Neither the name, trademarks, service marks or logos of Apple Inc. may \n be used to endorse or promote products derived from the Apple Software \n without specific prior written permission from Apple.  Except as \n expressly stated in this notice, no other rights or licenses, express or \n implied, are granted by Apple herein, including but not limited to any \n patent rights that may be infringed by your derivative works or by other \n works in which the Apple Software may be incorporated. \n  \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE \n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION \n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS \n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND \n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. \n  \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL \n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, \n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED \n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), \n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE \n POSSIBILITY OF SUCH DAMAGE. \n  \n Copyright (C) 2010 Apple Inc. All Rights Reserved. \n  \n */\n\n#import \"IngredientDetailViewController.h\"\n#import \"Recipe.h\"\n#import \"Ingredient.h\"\n#import \"EditingTableViewCell.h\"\n\n\n@implementation IngredientDetailViewController\n\n//@synthesize recipe, ingredient, editingTableViewCell;\n\n\n#pragma mark -\n#pragma mark View controller\n\n\n- (id)initWithStyle:(UITableViewStyle)style {\n    if (self = [super initWithStyle:style]) {\n        UINavigationItem *navigationItem = self.navigationItem;\n        navigationItem.title = @\"Ingredient\";\n\n        UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel:)];\n        self.navigationItem.leftBarButtonItem = cancelButton;\n\n        UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save:)];\n        self.navigationItem.rightBarButtonItem = saveButton;\n    }\n    return self;\n}\n\n\n- (void)viewDidLoad {\n\t[super viewDidLoad];\t\n\tself.tableView.allowsSelection = NO;\n\tself.tableView.allowsSelectionDuringEditing = NO;\n}\n\n\n\n- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {\n    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);\n}\n\n\n#pragma mark -\n#pragma mark Table view\n\n- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {\n    return 2;\n}\n\n\n- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {\n    static NSString *IngredientsCellIdentifier = @\"IngredientsCell\";\n    \n    EditingTableViewCell *cell = (EditingTableViewCell *)[tableView dequeueReusableCellWithIdentifier:IngredientsCellIdentifier];\n    if (cell == nil) {\n\t\t[[NSBundle mainBundle] loadNibNamed:@\"EditingTableViewCell\" owner:self options:nil];\n        cell = _editingTableViewCell;\n\t\tself.editingTableViewCell = nil;\n    }\n    \n    if (indexPath.row == 0) {\n        cell.label.text = @\"Ingredient\";\n        cell.textField.text = _ingredient.name;\n        cell.textField.placeholder = @\"Name\";\n    }\n\telse if (indexPath.row == 1) {\n        cell.label.text = @\"Amount\";\n        cell.textField.text = _ingredient.amount;\n        cell.textField.placeholder = @\"Amount\";\n    }\n\n    return cell;\n}\n\n\n#pragma mark -\n#pragma mark Save and cancel\n\n- (void)save:(id)sender {\n\t\n\tNSManagedObjectContext *context = [_recipe managedObjectContext];\n\t\n\t/*\n\t If there isn't an ingredient object, create and configure one.\n\t */\n    if (!_ingredient) {\n        self.ingredient = [Ingredient MR_createEntityInContext:context];\n        [_recipe addIngredientsObject:_ingredient];\n\t\t_ingredient.displayOrder = @([_recipe.ingredients count]);\n    }\n\t\n\t/*\n\t Update the ingredient from the values in the text fields.\n\t */\n    EditingTableViewCell *cell;\n\t\n    cell = (EditingTableViewCell *)[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];\n    _ingredient.name = cell.textField.text;\n\t\n    cell = (EditingTableViewCell *)[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]];\n    _ingredient.amount = cell.textField.text;\n\t\n\t/*\n\t Save the managed object context.\n\t */\n    [context MR_saveToPersistentStoreAndWait];\t\n    [self.navigationController popViewControllerAnimated:YES];\n}\n\n\n- (void)cancel:(id)sender {\n    [self.navigationController popViewControllerAnimated:YES];\n}\n\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/InstructionsViewController.h",
    "content": "/*\n     File: InstructionsViewController.h\n Abstract: View controller to manage a text view to allow the user to edit instructions for a recipe.\n \n  Version: 1.4\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2010 Apple Inc. All Rights Reserved.\n \n */\n\n@class Recipe;\n\n@interface InstructionsViewController : UIViewController\n\n@property (nonatomic, retain) Recipe *recipe;\n@property (nonatomic, retain) IBOutlet UITextView *instructionsText;\n@property (nonatomic, retain) IBOutlet UILabel *nameLabel;\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/InstructionsViewController.m",
    "content": "/*\n     File: InstructionsViewController.m \n Abstract: View controller to manage a text view to allow the user to edit instructions for a recipe.\n  \n  Version: 1.4 \n  \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple \n Inc. (\"Apple\") in consideration of your agreement to the following \n terms, and your use, installation, modification or redistribution of \n this Apple software constitutes acceptance of these terms.  If you do \n not agree with these terms, please do not use, install, modify or \n redistribute this Apple software. \n  \n In consideration of your agreement to abide by the following terms, and \n subject to these terms, Apple grants you a personal, non-exclusive \n license, under Apple's copyrights in this original Apple software (the \n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple \n Software, with or without modifications, in source and/or binary forms; \n provided that if you redistribute the Apple Software in its entirety and \n without modifications, you must retain this notice and the following \n text and disclaimers in all such redistributions of the Apple Software. \n Neither the name, trademarks, service marks or logos of Apple Inc. may \n be used to endorse or promote products derived from the Apple Software \n without specific prior written permission from Apple.  Except as \n expressly stated in this notice, no other rights or licenses, express or \n implied, are granted by Apple herein, including but not limited to any \n patent rights that may be infringed by your derivative works or by other \n works in which the Apple Software may be incorporated. \n  \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE \n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION \n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS \n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND \n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. \n  \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL \n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, \n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED \n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), \n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE \n POSSIBILITY OF SUCH DAMAGE. \n  \n Copyright (C) 2010 Apple Inc. All Rights Reserved. \n  \n */\n\n#import \"InstructionsViewController.h\"\n#import \"Recipe.h\"\n\n@implementation InstructionsViewController\n\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n\n    UINavigationItem *navigationItem = self.navigationItem;\n    navigationItem.title = @\"Instructions\";\n    self.navigationItem.rightBarButtonItem = self.editButtonItem;\n}\n\n\n- (void)viewWillAppear:(BOOL)animated {\n    [super viewWillAppear:animated];\n\n    // Update the views appropriately\n    self.nameLabel.text = self.recipe.name;\n    self.instructionsText.text = self.recipe.instructions;\n}\n\n\n- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {\n    // Support all orientations except upside-down\n    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);\n}\n\n\n- (void)setEditing:(BOOL)editing animated:(BOOL)animated {\n\n    [super setEditing:editing animated:animated];\n\n    self.instructionsText.editable = editing;\n\t[self.navigationItem setHidesBackButton:editing animated:YES];\n\n\t/*\n\t If editing is finished, update the recipe's instructions and save the managed object context.\n\t */\n\tif (!editing) {\n\t\tself.recipe.instructions = self.instructionsText.text;\n\t\t\n\t\tNSManagedObjectContext *context = self.recipe.managedObjectContext;\n        [context MR_saveToPersistentStoreAndWait];\n\t}\n}\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/MetricPickerController.h",
    "content": "/*\n     File: MetricPickerController.h\n Abstract: Controller to managed a picker view displaying metric weights.\n \n  Version: 1.4\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2010 Apple Inc. All Rights Reserved.\n \n */\n\n@interface MetricPickerController : NSObject <UIPickerViewDataSource, UIPickerViewDelegate>\n\n@property (nonatomic, retain) IBOutlet UIPickerView *pickerView;\n@property (nonatomic, retain) IBOutlet UILabel *label;\n\n- (UIView *)viewForComponent:(NSInteger)component;\n- (void)updateLabel;\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/MetricPickerController.m",
    "content": "/*\n     File: MetricPickerController.m \n Abstract: Controller to managed a picker view displaying metric weights.\n  \n  Version: 1.4 \n  \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple \n Inc. (\"Apple\") in consideration of your agreement to the following \n terms, and your use, installation, modification or redistribution of \n this Apple software constitutes acceptance of these terms.  If you do \n not agree with these terms, please do not use, install, modify or \n redistribute this Apple software. \n  \n In consideration of your agreement to abide by the following terms, and \n subject to these terms, Apple grants you a personal, non-exclusive \n license, under Apple's copyrights in this original Apple software (the \n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple \n Software, with or without modifications, in source and/or binary forms; \n provided that if you redistribute the Apple Software in its entirety and \n without modifications, you must retain this notice and the following \n text and disclaimers in all such redistributions of the Apple Software. \n Neither the name, trademarks, service marks or logos of Apple Inc. may \n be used to endorse or promote products derived from the Apple Software \n without specific prior written permission from Apple.  Except as \n expressly stated in this notice, no other rights or licenses, express or \n implied, are granted by Apple herein, including but not limited to any \n patent rights that may be infringed by your derivative works or by other \n works in which the Apple Software may be incorporated. \n  \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE \n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION \n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS \n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND \n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. \n  \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL \n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, \n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED \n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), \n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE \n POSSIBILITY OF SUCH DAMAGE. \n  \n Copyright (C) 2010 Apple Inc. All Rights Reserved. \n  \n */\n\n#import \"MetricPickerController.h\"\n\n@implementation MetricPickerController\n\n// Identifiers and widths for the various components\n#define KG_COMPONENT 0\n#define KG_COMPONENT_WIDTH 88\n#define KG0_LABEL_WIDTH 46\n\n#define G0_COMPONENT 3\n#define G0_COMPONENT_WIDTH 74\n#define G0_LABEL_WIDTH 44\n\n#define G_COMPONENT_WIDTH 50\n\n// Identifies for component views\n#define VIEW_TAG 41\n#define SUB_LABEL_TAG 42\n#define LABEL_TAG 43\n\n- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {\n\t\n\treturn 4;\n}\n\n\n- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {\n\t\n\t// Number of rows depends on the currently-selected unit and the component.\n    if (component == KG_COMPONENT) {\n        return 20;\n    }\n    return 10;\n}\n\n\n- (UIView *)labelCellWidth:(CGFloat)width rightOffset:(CGFloat)offset {\n\t\n\t// Create a new view that contains a label offset from the right.\n\tCGRect frame = CGRectMake(0.0, 0.0, width, 32.0);\n\tUIView *view = [[UIView alloc] initWithFrame:frame];\n\tview.tag = VIEW_TAG;\n\t\n\tframe.size.width = width - offset;\n\tUILabel *subLabel = [[UILabel alloc] initWithFrame:frame];\n\tsubLabel.textAlignment = NSTextAlignmentRight;\n\tsubLabel.backgroundColor = [UIColor clearColor];\n\tsubLabel.font = [UIFont systemFontOfSize:24.0];\n\tsubLabel.userInteractionEnabled = NO;\n\t\n\tsubLabel.tag = SUB_LABEL_TAG;\n\t\n\t[view addSubview:subLabel];\n\n\treturn view;\n}\n\n\n- (UIView *)viewForComponent:(NSInteger)component {\n\t\n\t/*\n\t Return a view appropriate for the specified picker view and component.\n\t If it's the picker view, or if it's the kg or g component of the metric view, create a UIView that contains a label.  The label can then be offset in the containing view so that its text does not overlap the unit symbol.\n\t For the remaining components, simple create a label to contain the text.\n\t Give all the views tags so they can be identified easily.\n\t */\n\t\n\tif (component == KG_COMPONENT) {\t\t\n\t\treturn [self labelCellWidth:KG_COMPONENT_WIDTH rightOffset:KG0_LABEL_WIDTH];\n\t}\n    \n\tif (component == G0_COMPONENT) {\n\t\treturn [self labelCellWidth:G0_COMPONENT_WIDTH rightOffset:G0_LABEL_WIDTH];\n\t}\n\t\n\tCGRect frame = CGRectMake(0.0, 0.0, 36.0, 32.0);\n\tUILabel *aLabel = [[UILabel alloc] initWithFrame:frame];\n\taLabel.textAlignment = NSTextAlignmentCenter;\n\taLabel.backgroundColor = [UIColor clearColor];\n\taLabel.font = [UIFont systemFontOfSize:24.0];\n\taLabel.userInteractionEnabled = NO;\n\taLabel.tag = LABEL_TAG;\n\treturn aLabel;\n}\n\n\n- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {\n\t\n\tUIView *returnView = nil;\n\t\n\t// Reuse the label if possible, otherwise create and configure a new one.\n\tif ((view.tag == VIEW_TAG) || (view.tag == LABEL_TAG)) {\n\t\treturnView = view;\n\t}\n\telse {\n\t\treturnView = [self viewForComponent:component];\n\t}\n\t\n\t// The text shown in the component is just the number of the component.\n\tNSString *text = [NSString stringWithFormat:@\"%zd\", row];\n\t\n\t// Where to set the text in depends on what sort of view it is.\n\tUILabel *theLabel = nil;\n\tif (returnView.tag == VIEW_TAG) {\n\t\ttheLabel = (UILabel *)[returnView viewWithTag:SUB_LABEL_TAG];\n\t}\n\telse {\n\t\ttheLabel = (UILabel *)returnView;\n\t}\n    \n\ttheLabel.text = text;\n\treturn returnView;\n}\n\n\n- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {\n\t\n\t// The width of the component depends on the currently-selected unit and the component.\n    \n    if (component == KG_COMPONENT) {\n        return KG_COMPONENT_WIDTH;\n    }\n    if (component == G0_COMPONENT) {\n        return G0_COMPONENT_WIDTH;\n    }\n    return G_COMPONENT_WIDTH;\t\n}\n\n\n- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {\n\t// If the user chooses a new row, update the label accordingly.\n\t[self updateLabel];\n}\n\n\n- (void)updateLabel {\n\t\n    /*\n     If the user has entered metric units, find the number of grams and convert that to pounds and ounces.\n     Don't display 0 lbs; round 15.95 ounces up to 1 lb, and use NSDecimalNumberHandler to round ounces for a more attractive display.\n     */\n    \n    static NSDecimalNumberHandler* roundingBehavior = nil;\n    \n    if (roundingBehavior == nil) {\n        roundingBehavior = \n        [[NSDecimalNumberHandler alloc] initWithRoundingMode:NSRoundPlain scale:1 raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO];\n    }\t\t\n    \n    NSInteger grams = 0;\n    grams += [self.pickerView selectedRowInComponent:3];\n    grams += [self.pickerView selectedRowInComponent:2] * 10;\n    grams += [self.pickerView selectedRowInComponent:1] * 100;\n    grams += [self.pickerView selectedRowInComponent:0] * 1000;\n    \n    NSDecimalNumber *ouncesDecimal;\n    NSDecimalNumber *roundedOunces;\n    \n    float ounces = grams / 28.349;\n    \n    if (ounces >= 15.95) {\n        NSInteger lbs = ounces / 16;\n        ounces -= lbs * 16;\n        if (ounces >= 15.95) {\n            ounces = 0;\n            lbs += 1;\n        }\n        ouncesDecimal = [[NSDecimalNumber alloc] initWithFloat:ounces];\n        roundedOunces = [ouncesDecimal decimalNumberByRoundingAccordingToBehavior:roundingBehavior];\n        self.label.text = [NSString stringWithFormat:@\"%zd lbs  %@ oz\", lbs, roundedOunces];\n    }\n    else {\n        ouncesDecimal = [[NSDecimalNumber alloc] initWithFloat:ounces];\n        roundedOunces = [ouncesDecimal decimalNumberByRoundingAccordingToBehavior:roundingBehavior];\n        self.label.text = [NSString stringWithFormat:@\"%@ oz\", roundedOunces];\n    }\n}\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/RecipeAddViewController.h",
    "content": "/*\n     File: RecipeAddViewController.h\n Abstract: View controller to allow the user to add a new recipe and choose its picture using the image picker.\n If the user taps Save, the recipe detail view controller is pushed so that the user can edit the new item.\n \n  Version: 1.4\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2010 Apple Inc. All Rights Reserved.\n \n */\n\n@protocol RecipeAddDelegate;\n@class Recipe;\n\n@interface RecipeAddViewController : UIViewController <UITextFieldDelegate> \n\n@property(nonatomic, retain) Recipe *recipe;\n@property(nonatomic, retain) IBOutlet UITextField *nameTextField;\n@property(nonatomic, weak) id <RecipeAddDelegate> delegate;\n\n- (void)save;\n- (void)cancel;\n\n@end\n\n\n@protocol RecipeAddDelegate <NSObject>\n// recipe == nil on cancel\n- (void)recipeAddViewController:(RecipeAddViewController *)recipeAddViewController didAddRecipe:(Recipe *)recipe;\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/RecipeAddViewController.m",
    "content": "/*\n     File: RecipeAddViewController.m \n Abstract: View controller to allow the user to add a new recipe and choose its picture using the image picker.\n If the user taps Save, the recipe detail view controller is pushed so that the user can edit the new item.\n  \n  Version: 1.4 \n  \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple \n Inc. (\"Apple\") in consideration of your agreement to the following \n terms, and your use, installation, modification or redistribution of \n this Apple software constitutes acceptance of these terms.  If you do \n not agree with these terms, please do not use, install, modify or \n redistribute this Apple software. \n  \n In consideration of your agreement to abide by the following terms, and \n subject to these terms, Apple grants you a personal, non-exclusive \n license, under Apple's copyrights in this original Apple software (the \n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple \n Software, with or without modifications, in source and/or binary forms; \n provided that if you redistribute the Apple Software in its entirety and \n without modifications, you must retain this notice and the following \n text and disclaimers in all such redistributions of the Apple Software. \n Neither the name, trademarks, service marks or logos of Apple Inc. may \n be used to endorse or promote products derived from the Apple Software \n without specific prior written permission from Apple.  Except as \n expressly stated in this notice, no other rights or licenses, express or \n implied, are granted by Apple herein, including but not limited to any \n patent rights that may be infringed by your derivative works or by other \n works in which the Apple Software may be incorporated. \n  \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE \n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION \n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS \n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND \n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. \n  \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL \n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, \n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED \n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), \n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE \n POSSIBILITY OF SUCH DAMAGE. \n  \n Copyright (C) 2010 Apple Inc. All Rights Reserved. \n  \n */\n\n#import \"RecipeAddViewController.h\"\n#import \"Recipe.h\"\n\n@implementation RecipeAddViewController\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n\n    // Configure the navigation bar\n    self.navigationItem.title = @\"Add Recipe\";\n    \n    UIBarButtonItem *cancelButtonItem = [[UIBarButtonItem alloc] initWithTitle:@\"Cancel\" style:UIBarButtonItemStylePlain target:self action:@selector(cancel)];\n    self.navigationItem.leftBarButtonItem = cancelButtonItem;\n    \n    UIBarButtonItem *saveButtonItem = [[UIBarButtonItem alloc] initWithTitle:@\"Save\" style:UIBarButtonItemStyleDone target:self action:@selector(save)];\n    self.navigationItem.rightBarButtonItem = saveButtonItem;\n\t\n\t[self.nameTextField becomeFirstResponder];\n}\n\n\n- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {\n    // Support all orientations except upside-down\n    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);\n}\n\n\n- (BOOL)textFieldShouldReturn:(UITextField *)textField {\n\tif (textField == _nameTextField) {\n\t\t[_nameTextField resignFirstResponder];\n\t\t[self save];\n\t}\n\treturn YES;\n}\n\n\n- (void)save {\n    \n    self.recipe.name = self.nameTextField.text;\n    NSManagedObjectContext* context = self.recipe.managedObjectContext;\n    [context MR_saveToPersistentStoreAndWait];\n\t[self.delegate recipeAddViewController:self didAddRecipe:self.recipe];\n}\n\n\n- (void)cancel {\n\n    [self.recipe MR_deleteEntity];\n    [self.delegate recipeAddViewController:self didAddRecipe:nil];\n}\n\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/RecipeDetailViewController.h",
    "content": "/*\n     File: RecipeDetailViewController.h\n Abstract: Table view controller to manage an editable table view that displays information about a recipe.\n The table view uses different cell types for different row types.\n \n  Version: 1.4\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2010 Apple Inc. All Rights Reserved.\n \n */\n\n@class Recipe;\n\n@interface RecipeDetailViewController : UITableViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate, UITextFieldDelegate>\n            \n@property (nonatomic, retain) Recipe *recipe;\n@property (nonatomic, retain) NSMutableArray *ingredients;\n\n@property (nonatomic, retain) IBOutlet UIView *tableHeaderView;\n@property (nonatomic, retain) IBOutlet UIButton *photoButton;\n@property (nonatomic, retain) IBOutlet UITextField *nameTextField;\n@property (nonatomic, retain) IBOutlet UITextField *overviewTextField;\n@property (nonatomic, retain) IBOutlet UITextField *prepTimeTextField;\n\n- (IBAction)photoTapped;\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/RecipeDetailViewController.m",
    "content": "/*\n     File: RecipeDetailViewController.m \n Abstract: Table view controller to manage an editable table view that displays information about a recipe.\n The table view uses different cell types for different row types.\n  \n  Version: 1.5 \n  \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple \n Inc. (\"Apple\") in consideration of your agreement to the following \n terms, and your use, installation, modification or redistribution of \n this Apple software constitutes acceptance of these terms.  If you do \n not agree with these terms, please do not use, install, modify or \n redistribute this Apple software. \n  \n In consideration of your agreement to abide by the following terms, and \n subject to these terms, Apple grants you a personal, non-exclusive \n license, under Apple's copyrights in this original Apple software (the \n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple \n Software, with or without modifications, in source and/or binary forms; \n provided that if you redistribute the Apple Software in its entirety and \n without modifications, you must retain this notice and the following \n text and disclaimers in all such redistributions of the Apple Software. \n Neither the name, trademarks, service marks or logos of Apple Inc. may \n be used to endorse or promote products derived from the Apple Software \n without specific prior written permission from Apple.  Except as \n expressly stated in this notice, no other rights or licenses, express or \n implied, are granted by Apple herein, including but not limited to any \n patent rights that may be infringed by your derivative works or by other \n works in which the Apple Software may be incorporated. \n  \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE \n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION \n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS \n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND \n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. \n  \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL \n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, \n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED \n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), \n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE \n POSSIBILITY OF SUCH DAMAGE. \n  \n Copyright (C) 2011 Apple Inc. All Rights Reserved. \n  \n */\n\n#import \"MGPRecipesAppDelegate.h\"\n#import \"RecipeDetailViewController.h\"\n\n#import \"Recipe.h\"\n#import \"Ingredient.h\"\n\n#import \"InstructionsViewController.h\"\n#import \"TypeSelectionViewController.h\"\n#import \"RecipePhotoViewController.h\"\n#import \"IngredientDetailViewController.h\"\n\n\n@interface RecipeDetailViewController (PrivateMethods)\n- (void)updatePhotoButton;\n@end\n\n\n\n\n@implementation RecipeDetailViewController\n\n#define TYPE_SECTION 0\n#define INGREDIENTS_SECTION 1\n#define INSTRUCTIONS_SECTION 2\n\n\n#pragma mark -\n#pragma mark View controller\n\n// this listens for the notification that the app delegate has processed new changes from iCloud\n// it then decides if it wants to reload the view based on whether or not the recipe shown in the\n// detail view is impacted by those changes.\n// Basically it trolls through the notification userInfo to see if our recipe or its photo was changed\n- (void)reloadRecipe:(NSNotification*)note {\n    NSDictionary* ui = [note userInfo];\n    NSManagedObjectID* recipeID = [self.recipe objectID];\n    NSManagedObjectID* photoID = [self.recipe.image objectID];\n    \n    if (recipeID) {\n        BOOL shouldReload = (ui[NSInvalidatedAllObjectsKey] != nil);\n        BOOL wasInvalidated = (ui[NSInvalidatedAllObjectsKey] != nil);\n        \n        NSArray *interestingKeys = @[NSUpdatedObjectsKey, NSRefreshedObjectsKey, NSInvalidatedObjectsKey];\n        \n        for (NSString* key in interestingKeys) {\n            NSSet* collection = ui[key];\n            for (NSManagedObjectID* moid in collection) {\n                if ([moid isEqual:recipeID] || [moid isEqual:photoID]) {\n                    if ([key isEqual:NSInvalidatedObjectsKey]) {\n                        wasInvalidated = YES;\n                    }\n                    shouldReload = YES;\n                    break;\n                }\n            }\n            if (shouldReload) {\n                break;\n            }\n        }\n\n        if (shouldReload) {\n            NSManagedObjectContext *moc = self.recipe.managedObjectContext;\n            \n            if (wasInvalidated) {\n// if the object was invalidated, it is no longer a part of our MOC\n// we need a new MO for the objectID we care about\n// this generally only happens if the object was released to rc 0, the persistent store removed, or the MOC reset\n                self.recipe = (Recipe*)[moc objectWithID:recipeID];\n            }\n            \n            [self viewWillAppear:NO];\n        }\n    }\n}\n\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n\n    self.navigationItem.rightBarButtonItem = self.editButtonItem;\n    \n    // Create and set the table header view.\n    if (self.tableHeaderView == nil) {\n        [[NSBundle mainBundle] loadNibNamed:@\"DetailHeaderView\" owner:self options:nil];\n        self.tableView.tableHeaderView = self.tableHeaderView;\n        self.tableView.allowsSelectionDuringEditing = YES;\n    }\n    \n// listen to our app delegates notification that we might want to refresh our detail view\n    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadRecipe:) name:@\"RefreshAllViews\" object:[[UIApplication sharedApplication] delegate]];\n}\n\n\n- (void)viewWillAppear:(BOOL)animated {\n    \n    [super viewWillAppear:animated];\n\t\n    [self.photoButton setImage:self.recipe.thumbnailImage forState:UIControlStateNormal];\n\tself.navigationItem.title = self.recipe.name;\n    self.nameTextField.text = self.recipe.name;\n    self.overviewTextField.text = self.recipe.overview;\n    self.prepTimeTextField.text = self.recipe.prepTime;\n\t[self updatePhotoButton];\n\n\t/*\n\t Create a mutable array that contains the recipe's ingredients ordered by displayOrder.\n\t The table view uses this array to display the ingredients.\n\t Core Data relationships are represented by sets, so have no inherent order. Order is \"imposed\" using the displayOrder attribute, but it would be inefficient to create and sort a new array each time the ingredients section had to be laid out or updated.\n\t */\n\tNSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@\"displayOrder\" ascending:YES];\n\tNSArray *sortDescriptors = [[NSArray alloc] initWithObjects:&sortDescriptor count:1];\n\t\n\tNSMutableArray *sortedIngredients = [[NSMutableArray alloc] initWithArray:[self.recipe.ingredients allObjects]];\n\t[sortedIngredients sortUsingDescriptors:sortDescriptors];\n\tself.ingredients = sortedIngredients;\n\t\n\t// Update recipe type and ingredients on return.\n    [self.tableView reloadData]; \n}\n\n\n- (void)dealloc {\n    [[NSNotificationCenter defaultCenter] removeObserver:self];\n}\n\n\n- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {\n    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);\n}\n\n\n#pragma mark -\n#pragma mark Editing\n\n- (void)setEditing:(BOOL)editing animated:(BOOL)animated {\n    \n    [super setEditing:editing animated:animated];\n    \n\t[self updatePhotoButton];\n\tself.nameTextField.enabled = editing;\n\tself.overviewTextField.enabled = editing;\n\tself.prepTimeTextField.enabled = editing;\n\t[self.navigationItem setHidesBackButton:editing animated:YES];\n\t\n\n\t[self.tableView beginUpdates];\n\t\n    NSUInteger ingredientsCount = [self.recipe.ingredients count];\n\n    NSArray *ingredientsInsertIndexPath = @[[NSIndexPath indexPathForRow:ingredientsCount inSection:INGREDIENTS_SECTION]];\n    \n    if (editing) {\n        [self.tableView insertRowsAtIndexPaths:ingredientsInsertIndexPath withRowAnimation:UITableViewRowAnimationTop];\n\t\tself.overviewTextField.placeholder = @\"Overview\";\n\t} else {\n        [self.tableView deleteRowsAtIndexPaths:ingredientsInsertIndexPath withRowAnimation:UITableViewRowAnimationTop];\n\t\tself.overviewTextField.placeholder = @\"\";\n    }\n    \n    [self.tableView endUpdates];\n\t\n\t/*\n\t If editing is finished, save the managed object context.\n\t */\n\tif (!editing) {\n\t\tNSManagedObjectContext *context = self.recipe.managedObjectContext;\n        [context MR_saveToPersistentStoreAndWait];\n\t}\n}\n\n\n- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {\n\t\n\tif (textField == self.nameTextField) {\n\t\tself.recipe.name = self.nameTextField.text;\n\t\tself.navigationItem.title = self.recipe.name;\n\t}\n\telse if (textField == self.overviewTextField) {\n\t\tself.recipe.overview = self.overviewTextField.text;\n\t}\n\telse if (textField == self.prepTimeTextField) {\n\t\tself.recipe.prepTime = self.prepTimeTextField.text;\n\t}\n\treturn YES;\n}\n\n\n- (BOOL)textFieldShouldReturn:(UITextField *)textField {\n\t[textField resignFirstResponder];\n\treturn YES;\n}\n\n\n#pragma mark -\n#pragma mark UITableView Delegate/Datasource\n\n- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {\n    return 4;\n}\n\n\n- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {\n    NSString *title = nil;\n    // Return a title or nil as appropriate for the section.\n    switch (section) {\n        case TYPE_SECTION:\n            title = @\"Category\";\n            break;\n        case INGREDIENTS_SECTION:\n            title = @\"Ingredients\";\n            break;\n        default:\n            break;\n    }\n    return title;;\n}\n\n\n- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {\n    NSInteger rows = 0;\n    \n    /*\n     The number of rows depends on the section.\n     In the case of ingredients, if editing, add a row in editing mode to present an \"Add Ingredient\" cell.\n\t */\n    switch (section) {\n        case TYPE_SECTION:\n        case INSTRUCTIONS_SECTION:\n            rows = 1;\n            break;\n        case INGREDIENTS_SECTION:\n            rows = [self.recipe.ingredients count];\n            if (self.editing) {\n                rows++;\n            }\n            break;\n\t\tdefault:\n            break;\n    }\n    return rows;\n}\n\n\n- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {\n    UITableViewCell *cell = nil;\n    \n     // For the Ingredients section, if necessary create a new cell and configure it with an additional label for the amount.  Give the cell a different identifier from that used for cells in other sections so that it can be dequeued separately.\n    if (indexPath.section == INGREDIENTS_SECTION) {\n\t\tNSUInteger ingredientCount = [self.recipe.ingredients count];\n        NSInteger row = indexPath.row;\n\t\t\n        if (indexPath.row < ingredientCount) {\n            // If the row is within the range of the number of ingredients for the current recipe, then configure the cell to show the ingredient name and amount.\n\t\t\tstatic NSString *IngredientsCellIdentifier = @\"IngredientsCell\";\n\t\t\t\n\t\t\tcell = [tableView dequeueReusableCellWithIdentifier:IngredientsCellIdentifier];\n\t\t\t\n\t\t\tif (cell == nil) {\n\t\t\t\t // Create a cell to display an ingredient.\n\t\t\t\tcell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:IngredientsCellIdentifier];\n\t\t\t\tcell.accessoryType = UITableViewCellAccessoryNone;\n\t\t\t}\n\t\t\t\n            Ingredient *ingredient = (self.ingredients)[row];\n            cell.textLabel.text = ingredient.name;\n\t\t\tcell.detailTextLabel.text = ingredient.amount;\n        } else {\n            // If the row is outside the range, it's the row that was added to allow insertion (see tableView:numberOfRowsInSection:) so give it an appropriate label.\n\t\t\tstatic NSString *AddIngredientCellIdentifier = @\"AddIngredientCell\";\n\t\t\t\n\t\t\tcell = [tableView dequeueReusableCellWithIdentifier:AddIngredientCellIdentifier];\n\t\t\tif (cell == nil) {\n\t\t\t\t // Create a cell to display \"Add Ingredient\".\n\t\t\t\tcell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:AddIngredientCellIdentifier];\n\t\t\t\tcell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;\n\t\t\t}\n            cell.textLabel.text = @\"Add Ingredient\";\n        }\n    } else {\n         // If necessary create a new cell and configure it appropriately for the section.  Give the cell a different identifier from that used for cells in the Ingredients section so that it can be dequeued separately.\n        static NSString *MyIdentifier = @\"GenericCell\";\n        \n        cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];\n        if (cell == nil) {\n            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];\n            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;\n        }\n        \n        NSString *text = nil;\n        \n        switch (indexPath.section) {\n            case TYPE_SECTION: // type -- should be selectable -> checkbox\n                text = [self.recipe.type valueForKey:@\"name\"];\n                cell.accessoryType = UITableViewCellAccessoryNone;\n                cell.editingAccessoryType = UITableViewCellAccessoryDisclosureIndicator;\n                break;\n            case INSTRUCTIONS_SECTION: // instructions\n                text = @\"Instructions\";\n                cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;\n                cell.editingAccessoryType = UITableViewCellAccessoryNone;\n                break;\n            default:\n                break;\n        }\n        \n        cell.textLabel.text = text;\n    }\n    return cell;\n}\n\n\n#pragma mark -\n#pragma mark Editing rows\n\n- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {\n\tNSIndexPath *rowToSelect = indexPath;\n    NSInteger section = indexPath.section;\n    BOOL isEditing = self.editing;\n    \n    // If editing, don't allow instructions to be selected\n    // Not editing: Only allow instructions to be selected\n    if ((isEditing && section == INSTRUCTIONS_SECTION) || (!isEditing && section != INSTRUCTIONS_SECTION)) {\n        [tableView deselectRowAtIndexPath:indexPath animated:YES];\n        rowToSelect = nil;    \n    }\n\n\treturn rowToSelect;\n}\n\n\n- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {\n    \n    NSInteger section = indexPath.section;\n    UIViewController *nextViewController = nil;\n    \n    /*\n     What to do on selection depends on what section the row is in.\n     For Type, Instructions, and Ingredients, create and push a new view controller of the type appropriate for the next screen.\n     */\n    switch (section) {\n        case TYPE_SECTION:\n            nextViewController = [[TypeSelectionViewController alloc] initWithStyle:UITableViewStyleGrouped];\n            ((TypeSelectionViewController *)nextViewController).recipe = self.recipe;\n            break;\n\t\t\t\n        case INSTRUCTIONS_SECTION:\n            nextViewController = [[InstructionsViewController alloc] initWithNibName:@\"InstructionsView\" bundle:nil];\n            ((InstructionsViewController *)nextViewController).recipe = self.recipe;\n            break;\n\t\t\t\n        case INGREDIENTS_SECTION:\n            nextViewController = [[IngredientDetailViewController alloc] initWithStyle:UITableViewStyleGrouped];\n            ((IngredientDetailViewController *)nextViewController).recipe = self.recipe;\n            \n            if (indexPath.row < [self.recipe.ingredients count]) {\n                Ingredient *ingredient = (self.ingredients)[indexPath.row];\n                ((IngredientDetailViewController *)nextViewController).ingredient = ingredient;\n            }\n            break;\n\t\t\t\n        default:\n            break;\n    }\n    \n    // If we got a new view controller, push it .\n    if (nextViewController) {\n        [self.navigationController pushViewController:nextViewController animated:YES];\n    }\n}\n\n\n- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {\n\tUITableViewCellEditingStyle style = UITableViewCellEditingStyleNone;\n    // Only allow editing in the ingredients section.\n    // In the ingredients section, the last row (row number equal to the count of ingredients) is added automatically (see tableView:cellForRowAtIndexPath:) to provide an insertion cell, so configure that cell for insertion; the other cells are configured for deletion.\n    if (indexPath.section == INGREDIENTS_SECTION) {\n        // If this is the last item, it's the insertion row.\n        if (indexPath.row == [self.recipe.ingredients count]) {\n            style = UITableViewCellEditingStyleInsert;\n        }\n        else {\n            style = UITableViewCellEditingStyleDelete;\n        }\n    }\n    \n    return style;\n}\n\n\n- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {\n    \n    // Only allow deletion, and only in the ingredients section\n    if ((editingStyle == UITableViewCellEditingStyleDelete) && (indexPath.section == INGREDIENTS_SECTION)) {\n        // Remove the corresponding ingredient object from the recipe's ingredient list and delete the appropriate table view cell.\n        Ingredient *ingredient = (self.ingredients)[indexPath.row];\n        [self.recipe removeIngredientsObject:ingredient];\n        [self.ingredients removeObject:ingredient];\n\n        [ingredient MR_deleteEntity];\n        \n        [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop];\n    }\n}\n\n\n#pragma mark -\n#pragma mark Moving rows\n\n- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {\n    BOOL canMove = NO;\n    // Moves are only allowed within the ingredients section.  Within the ingredients section, the last row (Add Ingredient) cannot be moved.\n    if (indexPath.section == INGREDIENTS_SECTION) {\n        canMove = indexPath.row != [self.recipe.ingredients count];\n    }\n    return canMove;\n}\n\n\n- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath {\n    NSIndexPath *target = proposedDestinationIndexPath;\n    \n    /*\n     Moves are only allowed within the ingredients section, so make sure the destination is in the ingredients section.\n     If the destination is in the ingredients section, make sure that it's not the Add Ingredient row -- if it is, retarget for the penultimate row.\n     */\n\tNSUInteger proposedSection = proposedDestinationIndexPath.section;\n\t\n    if (proposedSection < INGREDIENTS_SECTION) {\n        target = [NSIndexPath indexPathForRow:0 inSection:INGREDIENTS_SECTION];\n    } else if (proposedSection > INGREDIENTS_SECTION) {\n        target = [NSIndexPath indexPathForRow:([self.recipe.ingredients count] - 1) inSection:INGREDIENTS_SECTION];\n    } else {\n        NSUInteger ingredientsCount_1 = [self.recipe.ingredients count] - 1;\n        \n        if (proposedDestinationIndexPath.row > ingredientsCount_1) {\n            target = [NSIndexPath indexPathForRow:ingredientsCount_1 inSection:INGREDIENTS_SECTION];\n        }\n    }\n\t\n    return target;\n}\n\n\n- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {\n\t\n\t/*\n\t Update the ingredients array in response to the move.\n\t Update the display order indexes within the range of the move.\n\t */\n    Ingredient *ingredient = (self.ingredients)[fromIndexPath.row];\n    [self.ingredients removeObjectAtIndex:fromIndexPath.row];\n    [self.ingredients insertObject:ingredient atIndex:toIndexPath.row];\n\t\n\tNSInteger start = fromIndexPath.row;\n\tif (toIndexPath.row < start) {\n\t\tstart = toIndexPath.row;\n\t}\n\tNSInteger end = toIndexPath.row;\n\tif (fromIndexPath.row > end) {\n\t\tend = fromIndexPath.row;\n\t}\n\tfor (NSInteger i = start; i <= end; i++) {\n\t\tingredient = (self.ingredients)[i];\n\t\tingredient.displayOrder = @(i);\n\t}\n}\n\n\n#pragma mark -\n#pragma mark Photo\n\n- (IBAction)photoTapped {\n    // If in editing state, then display an image picker; if not, create and push a photo view controller.\n\tif (self.editing) {\n\t\tUIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];\n\t\timagePicker.delegate = self;\n        [self presentViewController:imagePicker animated:YES completion:nil];\n\t} else {\t\n\t\tRecipePhotoViewController *recipePhotoViewController = [[RecipePhotoViewController alloc] init];\n        recipePhotoViewController.hidesBottomBarWhenPushed = YES;\n\t\trecipePhotoViewController.recipe = self.recipe;\n\t\t[self.navigationController pushViewController:recipePhotoViewController animated:YES];\n\t}\n}\n\n\n- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)selectedImage editingInfo:(NSDictionary *)editingInfo {\n\t\n\t// Delete any existing image.\n\tNSManagedObject *oldImage = self.recipe.image;\n\tif (oldImage != nil) {\n\t\t[self.recipe.managedObjectContext deleteObject:oldImage];\n\t}\n\t\n    // Create an image object for the new image.\n\tNSManagedObject *image = [NSEntityDescription insertNewObjectForEntityForName:@\"Image\" inManagedObjectContext:self.recipe.managedObjectContext];\n\tself.recipe.image = image;\n\n\t// Set the image for the image managed object.\n\t[image setValue:selectedImage forKey:@\"image\"];\n\t\n\t// Create a thumbnail version of the image for the recipe object.\n\tCGSize size = selectedImage.size;\n\tCGFloat ratio = 0;\n\tif (size.width > size.height) {\n\t\tratio = 44.0 / size.width;\n\t} else {\n\t\tratio = 44.0 / size.height;\n\t}\n\tCGRect rect = CGRectMake(0.0, 0.0, ratio * size.width, ratio * size.height);\n\t\n\tUIGraphicsBeginImageContext(rect.size);\n\t[selectedImage drawInRect:rect];\n\tself.recipe.thumbnailImage = UIGraphicsGetImageFromCurrentImageContext();\n\tUIGraphicsEndImageContext();\n\t\n    [self dismissViewControllerAnimated:YES completion:nil];\n}\n\n\n- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {\n    [self dismissViewControllerAnimated:YES completion:nil];\n}\n\n\n- (void)updatePhotoButton {\n\t/*\n\t How to present the photo button depends on the editing state and whether the recipe has a thumbnail image.\n\t * If the recipe has a thumbnail, set the button's highlighted state to the same as the editing state (it's highlighted if editing).\n\t * If the recipe doesn't have a thumbnail, then: if editing, enable the button and show an image that says \"Choose Photo\" or similar; if not editing then disable the button and show nothing.  \n\t */\n\tBOOL editing = self.editing;\n\t\n\tif (self.recipe.thumbnailImage != nil) {\n\t\tself.photoButton.highlighted = editing;\n\t} else {\n\t\tself.photoButton.enabled = editing;\n\t\t\n\t\tif (editing) {\n\t\t\t[self.photoButton setImage:[UIImage imageNamed:@\"choosePhoto.png\"] forState:UIControlStateNormal];\n\t\t} else {\n\t\t\t[self.photoButton setImage:nil forState:UIControlStateNormal];\n\t\t}\n\t}\n}\n\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/RecipeListTableViewController.h",
    "content": " /*\n     File: RecipeListTableViewController.h\n Abstract: Table view controller to manage an editable table view that displays a list of recipes.\n Recipes are displayed in a custom table view cell.\n \n  Version: 1.5\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2011 Apple Inc. All Rights Reserved.\n \n */\n\n#import \"RecipeAddViewController.h\"\n\n@class Recipe;\n@class RecipeTableViewCell;\n\n@interface RecipeListTableViewController : UITableViewController <RecipeAddDelegate, NSFetchedResultsControllerDelegate> \n\n@property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;\n@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;\n\n- (void)showRecipe:(Recipe *)recipe animated:(BOOL)animated;\n- (void)configureCell:(RecipeTableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath;\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/RecipeListTableViewController.m",
    "content": "/*\n     File: RecipeListTableViewController.m \n Abstract: Table view controller to manage an editable table view that displays a list of recipes.\n Recipes are displayed in a custom table view cell.\n  \n  Version: 1.5\n  \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple \n Inc. (\"Apple\") in consideration of your agreement to the following \n terms, and your use, installation, modification or redistribution of \n this Apple software constitutes acceptance of these terms.  If you do \n not agree with these terms, please do not use, install, modify or \n redistribute this Apple software. \n  \n In consideration of your agreement to abide by the following terms, and \n subject to these terms, Apple grants you a personal, non-exclusive \n license, under Apple's copyrights in this original Apple software (the \n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple \n Software, with or without modifications, in source and/or binary forms; \n provided that if you redistribute the Apple Software in its entirety and \n without modifications, you must retain this notice and the following \n text and disclaimers in all such redistributions of the Apple Software. \n Neither the name, trademarks, service marks or logos of Apple Inc. may \n be used to endorse or promote products derived from the Apple Software \n without specific prior written permission from Apple.  Except as \n expressly stated in this notice, no other rights or licenses, express or \n implied, are granted by Apple herein, including but not limited to any \n patent rights that may be infringed by your derivative works or by other \n works in which the Apple Software may be incorporated. \n  \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE \n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION \n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS \n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND \n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. \n  \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL \n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, \n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED \n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), \n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE \n POSSIBILITY OF SUCH DAMAGE. \n  \n Copyright (C) 2011 Apple Inc. All Rights Reserved. \n  \n */\n\n#import \"RecipeListTableViewController.h\"\n#import \"RecipeDetailViewController.h\"\n#import \"Recipe.h\"\n#import \"RecipeTableViewCell.h\"\n\n@implementation RecipeListTableViewController\n\n#pragma mark -\n#pragma mark UIViewController overrides\n\n// because the app delegate now loads the NSPersistentStore into the NSPersistentStoreCoordinator asynchronously\n// we will see the NSManagedObjectContext set up before any persistent stores are registered\n// we will need to fetch again after the persistent store is loaded\n- (void)reloadFetchedResults:(NSNotification*)note {\n\n    NSError *error = nil;\n\tif (![[self fetchedResultsController] performFetch:&error]) {\n\t\t/*\n\t\t Replace this implementation with code to handle the error appropriately.\n\t\t \n\t\t abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. If it is not possible to recover from the error, display an alert panel that instructs the user to quit the application by pressing the Home button.\n\t\t */\n\t\tNSLog(@\"Unresolved error %@, %@\", error, [error userInfo]);\n\t\tabort();\n\t}\t\t\n    \n    if (note) {\n        [self.tableView reloadData];\n    }\n}\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n\n    // Configure the navigation bar\n    self.title = @\"Recipes\";\n\n    self.navigationItem.leftBarButtonItem = self.editButtonItem;\n    \n    UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(add:)];\n    self.navigationItem.rightBarButtonItem = addButtonItem;\n    \n    // Set the table view's row height\n    self.tableView.rowHeight = 44.0;\n\t\n    [self reloadFetchedResults:nil];\n\n// observe the app delegate telling us when it's finished asynchronously setting up the persistent store\n    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadFetchedResults:) name:@\"RefetchAllDatabaseData\" object:[[UIApplication sharedApplication] delegate]];\n}\n\n// clean up our new observers\n- (void)dealloc {\n    [[NSNotificationCenter defaultCenter] removeObserver:self];\n}\n\n- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {\n    // Support all orientations except upside down\n    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);\n}\n\n\n#pragma mark -\n#pragma mark Recipe support\n\n- (void)add:(id)sender {\n     // To add a new recipe, create a RecipeAddViewController.  Present it as a modal view so that the user's focus is on the task of adding the recipe; wrap the controller in a navigation controller to provide a navigation bar for the Done and Save buttons (added by the RecipeAddViewController in its viewDidLoad method).\n    RecipeAddViewController *addController = [[RecipeAddViewController alloc] initWithNibName:@\"RecipeAddView\" bundle:nil];\n    addController.delegate = self;\n\t\n\tRecipe *newRecipe = [Recipe MR_createEntityInContext:self.managedObjectContext];\n\taddController.recipe = newRecipe;\n\n    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:addController];\n    [self presentViewController:navigationController animated:YES completion:nil];\n}\n\n\n- (void)recipeAddViewController:(RecipeAddViewController *)recipeAddViewController didAddRecipe:(Recipe *)recipe {\n    if (recipe) {        \n        // Show the recipe in a new view controller\n        [self showRecipe:recipe animated:NO];\n    }\n    \n    // Dismiss the modal add recipe view controller\n    [self dismissViewControllerAnimated:YES completion:nil];\n}\n\n\n- (void)showRecipe:(Recipe *)recipe animated:(BOOL)animated {\n    // Create a detail view controller, set the recipe, then push it.\n    RecipeDetailViewController *detailViewController = [[RecipeDetailViewController alloc] initWithStyle:UITableViewStyleGrouped];\n    detailViewController.recipe = recipe;\n    \n    [self.navigationController pushViewController:detailViewController animated:animated];\n}\n\n\n#pragma mark -\n#pragma mark Table view methods\n\n- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {\n    NSInteger count = [[self.fetchedResultsController sections] count];\n    \n\tif (count == 0) {\n\t\tcount = 1;\n\t}\n\t\n    return count;\n}\n\n\n- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {\n    NSInteger numberOfRows = 0;\n\t\n    if ([[self.fetchedResultsController sections] count] > 0) {\n        id <NSFetchedResultsSectionInfo> sectionInfo = [self.fetchedResultsController sections][section];\n        numberOfRows = [sectionInfo numberOfObjects];\n    }\n    \n    return numberOfRows;\n}\n\n\n- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {\n    // Dequeue or if necessary create a RecipeTableViewCell, then set its recipe to the recipe for the current row.\n    static NSString *RecipeCellIdentifier = @\"RecipeCellIdentifier\";\n    \n    RecipeTableViewCell *recipeCell = (RecipeTableViewCell *)[tableView dequeueReusableCellWithIdentifier:RecipeCellIdentifier];\n    if (recipeCell == nil) {\n        recipeCell = [[RecipeTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:RecipeCellIdentifier];\n\t\trecipeCell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;\n    }\n    \n\t[self configureCell:recipeCell atIndexPath:indexPath];\n    \n    return recipeCell;\n}\n\n\n- (void)configureCell:(RecipeTableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {\n    // Configure the cell\n\tRecipe *recipe = (Recipe *)[self.fetchedResultsController objectAtIndexPath:indexPath];\n    cell.recipe = recipe;\n}\n\n\n\n- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {\n\tRecipe *recipe = (Recipe *)[self.fetchedResultsController objectAtIndexPath:indexPath];\n    \n    [self showRecipe:recipe animated:YES];\n}\n\n\n// Override to support editing the table view.\n- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {\n    if (editingStyle == UITableViewCellEditingStyleDelete) {\n\n        id managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];\n        [managedObject MR_deleteEntity];\n        [[managedObject managedObjectContext] MR_saveToPersistentStoreAndWait];\n\t}\n}\n\n\n#pragma mark -\n#pragma mark Fetched results controller\n\n- (NSFetchedResultsController *)fetchedResultsController {\n    // Set up the fetched results controller if needed.\n    if (_fetchedResultsController == nil) {\n        self.fetchedResultsController = [Recipe MR_fetchAllSortedBy:@\"name\" ascending:YES withPredicate:nil groupBy:nil delegate:self];\n    }\n\t\n\treturn _fetchedResultsController;\n}    \n\n\n/**\n Delegate methods of NSFetchedResultsController to respond to additions, removals and so on.\n */\n\n- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller {\n\t// The fetch controller is about to start sending change notifications, so prepare the table view for updates.\n\t[self.tableView beginUpdates];\n}\n\n\n- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath {\n\tUITableView *tableView = self.tableView;\n\t\n\tswitch(type) {\n\t\tcase NSFetchedResultsChangeInsert:\n\t\t\t[tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];\n\t\t\tbreak;\n\t\t\t\n\t\tcase NSFetchedResultsChangeDelete:\n\t\t\t[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];\n\t\t\tbreak;\n\t\t\t\n\t\tcase NSFetchedResultsChangeUpdate:\n\t\t\t[self configureCell:(RecipeTableViewCell *)[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];\n\t\t\tbreak;\n\t\t\t\n\t\tcase NSFetchedResultsChangeMove:\n\t\t\t[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];\n            [tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];\n            break;\n\t}\n}\n\n\n- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type {\n\tswitch(type) {\n\t\tcase NSFetchedResultsChangeInsert:\n\t\t\t[self.tableView insertSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];\n\t\t\tbreak;\n\t\t\t\n\t\tcase NSFetchedResultsChangeDelete:\n\t\t\t[self.tableView deleteSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];\n\t\t\tbreak;\n\n        default:\n            break;\n\t}\n}\n\n\n- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {\n\t// The fetch controller has sent all current change notifications, so tell the table view to process all updates.\n\t[self.tableView endUpdates];\n}\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/RecipePhotoViewController.h",
    "content": "/*\n     File: RecipePhotoViewController.h\n Abstract: View controller to manage a view to display a recipe's photo.\n The image view is created programmatically.\n \n  Version: 1.4\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2010 Apple Inc. All Rights Reserved.\n \n */\n\n@class Recipe;\n\n@interface RecipePhotoViewController : UIViewController\n\n@property(nonatomic, retain) Recipe *recipe;\n@property(nonatomic, retain) UIImageView *imageView;\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/RecipePhotoViewController.m",
    "content": "/*\n     File: RecipePhotoViewController.m \n Abstract: View controller to manage a view to display a recipe's photo.\n The image view is created programmatically.\n  \n  Version: 1.4 \n  \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple \n Inc. (\"Apple\") in consideration of your agreement to the following \n terms, and your use, installation, modification or redistribution of \n this Apple software constitutes acceptance of these terms.  If you do \n not agree with these terms, please do not use, install, modify or \n redistribute this Apple software. \n  \n In consideration of your agreement to abide by the following terms, and \n subject to these terms, Apple grants you a personal, non-exclusive \n license, under Apple's copyrights in this original Apple software (the \n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple \n Software, with or without modifications, in source and/or binary forms; \n provided that if you redistribute the Apple Software in its entirety and \n without modifications, you must retain this notice and the following \n text and disclaimers in all such redistributions of the Apple Software. \n Neither the name, trademarks, service marks or logos of Apple Inc. may \n be used to endorse or promote products derived from the Apple Software \n without specific prior written permission from Apple.  Except as \n expressly stated in this notice, no other rights or licenses, express or \n implied, are granted by Apple herein, including but not limited to any \n patent rights that may be infringed by your derivative works or by other \n works in which the Apple Software may be incorporated. \n  \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE \n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION \n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS \n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND \n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. \n  \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL \n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, \n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED \n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), \n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE \n POSSIBILITY OF SUCH DAMAGE. \n  \n Copyright (C) 2010 Apple Inc. All Rights Reserved. \n  \n */\n\n#import \"RecipePhotoViewController.h\"\n\n#import \"Recipe.h\"\n\n@implementation RecipePhotoViewController\n\n\n- (void)loadView {\n    [super loadView];\n    \n\tself.title = @\"Photo\";\n\n    _imageView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];\n    _imageView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;\n    _imageView.contentMode = UIViewContentModeScaleAspectFit;\n    _imageView.backgroundColor = [UIColor blackColor];\n    \n    self.view = _imageView;\n}\n\n\n- (void)viewWillAppear:(BOOL)animated {\n    [super viewWillAppear:animated];\n\n    _imageView.image = [_recipe.image valueForKey:@\"image\"];\n}\n\n\n- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {\n    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);\n}\n\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/RecipeTableViewCell.h",
    "content": "/*\n     File: RecipeTableViewCell.h\n Abstract: A table view cell that displays information about a Recipe.  It uses individual subviews of its content view to show the name, picture, description, and preparation time for each recipe.  If the table view switches to editing mode, the cell reformats itself to move the preparation time off-screen, and resizes the name and description fields accordingly.\n \n  Version: 1.4\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2010 Apple Inc. All Rights Reserved.\n \n */\n\n#import \"Recipe.h\"\n\n@interface RecipeTableViewCell : UITableViewCell\n\n@property (nonatomic, retain) Recipe *recipe;\n\n@property (nonatomic, retain) UIImageView *imageView;\n@property (nonatomic, retain) UILabel *nameLabel;\n@property (nonatomic, retain) UILabel *overviewLabel;\n@property (nonatomic, retain) UILabel *prepTimeLabel;\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/RecipeTableViewCell.m",
    "content": "/*\n     File: RecipeTableViewCell.m \n Abstract: A table view cell that displays information about a Recipe.  It uses individual subviews of its content view to show the name, picture, description, and preparation time for each recipe.  If the table view switches to editing mode, the cell reformats itself to move the preparation time off-screen, and resizes the name and description fields accordingly.\n  \n  Version: 1.4 \n  \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple \n Inc. (\"Apple\") in consideration of your agreement to the following \n terms, and your use, installation, modification or redistribution of \n this Apple software constitutes acceptance of these terms.  If you do \n not agree with these terms, please do not use, install, modify or \n redistribute this Apple software. \n  \n In consideration of your agreement to abide by the following terms, and \n subject to these terms, Apple grants you a personal, non-exclusive \n license, under Apple's copyrights in this original Apple software (the \n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple \n Software, with or without modifications, in source and/or binary forms; \n provided that if you redistribute the Apple Software in its entirety and \n without modifications, you must retain this notice and the following \n text and disclaimers in all such redistributions of the Apple Software. \n Neither the name, trademarks, service marks or logos of Apple Inc. may \n be used to endorse or promote products derived from the Apple Software \n without specific prior written permission from Apple.  Except as \n expressly stated in this notice, no other rights or licenses, express or \n implied, are granted by Apple herein, including but not limited to any \n patent rights that may be infringed by your derivative works or by other \n works in which the Apple Software may be incorporated. \n  \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE \n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION \n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS \n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND \n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. \n  \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL \n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, \n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED \n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), \n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE \n POSSIBILITY OF SUCH DAMAGE. \n  \n Copyright (C) 2010 Apple Inc. All Rights Reserved. \n  \n */\n\n#import \"RecipeTableViewCell.h\"\n\n#pragma mark -\n#pragma mark SubviewFrames category\n\n@interface RecipeTableViewCell (SubviewFrames)\n- (CGRect)_imageViewFrame;\n- (CGRect)_nameLabelFrame;\n- (CGRect)_descriptionLabelFrame;\n- (CGRect)_prepTimeLabelFrame;\n@end\n\n\n#pragma mark -\n#pragma mark RecipeTableViewCell implementation\n\n@implementation RecipeTableViewCell\n\n@synthesize imageView;\n\n#pragma mark -\n#pragma mark Initialization\n\n- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {\n\n\tif (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {\n        imageView = [[UIImageView alloc] initWithFrame:CGRectZero];\n\t\timageView.contentMode = UIViewContentModeScaleAspectFit;\n        [self.contentView addSubview:imageView];\n\n        _overviewLabel = [[UILabel alloc] initWithFrame:CGRectZero];\n        [_overviewLabel setFont:[UIFont systemFontOfSize:12.0]];\n        [_overviewLabel setTextColor:[UIColor darkGrayColor]];\n        [_overviewLabel setHighlightedTextColor:[UIColor whiteColor]];\n        [self.contentView addSubview:_overviewLabel];\n\n        _prepTimeLabel = [[UILabel alloc] initWithFrame:CGRectZero];\n        _prepTimeLabel.textAlignment = NSTextAlignmentRight;\n        [_prepTimeLabel setFont:[UIFont systemFontOfSize:12.0]];\n        [_prepTimeLabel setTextColor:[UIColor blackColor]];\n        [_prepTimeLabel setHighlightedTextColor:[UIColor whiteColor]];\n\t\t_prepTimeLabel.minimumScaleFactor = 7.0;\n\t\t_prepTimeLabel.lineBreakMode = NSLineBreakByTruncatingTail;\n        [self.contentView addSubview:_prepTimeLabel];\n\n        _nameLabel = [[UILabel alloc] initWithFrame:CGRectZero];\n        [_nameLabel setFont:[UIFont boldSystemFontOfSize:14.0]];\n        [_nameLabel setTextColor:[UIColor blackColor]];\n        [_nameLabel setHighlightedTextColor:[UIColor whiteColor]];\n        [self.contentView addSubview:_nameLabel];\n    }\n\n    return self;\n}\n\n\n#pragma mark -\n#pragma mark Laying out subviews\n\n/*\n To save space, the prep time label disappears during editing.\n */\n- (void)layoutSubviews {\n    [super layoutSubviews];\n\t\n    [imageView setFrame:[self _imageViewFrame]];\n    [_nameLabel setFrame:[self _nameLabelFrame]];\n    [_overviewLabel setFrame:[self _descriptionLabelFrame]];\n    [_prepTimeLabel setFrame:[self _prepTimeLabelFrame]];\n    if (self.editing) {\n        _prepTimeLabel.alpha = 0.0;\n    } else {\n        _prepTimeLabel.alpha = 1.0;\n    }\n}\n\n\n#define IMAGE_SIZE          42.0\n#define EDITING_INSET       10.0\n#define TEXT_LEFT_MARGIN    8.0\n#define TEXT_RIGHT_MARGIN   5.0\n#define PREP_TIME_WIDTH     80.0\n\n/*\n Return the frame of the various subviews -- these are dependent on the editing state of the cell.\n */\n- (CGRect)_imageViewFrame {\n    if (self.editing) {\n        return CGRectMake(EDITING_INSET, 0.0, IMAGE_SIZE, IMAGE_SIZE);\n    }\n\telse {\n        return CGRectMake(0.0, 0.0, IMAGE_SIZE, IMAGE_SIZE);\n    }\n}\n\n- (CGRect)_nameLabelFrame {\n    if (self.editing) {\n        return CGRectMake(IMAGE_SIZE + EDITING_INSET + TEXT_LEFT_MARGIN, 4.0, self.contentView.bounds.size.width - IMAGE_SIZE - EDITING_INSET - TEXT_LEFT_MARGIN, 16.0);\n    }\n\telse {\n        return CGRectMake(IMAGE_SIZE + TEXT_LEFT_MARGIN, 4.0, self.contentView.bounds.size.width - IMAGE_SIZE - TEXT_RIGHT_MARGIN * 2 - PREP_TIME_WIDTH, 16.0);\n    }\n}\n\n- (CGRect)_descriptionLabelFrame {\n    if (self.editing) {\n        return CGRectMake(IMAGE_SIZE + EDITING_INSET + TEXT_LEFT_MARGIN, 22.0, self.contentView.bounds.size.width - IMAGE_SIZE - EDITING_INSET - TEXT_LEFT_MARGIN, 16.0);\n    }\n\telse {\n        return CGRectMake(IMAGE_SIZE + TEXT_LEFT_MARGIN, 22.0, self.contentView.bounds.size.width - IMAGE_SIZE - TEXT_LEFT_MARGIN, 16.0);\n    }\n}\n\n- (CGRect)_prepTimeLabelFrame {\n    CGRect contentViewBounds = self.contentView.bounds;\n    return CGRectMake(contentViewBounds.size.width - PREP_TIME_WIDTH - TEXT_RIGHT_MARGIN, 4.0, PREP_TIME_WIDTH, 16.0);\n}\n\n\n#pragma mark -\n#pragma mark Recipe set accessor\n\n- (void)setRecipe:(Recipe *)newRecipe {\n    _recipe = newRecipe;\n\timageView.image = _recipe.thumbnailImage;\n\t_nameLabel.text = _recipe.name;\n\t_overviewLabel.text = _recipe.overview;\n\t_prepTimeLabel.text = _recipe.prepTime;\n}\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/TemperatureCell.h",
    "content": "/*\n     File: TemperatureCell.h\n Abstract: A table view cell that displays temperature in Centigrade, Fahrenheit, and Gas Mark.\n \n  Version: 1.4\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2010 Apple Inc. All Rights Reserved.\n \n */\n\n@interface TemperatureCell : UITableViewCell {\n    \n    UILabel *cLabel;\n    UILabel *fLabel;\n    UILabel *gLabel;\n}\n\n@property (nonatomic, retain) IBOutlet UILabel *cLabel;\n@property (nonatomic, retain) IBOutlet UILabel *fLabel;\n@property (nonatomic, retain) IBOutlet UILabel *gLabel;\n\n- (void)setTemperatureDataFromDictionary:(NSDictionary *)temperatureDictionary;\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/TemperatureCell.m",
    "content": "/*\n     File: TemperatureCell.m \n Abstract: A table view cell that displays temperature in Centigrade, Fahrenheit, and Gas Mark.\n  \n  Version: 1.4 \n  \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple \n Inc. (\"Apple\") in consideration of your agreement to the following \n terms, and your use, installation, modification or redistribution of \n this Apple software constitutes acceptance of these terms.  If you do \n not agree with these terms, please do not use, install, modify or \n redistribute this Apple software. \n  \n In consideration of your agreement to abide by the following terms, and \n subject to these terms, Apple grants you a personal, non-exclusive \n license, under Apple's copyrights in this original Apple software (the \n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple \n Software, with or without modifications, in source and/or binary forms; \n provided that if you redistribute the Apple Software in its entirety and \n without modifications, you must retain this notice and the following \n text and disclaimers in all such redistributions of the Apple Software. \n Neither the name, trademarks, service marks or logos of Apple Inc. may \n be used to endorse or promote products derived from the Apple Software \n without specific prior written permission from Apple.  Except as \n expressly stated in this notice, no other rights or licenses, express or \n implied, are granted by Apple herein, including but not limited to any \n patent rights that may be infringed by your derivative works or by other \n works in which the Apple Software may be incorporated. \n  \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE \n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION \n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS \n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND \n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. \n  \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL \n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, \n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED \n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), \n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE \n POSSIBILITY OF SUCH DAMAGE. \n  \n Copyright (C) 2010 Apple Inc. All Rights Reserved. \n  \n */\n\n#import \"TemperatureCell.h\"\n\n\n@implementation TemperatureCell\n\n@synthesize cLabel, fLabel, gLabel;\n\n\n- (void)setTemperatureDataFromDictionary:(NSDictionary *)temperatureDictionary {\n    // Update text in labels from the dictionary\n    cLabel.text = temperatureDictionary[@\"c\"];\n    fLabel.text = temperatureDictionary[@\"f\"];\n    gLabel.text = temperatureDictionary[@\"g\"];\n}\n\n\n\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/TemperatureConverterViewController.h",
    "content": " /*\n     File: TemperatureConverterViewController.h\n Abstract: View controller to display cooking temperatures in Centigrade, Fahrenheit, and Gas Mark.\n \n  Version: 1.4\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2010 Apple Inc. All Rights Reserved.\n \n */\n\n@class TemperatureCell;\n\n@interface TemperatureConverterViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>\n\n@property (nonatomic, retain) NSArray *temperatureData;\n\n@property (nonatomic, retain) IBOutlet UITableView *tableView;\n@property (nonatomic, retain) IBOutlet TemperatureCell *temperatureCell;\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/TemperatureConverterViewController.m",
    "content": "/*\n     File: TemperatureConverterViewController.m \n Abstract: View controller to display cooking temperatures in Centigrade, Fahrenheit, and Gas Mark.\n  \n  Version: 1.4 \n  \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple \n Inc. (\"Apple\") in consideration of your agreement to the following \n terms, and your use, installation, modification or redistribution of \n this Apple software constitutes acceptance of these terms.  If you do \n not agree with these terms, please do not use, install, modify or \n redistribute this Apple software. \n  \n In consideration of your agreement to abide by the following terms, and \n subject to these terms, Apple grants you a personal, non-exclusive \n license, under Apple's copyrights in this original Apple software (the \n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple \n Software, with or without modifications, in source and/or binary forms; \n provided that if you redistribute the Apple Software in its entirety and \n without modifications, you must retain this notice and the following \n text and disclaimers in all such redistributions of the Apple Software. \n Neither the name, trademarks, service marks or logos of Apple Inc. may \n be used to endorse or promote products derived from the Apple Software \n without specific prior written permission from Apple.  Except as \n expressly stated in this notice, no other rights or licenses, express or \n implied, are granted by Apple herein, including but not limited to any \n patent rights that may be infringed by your derivative works or by other \n works in which the Apple Software may be incorporated. \n  \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE \n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION \n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS \n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND \n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. \n  \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL \n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, \n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED \n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), \n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE \n POSSIBILITY OF SUCH DAMAGE. \n  \n Copyright (C) 2010 Apple Inc. All Rights Reserved. \n  \n */\n\n#import \"TemperatureConverterViewController.h\"\n#import \"TemperatureCell.h\"\n\n\n@implementation TemperatureConverterViewController\n\n//@synthesize temperatureData;\n//@synthesize tableView, temperatureCell;\n//\n\n#pragma mark -\n#pragma mark View lifecycle\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n\n    self.title = @\"Temperature\";\n\tself.tableView.allowsSelection = NO;\n}\n\n\n- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {\n    // Return YES for supported orientations\n    return (interfaceOrientation == UIInterfaceOrientationPortrait);\n}\n\n\n#pragma mark -\n#pragma mark Tableview datasource\n\n- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {\n    return [self.temperatureData count];\n}\n\n\n- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {\n    static NSString *MyIdentifier = @\"MyIdentifier\";\n    \n    // Create a new TemperatureCell if necessary\n    TemperatureCell *cell = (TemperatureCell *)[aTableView dequeueReusableCellWithIdentifier:MyIdentifier];\n    if (cell == nil) {\n\t\t[[NSBundle mainBundle] loadNibNamed:@\"TemperatureCell\" owner:self options:nil];\n\t\tcell = self.temperatureCell;\n\t\tself.temperatureCell = nil;\n    }\n    \n    // Configure the temperature cell with the relevant data\n    NSDictionary *temperatureDictionary = (self.temperatureData)[indexPath.row];\n    [cell setTemperatureDataFromDictionary:temperatureDictionary];\n    return cell;\n}\n\n\n#pragma mark -\n#pragma mark Temperature data\n\n- (NSArray *)temperatureData {\n\t\n\tif (_temperatureData == nil) {\n\t\t// Get the temperature data from the TemperatureData property list.\n\t\tNSString *temperatureDataPath = [[NSBundle mainBundle] pathForResource:@\"TemperatureData\" ofType:@\"plist\"];\n\t\tNSArray *array = [[NSArray alloc] initWithContentsOfFile:temperatureDataPath];\n\t\t_temperatureData = array;\n\t}\n\treturn _temperatureData;\n}\n\n\n#pragma mark -\n#pragma mark Memory management\n\n- (void)didReceiveMemoryWarning {\n\t[super didReceiveMemoryWarning];\n\tself.temperatureData = nil;\n}\n\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/TypeSelectionViewController.h",
    "content": "/*\n     File: TypeSelectionViewController.h\n Abstract: Table view controller to allow the user to select the recipe type.\n The options are presented as items in the table view; the selected item has a check mark in the accessory view. The controller caches the index path of the selected item to avoid the need to perform repeated string comparisons after an update.\n \n  Version: 1.4\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2010 Apple Inc. All Rights Reserved.\n \n */\n\n@class Recipe;\n\n@interface TypeSelectionViewController : UITableViewController\n\n@property (nonatomic, retain) Recipe *recipe;\n@property (nonatomic, retain, readonly) NSArray *recipeTypes;\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/TypeSelectionViewController.m",
    "content": "/*\n     File: TypeSelectionViewController.m \n Abstract: Table view controller to allow the user to select the recipe type.\n The options are presented as items in the table view; the selected item has a check mark in the accessory view. The controller caches the index path of the selected item to avoid the need to perform repeated string comparisons after an update.\n  \n  Version: 1.4 \n  \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple \n Inc. (\"Apple\") in consideration of your agreement to the following \n terms, and your use, installation, modification or redistribution of \n this Apple software constitutes acceptance of these terms.  If you do \n not agree with these terms, please do not use, install, modify or \n redistribute this Apple software. \n  \n In consideration of your agreement to abide by the following terms, and \n subject to these terms, Apple grants you a personal, non-exclusive \n license, under Apple's copyrights in this original Apple software (the \n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple \n Software, with or without modifications, in source and/or binary forms; \n provided that if you redistribute the Apple Software in its entirety and \n without modifications, you must retain this notice and the following \n text and disclaimers in all such redistributions of the Apple Software. \n Neither the name, trademarks, service marks or logos of Apple Inc. may \n be used to endorse or promote products derived from the Apple Software \n without specific prior written permission from Apple.  Except as \n expressly stated in this notice, no other rights or licenses, express or \n implied, are granted by Apple herein, including but not limited to any \n patent rights that may be infringed by your derivative works or by other \n works in which the Apple Software may be incorporated. \n  \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE \n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION \n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS \n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND \n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. \n  \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL \n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, \n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED \n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), \n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE \n POSSIBILITY OF SUCH DAMAGE. \n  \n Copyright (C) 2010 Apple Inc. All Rights Reserved. \n  \n */\n\n#import \"TypeSelectionViewController.h\"\n#import \"Recipe.h\"\n\n\n@interface TypeSelectionViewController()\n@property (nonatomic, retain) NSArray *recipeTypes;\n@end\n\n\n@implementation TypeSelectionViewController\n\n\n#pragma mark -\n#pragma mark UIViewController\n\n- (void)viewWillAppear:(BOOL)animated {\n    [super viewWillAppear:animated];\n    \n\t// Fetch the recipe types in alphabetical order by name from the recipe's context.\n\tNSManagedObjectContext *context = [self.recipe managedObjectContext];\n\t\n\tNSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];\n\t[fetchRequest setEntity:[NSEntityDescription entityForName:@\"RecipeType\" inManagedObjectContext:context]];\n\tNSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@\"name\" ascending:YES];\n\tNSArray *sortDescriptors = [[NSArray alloc] initWithObjects:&sortDescriptor count:1];\n\t[fetchRequest setSortDescriptors:sortDescriptors];\n\t\n\tNSError *error = nil;\n\tNSArray *types = [context executeFetchRequest:fetchRequest error:&error];\n\tself.recipeTypes = types;\n}\n\n\n- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {\n    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);\n}\n\n\n#pragma mark -\n#pragma mark UITableView Delegate/Datasource\n\n- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {\n    // Number of rows is the number of recipe types\n    return [_recipeTypes count];\n}\n\n\n- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {\n    static NSString *MyIdentifier = @\"MyIdentifier\";\n    \n    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];\n    if (cell == nil) {\n        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];\n    }\n    \n    // Configure the cell\n\tNSManagedObject *recipeType = (self.recipeTypes)[indexPath.row];\n    cell.textLabel.text = [recipeType valueForKey:@\"name\"];\n    \n    if (recipeType == self.recipe.type) {\n        cell.accessoryType = UITableViewCellAccessoryCheckmark;\n    }\n    \n    return cell;\n}\n\n\n- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {\n\t\n    // If there was a previous selection, unset the accessory view for its cell.\n\tNSManagedObject *currentType = self.recipe.type;\n\t\n    if (currentType != nil) {\n\t\tNSInteger index = [self.recipeTypes indexOfObject:currentType];\n\t\tNSIndexPath *selectionIndexPath = [NSIndexPath indexPathForRow:index inSection:0];\n        UITableViewCell *checkedCell = [tableView cellForRowAtIndexPath:selectionIndexPath];\n        checkedCell.accessoryType = UITableViewCellAccessoryNone;\n    }\n\n    // Set the checkmark accessory for the selected row.\n    [[tableView cellForRowAtIndexPath:indexPath] setAccessoryType:UITableViewCellAccessoryCheckmark];    \n\n     // Update the type of the recipe instance\n    self.recipe.type = (self.recipeTypes)[indexPath.row];\n    \n    // Deselect the row.\n    [tableView deselectRowAtIndexPath:indexPath animated:YES];\n}\n\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/UnitConverterTableViewController.h",
    "content": "/*\n     File: UnitConverterTableViewController.h\n Abstract: Table view controller to display two table view cells to allow the user to select a unit converter.\n\n \n  Version: 1.4\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2010 Apple Inc. All Rights Reserved.\n \n */\n\n@interface UnitConverterTableViewController : UITableViewController\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/UnitConverterTableViewController.m",
    "content": "/*\n     File: UnitConverterTableViewController.m \n Abstract: Table view controller to display two table view cells to allow the user to select a unit converter.\n\n  \n  Version: 1.4 \n  \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple \n Inc. (\"Apple\") in consideration of your agreement to the following \n terms, and your use, installation, modification or redistribution of \n this Apple software constitutes acceptance of these terms.  If you do \n not agree with these terms, please do not use, install, modify or \n redistribute this Apple software. \n  \n In consideration of your agreement to abide by the following terms, and \n subject to these terms, Apple grants you a personal, non-exclusive \n license, under Apple's copyrights in this original Apple software (the \n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple \n Software, with or without modifications, in source and/or binary forms; \n provided that if you redistribute the Apple Software in its entirety and \n without modifications, you must retain this notice and the following \n text and disclaimers in all such redistributions of the Apple Software. \n Neither the name, trademarks, service marks or logos of Apple Inc. may \n be used to endorse or promote products derived from the Apple Software \n without specific prior written permission from Apple.  Except as \n expressly stated in this notice, no other rights or licenses, express or \n implied, are granted by Apple herein, including but not limited to any \n patent rights that may be infringed by your derivative works or by other \n works in which the Apple Software may be incorporated. \n  \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE \n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION \n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS \n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND \n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. \n  \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL \n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, \n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED \n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), \n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE \n POSSIBILITY OF SUCH DAMAGE. \n  \n Copyright (C) 2010 Apple Inc. All Rights Reserved. \n  \n */\n\n#import \"UnitConverterTableViewController.h\"\n\n#import \"WeightConverterViewController.h\"\n#import \"TemperatureConverterViewController.h\"\n\n@implementation UnitConverterTableViewController\n\n\n- (id)init {\n    return [self initWithStyle:UITableViewStyleGrouped];\n}\n\n\n- (id)initWithStyle:(UITableViewStyle)style {\n    if (self = [super initWithStyle:style]) {\n        self.title = @\"Unit Converter\";\n    }\n    return self;\n}\n\n\n- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {\n    return 2;\n}\n\n\n- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {\n    return 1;\n}\n\n\n#define WeightConverterIndex 0\n#define TemperatureConverterIndex 1\n\n- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {\n    \n    static NSString *MyIdentifier = @\"MyIdentifier\";\n    \n    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];\n    if (cell == nil) {\n        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];\n    }\n    \n    switch ([indexPath section]) {\n        case WeightConverterIndex:\n            cell.textLabel.text = @\"Weight\";\n            break;\n        case TemperatureConverterIndex:\n            cell.textLabel.text = @\"Temperature\";\n            break;\n    }\n    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;\n\n    return cell;\n}\n\n\n- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {\n    UIViewController *converterController = nil;\n    \n    switch ([indexPath section]) {\n        case WeightConverterIndex:\n            converterController = [[WeightConverterViewController alloc] initWithNibName:@\"WeightConverter\" bundle:nil];\n            break;\n        case TemperatureConverterIndex:\n            converterController = [[TemperatureConverterViewController alloc] initWithNibName:@\"TemperatureConverter\" bundle:nil];\n            break;\n    }\n    \n    if (converterController) {\n        [self.navigationController pushViewController:converterController animated:YES];\n    }\n}\n\n\n@end\n\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/WeightConverterViewController.h",
    "content": "/*\n     File: WeightConverterViewController.h\n Abstract: View controller to manage conversion of metric to imperial units of weight and vice versa.\n The controller uses two UIPicker objects to allow the user to select the weight in metric or imperial units.\n \n  Version: 1.4\n \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple\n Inc. (\"Apple\") in consideration of your agreement to the following\n terms, and your use, installation, modification or redistribution of\n this Apple software constitutes acceptance of these terms.  If you do\n not agree with these terms, please do not use, install, modify or\n redistribute this Apple software.\n \n In consideration of your agreement to abide by the following terms, and\n subject to these terms, Apple grants you a personal, non-exclusive\n license, under Apple's copyrights in this original Apple software (the\n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple\n Software, with or without modifications, in source and/or binary forms;\n provided that if you redistribute the Apple Software in its entirety and\n without modifications, you must retain this notice and the following\n text and disclaimers in all such redistributions of the Apple Software.\n Neither the name, trademarks, service marks or logos of Apple Inc. may\n be used to endorse or promote products derived from the Apple Software\n without specific prior written permission from Apple.  Except as\n expressly stated in this notice, no other rights or licenses, express or\n implied, are granted by Apple herein, including but not limited to any\n patent rights that may be infringed by your derivative works or by other\n works in which the Apple Software may be incorporated.\n \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE\n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION\n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS\n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND\n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\n \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,\n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED\n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),\n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n \n Copyright (C) 2010 Apple Inc. All Rights Reserved.\n \n */\n\n@class MetricPickerController;\n@class ImperialPickerController;\n\n@interface WeightConverterViewController : UIViewController\n\n@property (nonatomic, retain) IBOutlet UIView *pickerViewContainer;\n\n@property (nonatomic, retain) IBOutlet MetricPickerController *metricPickerController;\n@property (nonatomic, retain) IBOutlet UIView *metricPickerViewContainer;\n\n@property (nonatomic, retain) IBOutlet ImperialPickerController *imperialPickerController;\n@property (nonatomic, retain) IBOutlet UIView *imperialPickerViewContainer;\n\n@property (nonatomic, retain) IBOutlet UISegmentedControl *segmentedControl;\n\n- (IBAction)toggleUnit;\n\n@end\n\n"
  },
  {
    "path": "Samples/iOS/Application/Controllers/WeightConverterViewController.m",
    "content": "/*\n     File: WeightConverterViewController.m \n Abstract: View controller to manage conversion of metric to imperial units of weight and vice versa.\n The controller uses two UIPicker objects to allow the user to select the weight in metric or imperial units.\n  \n  Version: 1.4 \n  \n Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple \n Inc. (\"Apple\") in consideration of your agreement to the following \n terms, and your use, installation, modification or redistribution of \n this Apple software constitutes acceptance of these terms.  If you do \n not agree with these terms, please do not use, install, modify or \n redistribute this Apple software. \n  \n In consideration of your agreement to abide by the following terms, and \n subject to these terms, Apple grants you a personal, non-exclusive \n license, under Apple's copyrights in this original Apple software (the \n \"Apple Software\"), to use, reproduce, modify and redistribute the Apple \n Software, with or without modifications, in source and/or binary forms; \n provided that if you redistribute the Apple Software in its entirety and \n without modifications, you must retain this notice and the following \n text and disclaimers in all such redistributions of the Apple Software. \n Neither the name, trademarks, service marks or logos of Apple Inc. may \n be used to endorse or promote products derived from the Apple Software \n without specific prior written permission from Apple.  Except as \n expressly stated in this notice, no other rights or licenses, express or \n implied, are granted by Apple herein, including but not limited to any \n patent rights that may be infringed by your derivative works or by other \n works in which the Apple Software may be incorporated. \n  \n The Apple Software is provided by Apple on an \"AS IS\" basis.  APPLE \n MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION \n THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS \n FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND \n OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. \n  \n IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL \n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \n INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, \n MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED \n AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), \n STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE \n POSSIBILITY OF SUCH DAMAGE. \n  \n Copyright (C) 2010 Apple Inc. All Rights Reserved. \n  \n */\n\n#import \"WeightConverterViewController.h\"\n\n#import \"MetricPickerController.h\"\n#import \"ImperialPickerController.h\"\n\n@interface WeightConverterViewController ()\n\n@property (nonatomic, assign) NSUInteger selectedUnit;\n\n@end\n\n@implementation WeightConverterViewController\n\n#define METRIC_INDEX 0\n#define IMPERIAL_INDEX 1\n\n- (void)viewDidLoad {\n\t[super viewDidLoad];\n\t\n\tself.navigationItem.title = @\"Weight\";\n\t\n\t// Set the currently-selected unit for self and the segmented control\n\t_selectedUnit = METRIC_INDEX;\n\t_segmentedControl.selectedSegmentIndex = _selectedUnit;\n\t\n\t[self toggleUnit];\n}\n\n\n- (IBAction)toggleUnit {\n\t\n\t/*\n\t When the user changes the selection in the segmented control, set the appropriate picker as the current subview of the picker container view (and remove the previous one).\n\t */\n\t_selectedUnit = [_segmentedControl selectedSegmentIndex];\n\tif (_selectedUnit == IMPERIAL_INDEX) {\n\t\t[_metricPickerViewContainer removeFromSuperview];\n\t\t[_pickerViewContainer addSubview:_imperialPickerViewContainer];\n\t\t[_imperialPickerController updateLabel];\n\t} else {\n\t\t[_imperialPickerViewContainer removeFromSuperview];\n\t\t[_pickerViewContainer addSubview:_metricPickerViewContainer];\n\t\t[_metricPickerController updateLabel];\n\t}\n}\n\n@end\n\n"
  },
  {
    "path": "Samples/iOS/Application/Delegate/MGPRecipesAppDelegate.h",
    "content": "//\n//  MGPAppDelegate.h\n//  Recipes\n//\n//  Created by Saul Mora on 5/19/13.\n//\n//\n\n#import <UIKit/UIKit.h>\n#import \"RecipeListTableViewController.h\"\n\n@interface MGPRecipesAppDelegate : UIResponder <UIApplicationDelegate>\n\n@property (nonatomic, strong) IBOutlet UIWindow *window;\n@property (nonatomic, strong) IBOutlet UITabBarController *tabBarController;\n@property (nonatomic, strong) IBOutlet RecipeListTableViewController *recipeListController;\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Delegate/MGPRecipesAppDelegate.m",
    "content": "//\n//  MGPAppDelegate.m\n//  Recipes\n//\n//  Created by Saul Mora on 5/19/13.\n//\n//\n\n#import \"MGPRecipesAppDelegate.h\"\n\nstatic NSString * const kRecipesStoreName = @\"Recipes.sqlite\";\n\n@implementation MGPRecipesAppDelegate\n\n- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions\n{\n    [self copyDefaultStoreIfNecessary];\n    [MagicalRecord setLoggingLevel:MagicalRecordLoggingLevelVerbose];\n    [MagicalRecord setupCoreDataStackWithStoreNamed:kRecipesStoreName];\n\n    // Override point for customization after application launch.\n    self.recipeListController.managedObjectContext = [NSManagedObjectContext MR_defaultContext];\n    [self.window setRootViewController:self.tabBarController];\n    [self.window makeKeyAndVisible];\n    return YES;\n}\n\n- (void) copyDefaultStoreIfNecessary;\n{\n\tNSFileManager *fileManager = [NSFileManager defaultManager];\n\n    NSURL *storeURL = [NSPersistentStore MR_urlForStoreName:kRecipesStoreName];\n\n\t// If the expected store doesn't exist, copy the default store.\n\tif (![fileManager fileExistsAtPath:[storeURL path]])\n    {\n\t\tNSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:[kRecipesStoreName stringByDeletingPathExtension] ofType:[kRecipesStoreName pathExtension]];\n        \n\t\tif (defaultStorePath)\n        {\n            NSError *error;\n\t\t\tBOOL success = [fileManager copyItemAtPath:defaultStorePath toPath:[storeURL path] error:&error];\n            if (!success)\n            {\n                NSLog(@\"Failed to install default recipe store\");\n            }\n\t\t}\n\t}\n\n}\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Models/Recipes.xcdatamodeld/.xccurrentversion",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>_XCCurrentVersionName</key>\n\t<string>Recipes.xcdatamodel</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Samples/iOS/Application/Models/entities/Ingredient.h",
    "content": "#import \"_Ingredient.h\"\n\n@interface Ingredient : _Ingredient {}\n// Custom logic goes here.\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Models/entities/Ingredient.m",
    "content": "#import \"Ingredient.h\"\n\n\n@interface Ingredient ()\n\n// Private interface goes here.\n\n@end\n\n\n@implementation Ingredient\n\n// Custom logic goes here.\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Models/entities/Recipe.h",
    "content": "#import \"_Recipe.h\"\n\n@interface Recipe : _Recipe {}\n// Custom logic goes here.\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Models/entities/Recipe.m",
    "content": "#import \"Recipe.h\"\n\n\n@interface Recipe ()\n\n// Private interface goes here.\n\n@end\n\n\n@implementation Recipe\n\n// Custom logic goes here.\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Models/generated/_Ingredient.h",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to Ingredient.h instead.\n\n#import <CoreData/CoreData.h>\n\n\nextern const struct IngredientAttributes {\n\t__unsafe_unretained NSString *amount;\n\t__unsafe_unretained NSString *displayOrder;\n\t__unsafe_unretained NSString *name;\n} IngredientAttributes;\n\nextern const struct IngredientRelationships {\n\t__unsafe_unretained NSString *recipe;\n} IngredientRelationships;\n\nextern const struct IngredientFetchedProperties {\n} IngredientFetchedProperties;\n\n@class Recipe;\n\n\n\n\n\n@interface IngredientID : NSManagedObjectID {}\n@end\n\n@interface _Ingredient : NSManagedObject {}\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_;\n+ (NSString*)entityName;\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_;\n- (IngredientID*)objectID;\n\n\n\n\n\n@property (nonatomic, strong) NSString* amount;\n\n\n\n//- (BOOL)validateAmount:(id*)value_ error:(NSError**)error_;\n\n\n\n\n\n@property (nonatomic, strong) NSNumber* displayOrder;\n\n\n\n@property int16_t displayOrderValue;\n- (int16_t)displayOrderValue;\n- (void)setDisplayOrderValue:(int16_t)value_;\n\n//- (BOOL)validateDisplayOrder:(id*)value_ error:(NSError**)error_;\n\n\n\n\n\n@property (nonatomic, strong) NSString* name;\n\n\n\n//- (BOOL)validateName:(id*)value_ error:(NSError**)error_;\n\n\n\n\n\n@property (nonatomic, strong) Recipe *recipe;\n\n//- (BOOL)validateRecipe:(id*)value_ error:(NSError**)error_;\n\n\n\n\n\n@end\n\n@interface _Ingredient (CoreDataGeneratedAccessors)\n\n@end\n\n@interface _Ingredient (CoreDataGeneratedPrimitiveAccessors)\n\n\n- (NSString*)primitiveAmount;\n- (void)setPrimitiveAmount:(NSString*)value;\n\n\n\n\n- (NSNumber*)primitiveDisplayOrder;\n- (void)setPrimitiveDisplayOrder:(NSNumber*)value;\n\n- (int16_t)primitiveDisplayOrderValue;\n- (void)setPrimitiveDisplayOrderValue:(int16_t)value_;\n\n\n\n\n- (NSString*)primitiveName;\n- (void)setPrimitiveName:(NSString*)value;\n\n\n\n\n\n- (Recipe*)primitiveRecipe;\n- (void)setPrimitiveRecipe:(Recipe*)value;\n\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Models/generated/_Ingredient.m",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to Ingredient.m instead.\n\n#import \"_Ingredient.h\"\n\nconst struct IngredientAttributes IngredientAttributes = {\n\t.amount = @\"amount\",\n\t.displayOrder = @\"displayOrder\",\n\t.name = @\"name\",\n};\n\nconst struct IngredientRelationships IngredientRelationships = {\n\t.recipe = @\"recipe\",\n};\n\nconst struct IngredientFetchedProperties IngredientFetchedProperties = {\n};\n\n@implementation IngredientID\n@end\n\n@implementation _Ingredient\n\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription insertNewObjectForEntityForName:@\"Ingredient\" inManagedObjectContext:moc_];\n}\n\n+ (NSString*)entityName {\n\treturn @\"Ingredient\";\n}\n\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription entityForName:@\"Ingredient\" inManagedObjectContext:moc_];\n}\n\n- (IngredientID*)objectID {\n\treturn (IngredientID*)[super objectID];\n}\n\n+ (NSSet*)keyPathsForValuesAffectingValueForKey:(NSString*)key {\n\tNSSet *keyPaths = [super keyPathsForValuesAffectingValueForKey:key];\n\t\n\tif ([key isEqualToString:@\"displayOrderValue\"]) {\n\t\tNSSet *affectingKey = [NSSet setWithObject:@\"displayOrder\"];\n\t\tkeyPaths = [keyPaths setByAddingObjectsFromSet:affectingKey];\n\t\treturn keyPaths;\n\t}\n\n\treturn keyPaths;\n}\n\n\n\n\n@dynamic amount;\n\n\n\n\n\n\n@dynamic displayOrder;\n\n\n\n- (int16_t)displayOrderValue {\n\tNSNumber *result = [self displayOrder];\n\treturn [result shortValue];\n}\n\n- (void)setDisplayOrderValue:(int16_t)value_ {\n\t[self setDisplayOrder:@(value_)];\n}\n\n- (int16_t)primitiveDisplayOrderValue {\n\tNSNumber *result = [self primitiveDisplayOrder];\n\treturn [result shortValue];\n}\n\n- (void)setPrimitiveDisplayOrderValue:(int16_t)value_ {\n\t[self setPrimitiveDisplayOrder:@(value_)];\n}\n\n\n\n\n\n@dynamic name;\n\n\n\n\n\n\n@dynamic recipe;\n\n\t\n\n\n\n\n\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Models/generated/_Recipe.h",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to Recipe.h instead.\n\n#import <CoreData/CoreData.h>\n\n\nextern const struct RecipeAttributes {\n\t__unsafe_unretained NSString *instructions;\n\t__unsafe_unretained NSString *name;\n\t__unsafe_unretained NSString *overview;\n\t__unsafe_unretained NSString *prepTime;\n\t__unsafe_unretained NSString *thumbnailImage;\n} RecipeAttributes;\n\nextern const struct RecipeRelationships {\n\t__unsafe_unretained NSString *image;\n\t__unsafe_unretained NSString *ingredients;\n\t__unsafe_unretained NSString *type;\n} RecipeRelationships;\n\nextern const struct RecipeFetchedProperties {\n} RecipeFetchedProperties;\n\n@class NSManagedObject;\n@class Ingredient;\n@class NSManagedObject;\n\n\n\n\n\n@class NSObject;\n\n@interface RecipeID : NSManagedObjectID {}\n@end\n\n@interface _Recipe : NSManagedObject {}\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_;\n+ (NSString*)entityName;\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_;\n- (RecipeID*)objectID;\n\n\n\n\n\n@property (nonatomic, strong) NSString* instructions;\n\n\n\n//- (BOOL)validateInstructions:(id*)value_ error:(NSError**)error_;\n\n\n\n\n\n@property (nonatomic, strong) NSString* name;\n\n\n\n//- (BOOL)validateName:(id*)value_ error:(NSError**)error_;\n\n\n\n\n\n@property (nonatomic, strong) NSString* overview;\n\n\n\n//- (BOOL)validateOverview:(id*)value_ error:(NSError**)error_;\n\n\n\n\n\n@property (nonatomic, strong) NSString* prepTime;\n\n\n\n//- (BOOL)validatePrepTime:(id*)value_ error:(NSError**)error_;\n\n\n\n\n\n@property (nonatomic, strong) id thumbnailImage;\n\n\n\n//- (BOOL)validateThumbnailImage:(id*)value_ error:(NSError**)error_;\n\n\n\n\n\n@property (nonatomic, strong) NSManagedObject *image;\n\n//- (BOOL)validateImage:(id*)value_ error:(NSError**)error_;\n\n\n\n\n@property (nonatomic, strong) NSSet *ingredients;\n\n- (NSMutableSet*)ingredientsSet;\n\n\n\n\n@property (nonatomic, strong) NSManagedObject *type;\n\n//- (BOOL)validateType:(id*)value_ error:(NSError**)error_;\n\n\n\n\n\n@end\n\n@interface _Recipe (CoreDataGeneratedAccessors)\n\n- (void)addIngredients:(NSSet*)value_;\n- (void)removeIngredients:(NSSet*)value_;\n- (void)addIngredientsObject:(Ingredient*)value_;\n- (void)removeIngredientsObject:(Ingredient*)value_;\n\n@end\n\n@interface _Recipe (CoreDataGeneratedPrimitiveAccessors)\n\n\n- (NSString*)primitiveInstructions;\n- (void)setPrimitiveInstructions:(NSString*)value;\n\n\n\n\n- (NSString*)primitiveName;\n- (void)setPrimitiveName:(NSString*)value;\n\n\n\n\n- (NSString*)primitiveOverview;\n- (void)setPrimitiveOverview:(NSString*)value;\n\n\n\n\n- (NSString*)primitivePrepTime;\n- (void)setPrimitivePrepTime:(NSString*)value;\n\n\n\n\n- (id)primitiveThumbnailImage;\n- (void)setPrimitiveThumbnailImage:(id)value;\n\n\n\n\n\n- (NSManagedObject*)primitiveImage;\n- (void)setPrimitiveImage:(NSManagedObject*)value;\n\n\n\n- (NSMutableSet*)primitiveIngredients;\n- (void)setPrimitiveIngredients:(NSMutableSet*)value;\n\n\n\n- (NSManagedObject*)primitiveType;\n- (void)setPrimitiveType:(NSManagedObject*)value;\n\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Models/generated/_Recipe.m",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to Recipe.m instead.\n\n#import \"_Recipe.h\"\n\nconst struct RecipeAttributes RecipeAttributes = {\n\t.instructions = @\"instructions\",\n\t.name = @\"name\",\n\t.overview = @\"overview\",\n\t.prepTime = @\"prepTime\",\n\t.thumbnailImage = @\"thumbnailImage\",\n};\n\nconst struct RecipeRelationships RecipeRelationships = {\n\t.image = @\"image\",\n\t.ingredients = @\"ingredients\",\n\t.type = @\"type\",\n};\n\nconst struct RecipeFetchedProperties RecipeFetchedProperties = {\n};\n\n@implementation RecipeID\n@end\n\n@implementation _Recipe\n\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription insertNewObjectForEntityForName:@\"Recipe\" inManagedObjectContext:moc_];\n}\n\n+ (NSString*)entityName {\n\treturn @\"Recipe\";\n}\n\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription entityForName:@\"Recipe\" inManagedObjectContext:moc_];\n}\n\n- (RecipeID*)objectID {\n\treturn (RecipeID*)[super objectID];\n}\n\n+ (NSSet*)keyPathsForValuesAffectingValueForKey:(NSString*)key {\n\tNSSet *keyPaths = [super keyPathsForValuesAffectingValueForKey:key];\n\t\n\n\treturn keyPaths;\n}\n\n\n\n\n@dynamic instructions;\n\n\n\n\n\n\n@dynamic name;\n\n\n\n\n\n\n@dynamic overview;\n\n\n\n\n\n\n@dynamic prepTime;\n\n\n\n\n\n\n@dynamic thumbnailImage;\n\n\n\n\n\n\n@dynamic image;\n\n\t\n\n@dynamic ingredients;\n\n\t\n- (NSMutableSet*)ingredientsSet {\n\t[self willAccessValueForKey:@\"ingredients\"];\n  \n\tNSMutableSet *result = (NSMutableSet*)[self mutableSetValueForKey:@\"ingredients\"];\n  \n\t[self didAccessValueForKey:@\"ingredients\"];\n\treturn result;\n}\n\t\n\n@dynamic type;\n\n\t\n\n\n\n\n\n\n@end\n"
  },
  {
    "path": "Samples/iOS/Application/Support/Recipes-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleDisplayName</key>\n\t<string>${PRODUCT_NAME}</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.magicalpanda.samples.${PRODUCT_NAME:rfc1034identifier}</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>${PRODUCT_NAME}</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>NSMainNibFile</key>\n\t<string>MainWindow</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "Samples/iOS/Application/Support/Recipes-Prefix.pch",
    "content": "//\n// Prefix header for all source files of the 'Recipes' target in the 'Recipes' project\n//\n\n#import <Availability.h>\n\n#ifndef __IPHONE_3_0\n#warning \"This project uses features only available in iOS SDK 3.0 and later.\"\n#endif\n\n#ifdef __OBJC__\n    #import <UIKit/UIKit.h>\n    #import <Foundation/Foundation.h>\n    #import \"MagicalRecord.h\"\n#endif\n"
  },
  {
    "path": "Samples/iOS/Application/Support/en.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\n"
  },
  {
    "path": "Samples/iOS/Application/Support/main.m",
    "content": "//\n//  main.m\n//  Recipes\n//\n//  Created by Saul Mora on 5/19/13.\n//\n//\n\n#import <UIKit/UIKit.h>\n\n#import \"MGPRecipesAppDelegate.h\"\n\nint main(int argc, char *argv[])\n{\n    @autoreleasepool {\n        return UIApplicationMain(argc, argv, nil, NSStringFromClass([MGPRecipesAppDelegate class]));\n    }\n}\n"
  },
  {
    "path": "Samples/iOS/Application/Views/DetailHeaderView.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"14490.70\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" colorMatched=\"YES\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14490.49\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\" customClass=\"RecipeDetailViewController\">\n            <connections>\n                <outlet property=\"nameTextField\" destination=\"22\" id=\"28\"/>\n                <outlet property=\"overviewTextField\" destination=\"26\" id=\"29\"/>\n                <outlet property=\"photoButton\" destination=\"10\" id=\"21\"/>\n                <outlet property=\"prepTimeTextField\" destination=\"30\" id=\"32\"/>\n                <outlet property=\"tableHeaderView\" destination=\"1\" id=\"8\"/>\n            </connections>\n        </placeholder>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view contentMode=\"scaleToFill\" id=\"1\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"117\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" flexibleMaxY=\"YES\"/>\n            <subviews>\n                <button opaque=\"NO\" clipsSubviews=\"YES\" clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleAspectFit\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" lineBreakMode=\"middleTruncation\" id=\"10\">\n                    <rect key=\"frame\" x=\"20\" y=\"10\" width=\"64\" height=\"64\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica-Bold\" family=\"Helvetica\" pointSize=\"15\"/>\n                    <state key=\"normal\" image=\"choosePhoto.png\">\n                        <color key=\"titleColor\" red=\"0.19607843\" green=\"0.30980393000000001\" blue=\"0.52156866000000002\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <color key=\"titleShadowColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    </state>\n                    <state key=\"highlighted\">\n                        <color key=\"titleColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    </state>\n                    <connections>\n                        <action selector=\"photoTapped\" destination=\"-1\" eventType=\"touchUpInside\" id=\"19\"/>\n                    </connections>\n                </button>\n                <textField opaque=\"NO\" clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" enabled=\"NO\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" placeholder=\"Recipe Name\" minimumFontSize=\"17\" id=\"22\">\n                    <rect key=\"frame\" x=\"92\" y=\"10\" width=\"208\" height=\"25\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica\" family=\"Helvetica\" pointSize=\"17\"/>\n                    <textInputTraits key=\"textInputTraits\" autocapitalizationType=\"sentences\" returnKeyType=\"done\"/>\n                    <connections>\n                        <outlet property=\"delegate\" destination=\"-1\" id=\"25\"/>\n                    </connections>\n                </textField>\n                <textField opaque=\"NO\" clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" enabled=\"NO\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" placeholder=\"Description\" minimumFontSize=\"17\" id=\"26\">\n                    <rect key=\"frame\" x=\"92\" y=\"37\" width=\"208\" height=\"28\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica\" family=\"Helvetica\" pointSize=\"14\"/>\n                    <textInputTraits key=\"textInputTraits\" autocapitalizationType=\"sentences\" returnKeyType=\"done\"/>\n                    <connections>\n                        <outlet property=\"delegate\" destination=\"-1\" id=\"27\"/>\n                    </connections>\n                </textField>\n                <textField opaque=\"NO\" clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" enabled=\"NO\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" placeholder=\"Time\" minimumFontSize=\"17\" id=\"30\">\n                    <rect key=\"frame\" x=\"128\" y=\"81\" width=\"172\" height=\"28\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica\" family=\"Helvetica\" pointSize=\"14\"/>\n                    <textInputTraits key=\"textInputTraits\" autocapitalizationType=\"sentences\" returnKeyType=\"done\"/>\n                    <connections>\n                        <outlet property=\"delegate\" destination=\"-1\" id=\"31\"/>\n                    </connections>\n                </textField>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" text=\"Preparation time:\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"33\">\n                    <rect key=\"frame\" x=\"20\" y=\"84\" width=\"110\" height=\"21\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica\" family=\"Helvetica\" pointSize=\"13\"/>\n                    <color key=\"textColor\" red=\"0.40481007099151611\" green=\"0.48505613207817078\" blue=\"0.60225391387939453\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n            </subviews>\n            <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n        </view>\n    </objects>\n    <resources>\n        <image name=\"choosePhoto.png\" width=\"64\" height=\"44\"/>\n    </resources>\n</document>\n"
  },
  {
    "path": "Samples/iOS/Application/Views/EditingTableViewCell.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"14490.70\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" colorMatched=\"YES\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14490.49\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\" customClass=\"IngredientDetailViewController\">\n            <connections>\n                <outlet property=\"editingTableViewCell\" destination=\"2\" id=\"9\"/>\n            </connections>\n        </placeholder>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <tableViewCell clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" selectionStyle=\"blue\" indentationWidth=\"10\" reuseIdentifier=\"EditingCell\" id=\"2\" customClass=\"EditingTableViewCell\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"44\"/>\n            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n            <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" insetsLayoutMarginsFromSafeArea=\"NO\" tableViewCell=\"2\" id=\"stp-d1-6gy\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"43.5\"/>\n                <autoresizingMask key=\"autoresizingMask\"/>\n                <subviews>\n                    <label clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" tag=\"100\" contentMode=\"scaleToFill\" text=\"Label\" textAlignment=\"right\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"3\">\n                        <rect key=\"frame\" x=\"20\" y=\"12\" width=\"87\" height=\"22\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <fontDescription key=\"fontDescription\" name=\"Helvetica\" family=\"Helvetica\" pointSize=\"13\"/>\n                        <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <nil key=\"highlightedColor\"/>\n                    </label>\n                    <textField clearsContextBeforeDrawing=\"NO\" tag=\"101\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" placeholder=\"\" minimumFontSize=\"17\" clearButtonMode=\"whileEditing\" id=\"4\">\n                        <rect key=\"frame\" x=\"115\" y=\"12\" width=\"185\" height=\"22\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <fontDescription key=\"fontDescription\" name=\"Helvetica-Bold\" family=\"Helvetica\" pointSize=\"14\"/>\n                        <textInputTraits key=\"textInputTraits\"/>\n                        <connections>\n                            <outlet property=\"delegate\" destination=\"-1\" id=\"6\"/>\n                        </connections>\n                    </textField>\n                </subviews>\n            </tableViewCellContentView>\n            <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n            <connections>\n                <outlet property=\"label\" destination=\"3\" id=\"7\"/>\n                <outlet property=\"textField\" destination=\"4\" id=\"8\"/>\n            </connections>\n        </tableViewCell>\n    </objects>\n</document>\n"
  },
  {
    "path": "Samples/iOS/Application/Views/InstructionsView.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"14490.70\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" colorMatched=\"YES\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14490.49\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\" customClass=\"InstructionsViewController\">\n            <connections>\n                <outlet property=\"instructionsText\" destination=\"3\" id=\"5\"/>\n                <outlet property=\"nameLabel\" destination=\"6\" id=\"7\"/>\n                <outlet property=\"view\" destination=\"1\" id=\"4\"/>\n            </connections>\n        </placeholder>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view contentMode=\"scaleToFill\" id=\"1\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"480\"/>\n            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n            <subviews>\n                <textView opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" showsHorizontalScrollIndicator=\"NO\" delaysContentTouches=\"NO\" canCancelContentTouches=\"NO\" minimumZoomScale=\"0.0\" maximumZoomScale=\"0.0\" bouncesZoom=\"NO\" editable=\"NO\" id=\"3\">\n                    <rect key=\"frame\" x=\"0.0\" y=\"49\" width=\"320\" height=\"431\"/>\n                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                    <string key=\"text\">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum Et harumd und lookum like Greek to me, dereud facilis est er expedit distinct. Nam liber te conscient to factor tum poen legum odioque civiuda</string>\n                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                    <textInputTraits key=\"textInputTraits\" autocapitalizationType=\"sentences\"/>\n                </textView>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" text=\"Recipe Name\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"6\">\n                    <rect key=\"frame\" x=\"7\" y=\"20\" width=\"306\" height=\"21\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica-Bold\" family=\"Helvetica\" pointSize=\"17\"/>\n                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n            </subviews>\n            <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n        </view>\n    </objects>\n</document>\n"
  },
  {
    "path": "Samples/iOS/Application/Views/MainWindow.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"14490.70\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" colorMatched=\"YES\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14490.49\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\" customClass=\"UIApplication\">\n            <connections>\n                <outlet property=\"delegate\" destination=\"3\" id=\"4\"/>\n            </connections>\n        </placeholder>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <customObject id=\"3\" customClass=\"MGPRecipesAppDelegate\">\n            <connections>\n                <outlet property=\"recipeListController\" destination=\"21\" id=\"30\"/>\n                <outlet property=\"tabBarController\" destination=\"14\" id=\"31\"/>\n                <outlet property=\"window\" destination=\"2\" id=\"5\"/>\n            </connections>\n        </customObject>\n        <window opaque=\"NO\" clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" id=\"2\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"480\"/>\n            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\"/>\n            <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n        </window>\n        <tabBarController id=\"14\">\n            <extendedEdge key=\"edgesForExtendedLayout\"/>\n            <simulatedTabBarMetrics key=\"simulatedBottomBarMetrics\"/>\n            <tabBar key=\"tabBar\" clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" selectedItem=\"24\" id=\"15\">\n                <rect key=\"frame\" x=\"0.0\" y=\"431\" width=\"320\" height=\"49\"/>\n                <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" flexibleMinY=\"YES\"/>\n                <color key=\"backgroundColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n            </tabBar>\n            <viewControllers>\n                <navigationController id=\"20\">\n                    <extendedEdge key=\"edgesForExtendedLayout\"/>\n                    <tabBarItem key=\"tabBarItem\" title=\"Recipes\" image=\"fork.png\" id=\"24\"/>\n                    <navigationBar key=\"navigationBar\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" id=\"22\">\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                    </navigationBar>\n                    <viewControllers>\n                        <viewController id=\"21\" customClass=\"RecipeListTableViewController\">\n                            <extendedEdge key=\"edgesForExtendedLayout\"/>\n                            <navigationItem key=\"navigationItem\" title=\"Navigation Item\" id=\"23\"/>\n                        </viewController>\n                    </viewControllers>\n                </navigationController>\n                <navigationController id=\"25\">\n                    <extendedEdge key=\"edgesForExtendedLayout\"/>\n                    <tabBarItem key=\"tabBarItem\" title=\"Unit Conversion\" image=\"convert.png\" id=\"29\"/>\n                    <navigationBar key=\"navigationBar\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" id=\"27\">\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                    </navigationBar>\n                    <viewControllers>\n                        <viewController id=\"26\" customClass=\"UnitConverterTableViewController\">\n                            <extendedEdge key=\"edgesForExtendedLayout\"/>\n                            <navigationItem key=\"navigationItem\" title=\"Unit Conversion\" id=\"28\">\n                                <barButtonItem key=\"backBarButtonItem\" title=\"Conversion\" id=\"32\"/>\n                            </navigationItem>\n                        </viewController>\n                    </viewControllers>\n                </navigationController>\n            </viewControllers>\n        </tabBarController>\n    </objects>\n    <resources>\n        <image name=\"convert.png\" width=\"32\" height=\"32\"/>\n        <image name=\"fork.png\" width=\"32\" height=\"32\"/>\n    </resources>\n</document>\n"
  },
  {
    "path": "Samples/iOS/Application/Views/RecipeAddView.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"14490.70\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" colorMatched=\"YES\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14490.49\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\" customClass=\"RecipeAddViewController\">\n            <connections>\n                <outlet property=\"nameTextField\" destination=\"11\" id=\"17\"/>\n                <outlet property=\"view\" destination=\"10\" id=\"13\"/>\n            </connections>\n        </placeholder>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleAspectFill\" id=\"10\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"436\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n            <subviews>\n                <textField opaque=\"NO\" clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" highlighted=\"YES\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" placeholder=\"Recipe Name\" minimumFontSize=\"17\" id=\"11\">\n                    <rect key=\"frame\" x=\"20\" y=\"44\" width=\"280\" height=\"31\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMinY=\"YES\" flexibleMaxY=\"YES\"/>\n                    <color key=\"backgroundColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <inset key=\"insetFor6xAndEarlier\" minX=\"0.0\" minY=\"-20\" maxX=\"0.0\" maxY=\"20\"/>\n                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica\" family=\"Helvetica\" pointSize=\"17\"/>\n                    <textInputTraits key=\"textInputTraits\" autocapitalizationType=\"sentences\" returnKeyType=\"done\"/>\n                    <connections>\n                        <outlet property=\"delegate\" destination=\"-1\" id=\"19\"/>\n                    </connections>\n                </textField>\n            </subviews>\n            <color key=\"backgroundColor\" cocoaTouchSystemColor=\"groupTableViewBackgroundColor\"/>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n        </view>\n    </objects>\n</document>\n"
  },
  {
    "path": "Samples/iOS/Application/Views/TemperatureCell.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"14490.70\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" colorMatched=\"YES\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14490.49\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\" customClass=\"TemperatureConverterViewController\">\n            <connections>\n                <outlet property=\"temperatureCell\" destination=\"2\" id=\"9\"/>\n            </connections>\n        </placeholder>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <tableViewCell clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" selectionStyle=\"blue\" indentationWidth=\"10\" id=\"2\" customClass=\"TemperatureCell\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"44\"/>\n            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n            <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" insetsLayoutMarginsFromSafeArea=\"NO\" tableViewCell=\"2\" id=\"xom-ro-noH\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"43.5\"/>\n                <autoresizingMask key=\"autoresizingMask\"/>\n                <subviews>\n                    <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" text=\"Label\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"3\">\n                        <rect key=\"frame\" x=\"20\" y=\"6\" width=\"80\" height=\"32\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                        <fontDescription key=\"fontDescription\" name=\"Helvetica\" family=\"Helvetica\" pointSize=\"22\"/>\n                        <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <nil key=\"highlightedColor\"/>\n                    </label>\n                    <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" text=\"Label\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"4\">\n                        <rect key=\"frame\" x=\"120\" y=\"6\" width=\"80\" height=\"32\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                        <fontDescription key=\"fontDescription\" name=\"Helvetica\" family=\"Helvetica\" pointSize=\"22\"/>\n                        <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <nil key=\"highlightedColor\"/>\n                    </label>\n                    <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" text=\"Label\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"5\">\n                        <rect key=\"frame\" x=\"220\" y=\"6\" width=\"80\" height=\"32\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                        <fontDescription key=\"fontDescription\" name=\"Helvetica\" family=\"Helvetica\" pointSize=\"22\"/>\n                        <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <nil key=\"highlightedColor\"/>\n                    </label>\n                </subviews>\n            </tableViewCellContentView>\n            <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n            <connections>\n                <outlet property=\"cLabel\" destination=\"3\" id=\"6\"/>\n                <outlet property=\"fLabel\" destination=\"4\" id=\"7\"/>\n                <outlet property=\"gLabel\" destination=\"5\" id=\"8\"/>\n            </connections>\n        </tableViewCell>\n    </objects>\n</document>\n"
  },
  {
    "path": "Samples/iOS/Application/Views/TemperatureConverter.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"14490.70\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" colorMatched=\"YES\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14490.49\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\" customClass=\"TemperatureConverterViewController\">\n            <connections>\n                <outlet property=\"tableView\" destination=\"26\" id=\"30\"/>\n                <outlet property=\"view\" destination=\"1\" id=\"33\"/>\n            </connections>\n        </placeholder>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view contentMode=\"scaleToFill\" id=\"1\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"460\"/>\n            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n            <subviews>\n                <tableView opaque=\"NO\" clipsSubviews=\"YES\" clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" style=\"plain\" separatorStyle=\"default\" sectionIndexMinimumDisplayRowCount=\"1\" rowHeight=\"44\" sectionHeaderHeight=\"27\" sectionFooterHeight=\"27\" id=\"26\">\n                    <rect key=\"frame\" x=\"0.0\" y=\"61\" width=\"320\" height=\"350\"/>\n                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                    <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <connections>\n                        <outlet property=\"dataSource\" destination=\"-1\" id=\"31\"/>\n                        <outlet property=\"delegate\" destination=\"-1\" id=\"32\"/>\n                    </connections>\n                </tableView>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" text=\"Centigrade\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"27\">\n                    <rect key=\"frame\" x=\"14\" y=\"32\" width=\"84\" height=\"21\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica-Bold\" family=\"Helvetica\" pointSize=\"17\"/>\n                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" text=\"Fahrenheit\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"28\">\n                    <rect key=\"frame\" x=\"118\" y=\"32\" width=\"84\" height=\"21\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica-Bold\" family=\"Helvetica\" pointSize=\"17\"/>\n                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" text=\"Gas Mark\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"29\">\n                    <rect key=\"frame\" x=\"221\" y=\"32\" width=\"84\" height=\"21\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica-Bold\" family=\"Helvetica\" pointSize=\"17\"/>\n                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n            </subviews>\n            <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n        </view>\n    </objects>\n</document>\n"
  },
  {
    "path": "Samples/iOS/Application/Views/WeightConverter.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"14490.70\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" colorMatched=\"YES\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14490.49\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\" customClass=\"WeightConverterViewController\">\n            <connections>\n                <outlet property=\"imperialPickerController\" destination=\"32\" id=\"44\"/>\n                <outlet property=\"imperialPickerViewContainer\" destination=\"16\" id=\"30\"/>\n                <outlet property=\"metricPickerController\" destination=\"14\" id=\"45\"/>\n                <outlet property=\"metricPickerViewContainer\" destination=\"15\" id=\"31\"/>\n                <outlet property=\"pickerViewContainer\" destination=\"19\" id=\"42\"/>\n                <outlet property=\"segmentedControl\" destination=\"18\" id=\"43\"/>\n                <outlet property=\"view\" destination=\"17\" id=\"29\"/>\n            </connections>\n        </placeholder>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <customObject id=\"14\" customClass=\"MetricPickerController\">\n            <connections>\n                <outlet property=\"label\" destination=\"21\" id=\"35\"/>\n                <outlet property=\"pickerView\" destination=\"28\" id=\"36\"/>\n            </connections>\n        </customObject>\n        <view clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" id=\"15\" userLabel=\"Metric Container\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"216\"/>\n            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n            <subviews>\n                <pickerView opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" id=\"28\" userLabel=\"Weight Picker\">\n                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"216\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <connections>\n                        <outlet property=\"dataSource\" destination=\"14\" id=\"46\"/>\n                        <outlet property=\"delegate\" destination=\"14\" id=\"47\"/>\n                    </connections>\n                </pickerView>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" text=\"kg\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"27\">\n                    <rect key=\"frame\" x=\"78\" y=\"83\" width=\"34\" height=\"51\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica\" family=\"Helvetica\" pointSize=\"24\"/>\n                    <color key=\"textColor\" red=\"0.14469906687736511\" green=\"0.1583179384469986\" blue=\"0.20839053392410278\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" text=\"g\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"26\">\n                    <rect key=\"frame\" x=\"261\" y=\"83\" width=\"26\" height=\"51\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica\" family=\"Helvetica\" pointSize=\"24\"/>\n                    <color key=\"textColor\" red=\"0.14469906687736511\" green=\"0.1583179384469986\" blue=\"0.20839053392410278\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n            </subviews>\n            <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <simulatedOrientationMetrics key=\"simulatedOrientationMetrics\" orientation=\"landscapeRight\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n        </view>\n        <view contentMode=\"scaleToFill\" id=\"17\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"460\"/>\n            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n            <subviews>\n                <view clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" id=\"20\">\n                    <rect key=\"frame\" x=\"0.0\" y=\"347\" width=\"320\" height=\"113\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <color key=\"backgroundColor\" red=\"0.11763144284486771\" green=\"0.12174063920974731\" blue=\"0.16922402381896973\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                </view>\n                <button opaque=\"NO\" clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" enabled=\"NO\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" id=\"22\">\n                    <rect key=\"frame\" x=\"30\" y=\"80\" width=\"260\" height=\"45\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica-Bold\" family=\"Helvetica\" pointSize=\"15\"/>\n                    <state key=\"normal\">\n                        <color key=\"titleColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                        <color key=\"titleShadowColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                    </state>\n                    <state key=\"highlighted\">\n                        <color key=\"titleColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    </state>\n                </button>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" text=\"Label\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"17\" id=\"21\">\n                    <rect key=\"frame\" x=\"30\" y=\"80\" width=\"260\" height=\"45\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica\" family=\"Helvetica\" pointSize=\"24\"/>\n                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n                <view clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" id=\"19\">\n                    <rect key=\"frame\" x=\"0.0\" y=\"133\" width=\"320\" height=\"216\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <color key=\"backgroundColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                </view>\n                <segmentedControl opaque=\"NO\" clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"top\" segmentControlStyle=\"plain\" selectedSegmentIndex=\"0\" id=\"18\">\n                    <rect key=\"frame\" x=\"30\" y=\"20\" width=\"260\" height=\"29\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <segments>\n                        <segment title=\"Metric\"/>\n                        <segment title=\"Imperial\"/>\n                    </segments>\n                    <connections>\n                        <action selector=\"toggleUnit\" destination=\"-1\" eventType=\"valueChanged\" id=\"37\"/>\n                    </connections>\n                </segmentedControl>\n            </subviews>\n            <color key=\"backgroundColor\" red=\"0.75\" green=\"0.75\" blue=\"0.75\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n        </view>\n        <view clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" id=\"16\" userLabel=\"Imperial Container\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"216\"/>\n            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n            <subviews>\n                <pickerView opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" id=\"24\">\n                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"216\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <connections>\n                        <outlet property=\"dataSource\" destination=\"32\" id=\"48\"/>\n                        <outlet property=\"delegate\" destination=\"32\" id=\"49\"/>\n                    </connections>\n                </pickerView>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" text=\"lbs\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"25\">\n                    <rect key=\"frame\" x=\"110\" y=\"83\" width=\"40\" height=\"51\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica\" family=\"Helvetica\" pointSize=\"24\"/>\n                    <color key=\"textColor\" red=\"0.14469906687736511\" green=\"0.1583179384469986\" blue=\"0.20839053392410278\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" text=\"oz\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"23\">\n                    <rect key=\"frame\" x=\"223\" y=\"83\" width=\"40\" height=\"51\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <fontDescription key=\"fontDescription\" name=\"Helvetica\" family=\"Helvetica\" pointSize=\"24\"/>\n                    <color key=\"textColor\" red=\"0.14469906687736511\" green=\"0.1583179384469986\" blue=\"0.20839053392410278\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n            </subviews>\n            <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <simulatedOrientationMetrics key=\"simulatedOrientationMetrics\" orientation=\"landscapeRight\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n        </view>\n        <customObject id=\"32\" customClass=\"ImperialPickerController\">\n            <connections>\n                <outlet property=\"label\" destination=\"21\" id=\"33\"/>\n                <outlet property=\"pickerView\" destination=\"24\" id=\"34\"/>\n            </connections>\n        </customObject>\n    </objects>\n</document>\n"
  },
  {
    "path": "Samples/iOS/MagicalRecordRecipes.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 51;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t37F29F58229EFEB100570CA4 /* MagicalRecordInternal.m in Sources */ = {isa = PBXBuildFile; fileRef = 37F29F53229EFEB000570CA4 /* MagicalRecordInternal.m */; };\n\t\t37F29F59229EFEB100570CA4 /* MagicalRecord+ShorthandMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = 37F29F57229EFEB100570CA4 /* MagicalRecord+ShorthandMethods.m */; };\n\t\t90610E1F18F4022D00E2C328 /* MagicalImportFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610DE718F4022D00E2C328 /* MagicalImportFunctions.m */; };\n\t\t90610E2018F4022D00E2C328 /* NSAttributeDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610DE918F4022D00E2C328 /* NSAttributeDescription+MagicalDataImport.m */; };\n\t\t90610E2118F4022D00E2C328 /* NSEntityDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610DEB18F4022D00E2C328 /* NSEntityDescription+MagicalDataImport.m */; };\n\t\t90610E2218F4022D00E2C328 /* NSNumber+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610DED18F4022D00E2C328 /* NSNumber+MagicalDataImport.m */; };\n\t\t90610E2318F4022D00E2C328 /* NSObject+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610DEF18F4022D00E2C328 /* NSObject+MagicalDataImport.m */; };\n\t\t90610E2418F4022D00E2C328 /* NSRelationshipDescription+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610DF118F4022D00E2C328 /* NSRelationshipDescription+MagicalDataImport.m */; };\n\t\t90610E2518F4022D00E2C328 /* NSString+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610DF318F4022D00E2C328 /* NSString+MagicalDataImport.m */; };\n\t\t90610E2618F4022D00E2C328 /* NSManagedObject+MagicalAggregation.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610DF618F4022D00E2C328 /* NSManagedObject+MagicalAggregation.m */; };\n\t\t90610E2718F4022D00E2C328 /* NSManagedObject+MagicalDataImport.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610DF818F4022D00E2C328 /* NSManagedObject+MagicalDataImport.m */; };\n\t\t90610E2818F4022D00E2C328 /* NSManagedObject+MagicalFinders.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610DFA18F4022D00E2C328 /* NSManagedObject+MagicalFinders.m */; };\n\t\t90610E2918F4022D00E2C328 /* NSManagedObject+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610DFC18F4022D00E2C328 /* NSManagedObject+MagicalRecord.m */; };\n\t\t90610E2A18F4022D00E2C328 /* NSManagedObject+MagicalRequests.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610DFE18F4022D00E2C328 /* NSManagedObject+MagicalRequests.m */; };\n\t\t90610E2B18F4022D00E2C328 /* NSManagedObjectContext+MagicalObserving.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610E0118F4022D00E2C328 /* NSManagedObjectContext+MagicalObserving.m */; };\n\t\t90610E2C18F4022D00E2C328 /* NSManagedObjectContext+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610E0318F4022D00E2C328 /* NSManagedObjectContext+MagicalRecord.m */; };\n\t\t90610E2D18F4022D00E2C328 /* NSManagedObjectContext+MagicalSaves.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610E0518F4022D00E2C328 /* NSManagedObjectContext+MagicalSaves.m */; };\n\t\t90610E2E18F4022D00E2C328 /* NSManagedObjectContext+MagicalThreading.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610E0718F4022D00E2C328 /* NSManagedObjectContext+MagicalThreading.m */; };\n\t\t90610E2F18F4022D00E2C328 /* NSManagedObjectModel+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610E0918F4022D00E2C328 /* NSManagedObjectModel+MagicalRecord.m */; };\n\t\t90610E3018F4022D00E2C328 /* NSPersistentStore+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610E0B18F4022D00E2C328 /* NSPersistentStore+MagicalRecord.m */; };\n\t\t90610E3118F4022D00E2C328 /* NSPersistentStoreCoordinator+MagicalRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610E0D18F4022D00E2C328 /* NSPersistentStoreCoordinator+MagicalRecord.m */; };\n\t\t90610E3218F4022D00E2C328 /* MagicalRecord+Actions.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610E1018F4022D00E2C328 /* MagicalRecord+Actions.m */; };\n\t\t90610E3318F4022D00E2C328 /* MagicalRecord+ErrorHandling.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610E1218F4022D00E2C328 /* MagicalRecord+ErrorHandling.m */; };\n\t\t90610E3418F4022D00E2C328 /* MagicalRecord+iCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610E1418F4022D00E2C328 /* MagicalRecord+iCloud.m */; };\n\t\t90610E3518F4022D00E2C328 /* MagicalRecord+Options.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610E1618F4022D00E2C328 /* MagicalRecord+Options.m */; };\n\t\t90610E3618F4022D00E2C328 /* MagicalRecord+Setup.m in Sources */ = {isa = PBXBuildFile; fileRef = 90610E1818F4022D00E2C328 /* MagicalRecord+Setup.m */; };\n\t\tC7CF968C17496F83008D9D13 /* MGPRecipesAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF968217496F83008D9D13 /* MGPRecipesAppDelegate.m */; };\n\t\tC7CF968E17496F83008D9D13 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C7CF968617496F83008D9D13 /* InfoPlist.strings */; };\n\t\tC7CF968F17496F83008D9D13 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF968817496F83008D9D13 /* main.m */; };\n\t\tC7CF96A517497005008D9D13 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C7CF969417497005008D9D13 /* Default-568h@2x.png */; };\n\t\tC7CF96A617497005008D9D13 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = C7CF969517497005008D9D13 /* Default.png */; };\n\t\tC7CF96A717497005008D9D13 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C7CF969617497005008D9D13 /* Default@2x.png */; };\n\t\tC7CF96A817497005008D9D13 /* choosePhoto.png in Resources */ = {isa = PBXBuildFile; fileRef = C7CF969817497005008D9D13 /* choosePhoto.png */; };\n\t\tC7CF96A917497005008D9D13 /* convert.png in Resources */ = {isa = PBXBuildFile; fileRef = C7CF969917497005008D9D13 /* convert.png */; };\n\t\tC7CF96AA17497005008D9D13 /* fork.png in Resources */ = {isa = PBXBuildFile; fileRef = C7CF969A17497005008D9D13 /* fork.png */; };\n\t\tC7CF96AB17497005008D9D13 /* Icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = C7CF969B17497005008D9D13 /* Icon-72.png */; };\n\t\tC7CF96AC17497005008D9D13 /* Icon-Small-50.png in Resources */ = {isa = PBXBuildFile; fileRef = C7CF969C17497005008D9D13 /* Icon-Small-50.png */; };\n\t\tC7CF96AD17497005008D9D13 /* Icon-Small.png in Resources */ = {isa = PBXBuildFile; fileRef = C7CF969D17497005008D9D13 /* Icon-Small.png */; };\n\t\tC7CF96AE17497005008D9D13 /* Icon-Small@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C7CF969E17497005008D9D13 /* Icon-Small@2x.png */; };\n\t\tC7CF96AF17497005008D9D13 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = C7CF969F17497005008D9D13 /* Icon.png */; };\n\t\tC7CF96B017497005008D9D13 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C7CF96A017497005008D9D13 /* Icon@2x.png */; };\n\t\tC7CF96B117497005008D9D13 /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = C7CF96A117497005008D9D13 /* iTunesArtwork */; };\n\t\tC7CF96B217497005008D9D13 /* Recipes.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = C7CF96A317497005008D9D13 /* Recipes.sqlite */; };\n\t\tC7CF96B317497005008D9D13 /* TemperatureData.plist in Resources */ = {isa = PBXBuildFile; fileRef = C7CF96A417497005008D9D13 /* TemperatureData.plist */; };\n\t\tC7CF96BC17497053008D9D13 /* DetailHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = C7CF96B417497053008D9D13 /* DetailHeaderView.xib */; };\n\t\tC7CF96BD17497053008D9D13 /* EditingTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = C7CF96B517497053008D9D13 /* EditingTableViewCell.xib */; };\n\t\tC7CF96BE17497053008D9D13 /* InstructionsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = C7CF96B617497053008D9D13 /* InstructionsView.xib */; };\n\t\tC7CF96BF17497053008D9D13 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = C7CF96B717497053008D9D13 /* MainWindow.xib */; };\n\t\tC7CF96C017497053008D9D13 /* RecipeAddView.xib in Resources */ = {isa = PBXBuildFile; fileRef = C7CF96B817497053008D9D13 /* RecipeAddView.xib */; };\n\t\tC7CF96C117497053008D9D13 /* TemperatureCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = C7CF96B917497053008D9D13 /* TemperatureCell.xib */; };\n\t\tC7CF96C217497053008D9D13 /* TemperatureConverter.xib in Resources */ = {isa = PBXBuildFile; fileRef = C7CF96BA17497053008D9D13 /* TemperatureConverter.xib */; };\n\t\tC7CF96C317497053008D9D13 /* WeightConverter.xib in Resources */ = {isa = PBXBuildFile; fileRef = C7CF96BB17497053008D9D13 /* WeightConverter.xib */; };\n\t\tC7CF96E217497086008D9D13 /* EditingTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96C617497086008D9D13 /* EditingTableViewCell.m */; };\n\t\tC7CF96E317497086008D9D13 /* ImperialPickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96C817497086008D9D13 /* ImperialPickerController.m */; };\n\t\tC7CF96E417497086008D9D13 /* IngredientDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96CA17497086008D9D13 /* IngredientDetailViewController.m */; };\n\t\tC7CF96E517497086008D9D13 /* InstructionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96CC17497086008D9D13 /* InstructionsViewController.m */; };\n\t\tC7CF96E617497086008D9D13 /* MetricPickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96CE17497086008D9D13 /* MetricPickerController.m */; };\n\t\tC7CF96E717497086008D9D13 /* RecipeAddViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96D017497086008D9D13 /* RecipeAddViewController.m */; };\n\t\tC7CF96E817497086008D9D13 /* RecipeDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96D217497086008D9D13 /* RecipeDetailViewController.m */; };\n\t\tC7CF96E917497086008D9D13 /* RecipeListTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96D417497086008D9D13 /* RecipeListTableViewController.m */; };\n\t\tC7CF96EA17497086008D9D13 /* RecipePhotoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96D617497086008D9D13 /* RecipePhotoViewController.m */; };\n\t\tC7CF96EC17497086008D9D13 /* RecipeTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96DA17497086008D9D13 /* RecipeTableViewCell.m */; };\n\t\tC7CF96ED17497086008D9D13 /* TemperatureConverterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96DC17497086008D9D13 /* TemperatureConverterViewController.m */; };\n\t\tC7CF96EE17497086008D9D13 /* TypeSelectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96DE17497086008D9D13 /* TypeSelectionViewController.m */; };\n\t\tC7CF96EF17497086008D9D13 /* UnitConverterTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96E017497086008D9D13 /* UnitConverterTableViewController.m */; };\n\t\tC7CF96F4174971C4008D9D13 /* Recipes.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96F1174971C4008D9D13 /* Recipes.xcdatamodeld */; };\n\t\tC7CF96FF1749725B008D9D13 /* Ingredient.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96F71749725B008D9D13 /* Ingredient.m */; };\n\t\tC7CF97001749725B008D9D13 /* Recipe.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96F91749725B008D9D13 /* Recipe.m */; };\n\t\tC7CF97011749725B008D9D13 /* _Ingredient.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96FC1749725B008D9D13 /* _Ingredient.m */; };\n\t\tC7CF97021749725B008D9D13 /* _Recipe.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF96FE1749725B008D9D13 /* _Recipe.m */; };\n\t\tC7CF970517497348008D9D13 /* TemperatureCell.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF970417497348008D9D13 /* TemperatureCell.m */; };\n\t\tC7CF97071749752D008D9D13 /* WeightConverterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF97061749752C008D9D13 /* WeightConverterViewController.m */; };\n\t\tC7CF976117497858008D9D13 /* ImageToDataTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = C7CF976017497858008D9D13 /* ImageToDataTransformer.m */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t37F29F50229EFEB000570CA4 /* MagicalRecord+ShorthandMethods.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"MagicalRecord+ShorthandMethods.h\"; sourceTree = \"<group>\"; };\n\t\t37F29F51229EFEB000570CA4 /* MagicalRecordDeprecationMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MagicalRecordDeprecationMacros.h; sourceTree = \"<group>\"; };\n\t\t37F29F52229EFEB000570CA4 /* MagicalRecordXcode7CompatibilityMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MagicalRecordXcode7CompatibilityMacros.h; sourceTree = \"<group>\"; };\n\t\t37F29F53229EFEB000570CA4 /* MagicalRecordInternal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MagicalRecordInternal.m; sourceTree = \"<group>\"; };\n\t\t37F29F54229EFEB000570CA4 /* MagicalRecordInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MagicalRecordInternal.h; sourceTree = \"<group>\"; };\n\t\t37F29F55229EFEB100570CA4 /* MagicalRecordLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MagicalRecordLogging.h; sourceTree = \"<group>\"; };\n\t\t37F29F56229EFEB100570CA4 /* MagicalRecordShorthandMethodAliases.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MagicalRecordShorthandMethodAliases.h; sourceTree = \"<group>\"; };\n\t\t37F29F57229EFEB100570CA4 /* MagicalRecord+ShorthandMethods.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"MagicalRecord+ShorthandMethods.m\"; sourceTree = \"<group>\"; };\n\t\t37F29F5A229EFF1200570CA4 /* MagicalRecord.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MagicalRecord.h; sourceTree = \"<group>\"; };\n\t\t90610DE618F4022D00E2C328 /* MagicalImportFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MagicalImportFunctions.h; sourceTree = \"<group>\"; };\n\t\t90610DE718F4022D00E2C328 /* MagicalImportFunctions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MagicalImportFunctions.m; sourceTree = \"<group>\"; };\n\t\t90610DE818F4022D00E2C328 /* NSAttributeDescription+MagicalDataImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSAttributeDescription+MagicalDataImport.h\"; sourceTree = \"<group>\"; };\n\t\t90610DE918F4022D00E2C328 /* NSAttributeDescription+MagicalDataImport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSAttributeDescription+MagicalDataImport.m\"; sourceTree = \"<group>\"; };\n\t\t90610DEA18F4022D00E2C328 /* NSEntityDescription+MagicalDataImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSEntityDescription+MagicalDataImport.h\"; sourceTree = \"<group>\"; };\n\t\t90610DEB18F4022D00E2C328 /* NSEntityDescription+MagicalDataImport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSEntityDescription+MagicalDataImport.m\"; sourceTree = \"<group>\"; };\n\t\t90610DEC18F4022D00E2C328 /* NSNumber+MagicalDataImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSNumber+MagicalDataImport.h\"; sourceTree = \"<group>\"; };\n\t\t90610DED18F4022D00E2C328 /* NSNumber+MagicalDataImport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSNumber+MagicalDataImport.m\"; sourceTree = \"<group>\"; };\n\t\t90610DEE18F4022D00E2C328 /* NSObject+MagicalDataImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSObject+MagicalDataImport.h\"; sourceTree = \"<group>\"; };\n\t\t90610DEF18F4022D00E2C328 /* NSObject+MagicalDataImport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSObject+MagicalDataImport.m\"; sourceTree = \"<group>\"; };\n\t\t90610DF018F4022D00E2C328 /* NSRelationshipDescription+MagicalDataImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSRelationshipDescription+MagicalDataImport.h\"; sourceTree = \"<group>\"; };\n\t\t90610DF118F4022D00E2C328 /* NSRelationshipDescription+MagicalDataImport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSRelationshipDescription+MagicalDataImport.m\"; sourceTree = \"<group>\"; };\n\t\t90610DF218F4022D00E2C328 /* NSString+MagicalDataImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSString+MagicalDataImport.h\"; sourceTree = \"<group>\"; };\n\t\t90610DF318F4022D00E2C328 /* NSString+MagicalDataImport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSString+MagicalDataImport.m\"; sourceTree = \"<group>\"; };\n\t\t90610DF518F4022D00E2C328 /* NSManagedObject+MagicalAggregation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObject+MagicalAggregation.h\"; sourceTree = \"<group>\"; };\n\t\t90610DF618F4022D00E2C328 /* NSManagedObject+MagicalAggregation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObject+MagicalAggregation.m\"; sourceTree = \"<group>\"; };\n\t\t90610DF718F4022D00E2C328 /* NSManagedObject+MagicalDataImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObject+MagicalDataImport.h\"; sourceTree = \"<group>\"; };\n\t\t90610DF818F4022D00E2C328 /* NSManagedObject+MagicalDataImport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObject+MagicalDataImport.m\"; sourceTree = \"<group>\"; };\n\t\t90610DF918F4022D00E2C328 /* NSManagedObject+MagicalFinders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObject+MagicalFinders.h\"; sourceTree = \"<group>\"; };\n\t\t90610DFA18F4022D00E2C328 /* NSManagedObject+MagicalFinders.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObject+MagicalFinders.m\"; sourceTree = \"<group>\"; };\n\t\t90610DFB18F4022D00E2C328 /* NSManagedObject+MagicalRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObject+MagicalRecord.h\"; sourceTree = \"<group>\"; };\n\t\t90610DFC18F4022D00E2C328 /* NSManagedObject+MagicalRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObject+MagicalRecord.m\"; sourceTree = \"<group>\"; };\n\t\t90610DFD18F4022D00E2C328 /* NSManagedObject+MagicalRequests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObject+MagicalRequests.h\"; sourceTree = \"<group>\"; };\n\t\t90610DFE18F4022D00E2C328 /* NSManagedObject+MagicalRequests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObject+MagicalRequests.m\"; sourceTree = \"<group>\"; };\n\t\t90610E0018F4022D00E2C328 /* NSManagedObjectContext+MagicalObserving.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObjectContext+MagicalObserving.h\"; sourceTree = \"<group>\"; };\n\t\t90610E0118F4022D00E2C328 /* NSManagedObjectContext+MagicalObserving.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObjectContext+MagicalObserving.m\"; sourceTree = \"<group>\"; };\n\t\t90610E0218F4022D00E2C328 /* NSManagedObjectContext+MagicalRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObjectContext+MagicalRecord.h\"; sourceTree = \"<group>\"; };\n\t\t90610E0318F4022D00E2C328 /* NSManagedObjectContext+MagicalRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObjectContext+MagicalRecord.m\"; sourceTree = \"<group>\"; };\n\t\t90610E0418F4022D00E2C328 /* NSManagedObjectContext+MagicalSaves.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObjectContext+MagicalSaves.h\"; sourceTree = \"<group>\"; };\n\t\t90610E0518F4022D00E2C328 /* NSManagedObjectContext+MagicalSaves.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObjectContext+MagicalSaves.m\"; sourceTree = \"<group>\"; };\n\t\t90610E0618F4022D00E2C328 /* NSManagedObjectContext+MagicalThreading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObjectContext+MagicalThreading.h\"; sourceTree = \"<group>\"; };\n\t\t90610E0718F4022D00E2C328 /* NSManagedObjectContext+MagicalThreading.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObjectContext+MagicalThreading.m\"; sourceTree = \"<group>\"; };\n\t\t90610E0818F4022D00E2C328 /* NSManagedObjectModel+MagicalRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSManagedObjectModel+MagicalRecord.h\"; sourceTree = \"<group>\"; };\n\t\t90610E0918F4022D00E2C328 /* NSManagedObjectModel+MagicalRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSManagedObjectModel+MagicalRecord.m\"; sourceTree = \"<group>\"; };\n\t\t90610E0A18F4022D00E2C328 /* NSPersistentStore+MagicalRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSPersistentStore+MagicalRecord.h\"; sourceTree = \"<group>\"; };\n\t\t90610E0B18F4022D00E2C328 /* NSPersistentStore+MagicalRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSPersistentStore+MagicalRecord.m\"; sourceTree = \"<group>\"; };\n\t\t90610E0C18F4022D00E2C328 /* NSPersistentStoreCoordinator+MagicalRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSPersistentStoreCoordinator+MagicalRecord.h\"; sourceTree = \"<group>\"; };\n\t\t90610E0D18F4022D00E2C328 /* NSPersistentStoreCoordinator+MagicalRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSPersistentStoreCoordinator+MagicalRecord.m\"; sourceTree = \"<group>\"; };\n\t\t90610E0F18F4022D00E2C328 /* MagicalRecord+Actions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"MagicalRecord+Actions.h\"; sourceTree = \"<group>\"; };\n\t\t90610E1018F4022D00E2C328 /* MagicalRecord+Actions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"MagicalRecord+Actions.m\"; sourceTree = \"<group>\"; };\n\t\t90610E1118F4022D00E2C328 /* MagicalRecord+ErrorHandling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"MagicalRecord+ErrorHandling.h\"; sourceTree = \"<group>\"; };\n\t\t90610E1218F4022D00E2C328 /* MagicalRecord+ErrorHandling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"MagicalRecord+ErrorHandling.m\"; sourceTree = \"<group>\"; };\n\t\t90610E1318F4022D00E2C328 /* MagicalRecord+iCloud.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"MagicalRecord+iCloud.h\"; sourceTree = \"<group>\"; };\n\t\t90610E1418F4022D00E2C328 /* MagicalRecord+iCloud.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"MagicalRecord+iCloud.m\"; sourceTree = \"<group>\"; };\n\t\t90610E1518F4022D00E2C328 /* MagicalRecord+Options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"MagicalRecord+Options.h\"; sourceTree = \"<group>\"; };\n\t\t90610E1618F4022D00E2C328 /* MagicalRecord+Options.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"MagicalRecord+Options.m\"; sourceTree = \"<group>\"; };\n\t\t90610E1718F4022D00E2C328 /* MagicalRecord+Setup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"MagicalRecord+Setup.h\"; sourceTree = \"<group>\"; };\n\t\t90610E1818F4022D00E2C328 /* MagicalRecord+Setup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"MagicalRecord+Setup.m\"; sourceTree = \"<group>\"; };\n\t\tC7CF965F17496EDC008D9D13 /* Recipes.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Recipes.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC7CF966217496EDC008D9D13 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };\n\t\tC7CF966417496EDC008D9D13 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };\n\t\tC7CF966617496EDC008D9D13 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; };\n\t\tC7CF968117496F83008D9D13 /* MGPRecipesAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGPRecipesAppDelegate.h; sourceTree = \"<group>\"; };\n\t\tC7CF968217496F83008D9D13 /* MGPRecipesAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGPRecipesAppDelegate.m; sourceTree = \"<group>\"; };\n\t\tC7CF968717496F83008D9D13 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\tC7CF968817496F83008D9D13 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = \"<group>\"; };\n\t\tC7CF968917496F83008D9D13 /* Recipes-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = \"Recipes-Info.plist\"; sourceTree = \"<group>\"; };\n\t\tC7CF968A17496F83008D9D13 /* Recipes-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"Recipes-Prefix.pch\"; sourceTree = \"<group>\"; };\n\t\tC7CF969117496F95008D9D13 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/CoreData.framework; sourceTree = DEVELOPER_DIR; };\n\t\tC7CF969417497005008D9D13 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Default-568h@2x.png\"; sourceTree = \"<group>\"; };\n\t\tC7CF969517497005008D9D13 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = \"<group>\"; };\n\t\tC7CF969617497005008D9D13 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Default@2x.png\"; sourceTree = \"<group>\"; };\n\t\tC7CF969817497005008D9D13 /* choosePhoto.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = choosePhoto.png; sourceTree = \"<group>\"; };\n\t\tC7CF969917497005008D9D13 /* convert.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = convert.png; sourceTree = \"<group>\"; };\n\t\tC7CF969A17497005008D9D13 /* fork.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fork.png; sourceTree = \"<group>\"; };\n\t\tC7CF969B17497005008D9D13 /* Icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Icon-72.png\"; sourceTree = \"<group>\"; };\n\t\tC7CF969C17497005008D9D13 /* Icon-Small-50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Icon-Small-50.png\"; sourceTree = \"<group>\"; };\n\t\tC7CF969D17497005008D9D13 /* Icon-Small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Icon-Small.png\"; sourceTree = \"<group>\"; };\n\t\tC7CF969E17497005008D9D13 /* Icon-Small@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Icon-Small@2x.png\"; sourceTree = \"<group>\"; };\n\t\tC7CF969F17497005008D9D13 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = \"<group>\"; };\n\t\tC7CF96A017497005008D9D13 /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Icon@2x.png\"; sourceTree = \"<group>\"; };\n\t\tC7CF96A117497005008D9D13 /* iTunesArtwork */ = {isa = PBXFileReference; lastKnownFileType = file; path = iTunesArtwork; sourceTree = \"<group>\"; };\n\t\tC7CF96A317497005008D9D13 /* Recipes.sqlite */ = {isa = PBXFileReference; lastKnownFileType = file; path = Recipes.sqlite; sourceTree = \"<group>\"; };\n\t\tC7CF96A417497005008D9D13 /* TemperatureData.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = TemperatureData.plist; sourceTree = \"<group>\"; };\n\t\tC7CF96B417497053008D9D13 /* DetailHeaderView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DetailHeaderView.xib; sourceTree = \"<group>\"; };\n\t\tC7CF96B517497053008D9D13 /* EditingTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = EditingTableViewCell.xib; sourceTree = \"<group>\"; };\n\t\tC7CF96B617497053008D9D13 /* InstructionsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InstructionsView.xib; sourceTree = \"<group>\"; };\n\t\tC7CF96B717497053008D9D13 /* MainWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = \"<group>\"; };\n\t\tC7CF96B817497053008D9D13 /* RecipeAddView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RecipeAddView.xib; sourceTree = \"<group>\"; };\n\t\tC7CF96B917497053008D9D13 /* TemperatureCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TemperatureCell.xib; sourceTree = \"<group>\"; };\n\t\tC7CF96BA17497053008D9D13 /* TemperatureConverter.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TemperatureConverter.xib; sourceTree = \"<group>\"; };\n\t\tC7CF96BB17497053008D9D13 /* WeightConverter.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WeightConverter.xib; sourceTree = \"<group>\"; };\n\t\tC7CF96C417497086008D9D13 /* AddressBook_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddressBook_Prefix.pch; sourceTree = \"<group>\"; };\n\t\tC7CF96C517497086008D9D13 /* EditingTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditingTableViewCell.h; sourceTree = \"<group>\"; };\n\t\tC7CF96C617497086008D9D13 /* EditingTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EditingTableViewCell.m; sourceTree = \"<group>\"; };\n\t\tC7CF96C717497086008D9D13 /* ImperialPickerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImperialPickerController.h; sourceTree = \"<group>\"; };\n\t\tC7CF96C817497086008D9D13 /* ImperialPickerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImperialPickerController.m; sourceTree = \"<group>\"; };\n\t\tC7CF96C917497086008D9D13 /* IngredientDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IngredientDetailViewController.h; sourceTree = \"<group>\"; };\n\t\tC7CF96CA17497086008D9D13 /* IngredientDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IngredientDetailViewController.m; sourceTree = \"<group>\"; };\n\t\tC7CF96CB17497086008D9D13 /* InstructionsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InstructionsViewController.h; sourceTree = \"<group>\"; };\n\t\tC7CF96CC17497086008D9D13 /* InstructionsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InstructionsViewController.m; sourceTree = \"<group>\"; };\n\t\tC7CF96CD17497086008D9D13 /* MetricPickerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MetricPickerController.h; sourceTree = \"<group>\"; };\n\t\tC7CF96CE17497086008D9D13 /* MetricPickerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MetricPickerController.m; sourceTree = \"<group>\"; };\n\t\tC7CF96CF17497086008D9D13 /* RecipeAddViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecipeAddViewController.h; sourceTree = \"<group>\"; };\n\t\tC7CF96D017497086008D9D13 /* RecipeAddViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RecipeAddViewController.m; sourceTree = \"<group>\"; };\n\t\tC7CF96D117497086008D9D13 /* RecipeDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecipeDetailViewController.h; sourceTree = \"<group>\"; };\n\t\tC7CF96D217497086008D9D13 /* RecipeDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RecipeDetailViewController.m; sourceTree = \"<group>\"; };\n\t\tC7CF96D317497086008D9D13 /* RecipeListTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecipeListTableViewController.h; sourceTree = \"<group>\"; };\n\t\tC7CF96D417497086008D9D13 /* RecipeListTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RecipeListTableViewController.m; sourceTree = \"<group>\"; };\n\t\tC7CF96D517497086008D9D13 /* RecipePhotoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecipePhotoViewController.h; sourceTree = \"<group>\"; };\n\t\tC7CF96D617497086008D9D13 /* RecipePhotoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RecipePhotoViewController.m; sourceTree = \"<group>\"; };\n\t\tC7CF96D917497086008D9D13 /* RecipeTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecipeTableViewCell.h; sourceTree = \"<group>\"; };\n\t\tC7CF96DA17497086008D9D13 /* RecipeTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RecipeTableViewCell.m; sourceTree = \"<group>\"; };\n\t\tC7CF96DB17497086008D9D13 /* TemperatureConverterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemperatureConverterViewController.h; sourceTree = \"<group>\"; };\n\t\tC7CF96DC17497086008D9D13 /* TemperatureConverterViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TemperatureConverterViewController.m; sourceTree = \"<group>\"; };\n\t\tC7CF96DD17497086008D9D13 /* TypeSelectionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TypeSelectionViewController.h; sourceTree = \"<group>\"; };\n\t\tC7CF96DE17497086008D9D13 /* TypeSelectionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TypeSelectionViewController.m; sourceTree = \"<group>\"; };\n\t\tC7CF96DF17497086008D9D13 /* UnitConverterTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnitConverterTableViewController.h; sourceTree = \"<group>\"; };\n\t\tC7CF96E017497086008D9D13 /* UnitConverterTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnitConverterTableViewController.m; sourceTree = \"<group>\"; };\n\t\tC7CF96E117497086008D9D13 /* WeightConverterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeightConverterViewController.h; sourceTree = \"<group>\"; };\n\t\tC7CF96F2174971C4008D9D13 /* Recipes 2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = \"Recipes 2.xcdatamodel\"; sourceTree = \"<group>\"; };\n\t\tC7CF96F3174971C4008D9D13 /* Recipes.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Recipes.xcdatamodel; sourceTree = \"<group>\"; };\n\t\tC7CF96F61749725B008D9D13 /* Ingredient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Ingredient.h; sourceTree = \"<group>\"; };\n\t\tC7CF96F71749725B008D9D13 /* Ingredient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Ingredient.m; sourceTree = \"<group>\"; };\n\t\tC7CF96F81749725B008D9D13 /* Recipe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Recipe.h; sourceTree = \"<group>\"; };\n\t\tC7CF96F91749725B008D9D13 /* Recipe.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Recipe.m; sourceTree = \"<group>\"; };\n\t\tC7CF96FB1749725B008D9D13 /* _Ingredient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _Ingredient.h; sourceTree = \"<group>\"; };\n\t\tC7CF96FC1749725B008D9D13 /* _Ingredient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _Ingredient.m; sourceTree = \"<group>\"; };\n\t\tC7CF96FD1749725B008D9D13 /* _Recipe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _Recipe.h; sourceTree = \"<group>\"; };\n\t\tC7CF96FE1749725B008D9D13 /* _Recipe.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _Recipe.m; sourceTree = \"<group>\"; };\n\t\tC7CF970317497347008D9D13 /* TemperatureCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemperatureCell.h; sourceTree = \"<group>\"; };\n\t\tC7CF970417497348008D9D13 /* TemperatureCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TemperatureCell.m; sourceTree = \"<group>\"; };\n\t\tC7CF97061749752C008D9D13 /* WeightConverterViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WeightConverterViewController.m; sourceTree = \"<group>\"; };\n\t\tC7CF975F17497858008D9D13 /* ImageToDataTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageToDataTransformer.h; sourceTree = \"<group>\"; };\n\t\tC7CF976017497858008D9D13 /* ImageToDataTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageToDataTransformer.m; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXGroup section */\n\t\t90610DDE18F3FAF200E2C328 /* Vendor */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t90610DE318F4022D00E2C328 /* MagicalRecord */,\n\t\t\t);\n\t\t\tname = Vendor;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t90610DE318F4022D00E2C328 /* MagicalRecord */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t37F29F5A229EFF1200570CA4 /* MagicalRecord.h */,\n\t\t\t\t90610DE418F4022D00E2C328 /* Categories */,\n\t\t\t\t90610E0E18F4022D00E2C328 /* Core */,\n\t\t\t);\n\t\t\tname = MagicalRecord;\n\t\t\tpath = ../../MagicalRecord;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t90610DE418F4022D00E2C328 /* Categories */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t90610DE518F4022D00E2C328 /* DataImport */,\n\t\t\t\t90610DF418F4022D00E2C328 /* NSManagedObject */,\n\t\t\t\t90610DFF18F4022D00E2C328 /* NSManagedObjectContext */,\n\t\t\t\t90610E0818F4022D00E2C328 /* NSManagedObjectModel+MagicalRecord.h */,\n\t\t\t\t90610E0918F4022D00E2C328 /* NSManagedObjectModel+MagicalRecord.m */,\n\t\t\t\t90610E0A18F4022D00E2C328 /* NSPersistentStore+MagicalRecord.h */,\n\t\t\t\t90610E0B18F4022D00E2C328 /* NSPersistentStore+MagicalRecord.m */,\n\t\t\t\t90610E0C18F4022D00E2C328 /* NSPersistentStoreCoordinator+MagicalRecord.h */,\n\t\t\t\t90610E0D18F4022D00E2C328 /* NSPersistentStoreCoordinator+MagicalRecord.m */,\n\t\t\t);\n\t\t\tpath = Categories;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t90610DE518F4022D00E2C328 /* DataImport */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t90610DE618F4022D00E2C328 /* MagicalImportFunctions.h */,\n\t\t\t\t90610DE718F4022D00E2C328 /* MagicalImportFunctions.m */,\n\t\t\t\t90610DE818F4022D00E2C328 /* NSAttributeDescription+MagicalDataImport.h */,\n\t\t\t\t90610DE918F4022D00E2C328 /* NSAttributeDescription+MagicalDataImport.m */,\n\t\t\t\t90610DEA18F4022D00E2C328 /* NSEntityDescription+MagicalDataImport.h */,\n\t\t\t\t90610DEB18F4022D00E2C328 /* NSEntityDescription+MagicalDataImport.m */,\n\t\t\t\t90610DEC18F4022D00E2C328 /* NSNumber+MagicalDataImport.h */,\n\t\t\t\t90610DED18F4022D00E2C328 /* NSNumber+MagicalDataImport.m */,\n\t\t\t\t90610DEE18F4022D00E2C328 /* NSObject+MagicalDataImport.h */,\n\t\t\t\t90610DEF18F4022D00E2C328 /* NSObject+MagicalDataImport.m */,\n\t\t\t\t90610DF018F4022D00E2C328 /* NSRelationshipDescription+MagicalDataImport.h */,\n\t\t\t\t90610DF118F4022D00E2C328 /* NSRelationshipDescription+MagicalDataImport.m */,\n\t\t\t\t90610DF218F4022D00E2C328 /* NSString+MagicalDataImport.h */,\n\t\t\t\t90610DF318F4022D00E2C328 /* NSString+MagicalDataImport.m */,\n\t\t\t);\n\t\t\tpath = DataImport;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t90610DF418F4022D00E2C328 /* NSManagedObject */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t90610DF518F4022D00E2C328 /* NSManagedObject+MagicalAggregation.h */,\n\t\t\t\t90610DF618F4022D00E2C328 /* NSManagedObject+MagicalAggregation.m */,\n\t\t\t\t90610DF718F4022D00E2C328 /* NSManagedObject+MagicalDataImport.h */,\n\t\t\t\t90610DF818F4022D00E2C328 /* NSManagedObject+MagicalDataImport.m */,\n\t\t\t\t90610DF918F4022D00E2C328 /* NSManagedObject+MagicalFinders.h */,\n\t\t\t\t90610DFA18F4022D00E2C328 /* NSManagedObject+MagicalFinders.m */,\n\t\t\t\t90610DFB18F4022D00E2C328 /* NSManagedObject+MagicalRecord.h */,\n\t\t\t\t90610DFC18F4022D00E2C328 /* NSManagedObject+MagicalRecord.m */,\n\t\t\t\t90610DFD18F4022D00E2C328 /* NSManagedObject+MagicalRequests.h */,\n\t\t\t\t90610DFE18F4022D00E2C328 /* NSManagedObject+MagicalRequests.m */,\n\t\t\t);\n\t\t\tpath = NSManagedObject;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t90610DFF18F4022D00E2C328 /* NSManagedObjectContext */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t90610E0018F4022D00E2C328 /* NSManagedObjectContext+MagicalObserving.h */,\n\t\t\t\t90610E0118F4022D00E2C328 /* NSManagedObjectContext+MagicalObserving.m */,\n\t\t\t\t90610E0218F4022D00E2C328 /* NSManagedObjectContext+MagicalRecord.h */,\n\t\t\t\t90610E0318F4022D00E2C328 /* NSManagedObjectContext+MagicalRecord.m */,\n\t\t\t\t90610E0418F4022D00E2C328 /* NSManagedObjectContext+MagicalSaves.h */,\n\t\t\t\t90610E0518F4022D00E2C328 /* NSManagedObjectContext+MagicalSaves.m */,\n\t\t\t\t90610E0618F4022D00E2C328 /* NSManagedObjectContext+MagicalThreading.h */,\n\t\t\t\t90610E0718F4022D00E2C328 /* NSManagedObjectContext+MagicalThreading.m */,\n\t\t\t);\n\t\t\tpath = NSManagedObjectContext;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t90610E0E18F4022D00E2C328 /* Core */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t90610E0F18F4022D00E2C328 /* MagicalRecord+Actions.h */,\n\t\t\t\t90610E1018F4022D00E2C328 /* MagicalRecord+Actions.m */,\n\t\t\t\t90610E1118F4022D00E2C328 /* MagicalRecord+ErrorHandling.h */,\n\t\t\t\t90610E1218F4022D00E2C328 /* MagicalRecord+ErrorHandling.m */,\n\t\t\t\t90610E1318F4022D00E2C328 /* MagicalRecord+iCloud.h */,\n\t\t\t\t90610E1418F4022D00E2C328 /* MagicalRecord+iCloud.m */,\n\t\t\t\t90610E1518F4022D00E2C328 /* MagicalRecord+Options.h */,\n\t\t\t\t90610E1618F4022D00E2C328 /* MagicalRecord+Options.m */,\n\t\t\t\t90610E1718F4022D00E2C328 /* MagicalRecord+Setup.h */,\n\t\t\t\t90610E1818F4022D00E2C328 /* MagicalRecord+Setup.m */,\n\t\t\t\t37F29F50229EFEB000570CA4 /* MagicalRecord+ShorthandMethods.h */,\n\t\t\t\t37F29F57229EFEB100570CA4 /* MagicalRecord+ShorthandMethods.m */,\n\t\t\t\t37F29F51229EFEB000570CA4 /* MagicalRecordDeprecationMacros.h */,\n\t\t\t\t37F29F54229EFEB000570CA4 /* MagicalRecordInternal.h */,\n\t\t\t\t37F29F53229EFEB000570CA4 /* MagicalRecordInternal.m */,\n\t\t\t\t37F29F55229EFEB100570CA4 /* MagicalRecordLogging.h */,\n\t\t\t\t37F29F56229EFEB100570CA4 /* MagicalRecordShorthandMethodAliases.h */,\n\t\t\t\t37F29F52229EFEB000570CA4 /* MagicalRecordXcode7CompatibilityMacros.h */,\n\t\t\t);\n\t\t\tpath = Core;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF964D174966C4008D9D13 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF967D17496F83008D9D13 /* Application */,\n\t\t\t\tC7CF969317497005008D9D13 /* Resources */,\n\t\t\t\t90610DDE18F3FAF200E2C328 /* Vendor */,\n\t\t\t\tC7CF966017496EDC008D9D13 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF966017496EDC008D9D13 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF965F17496EDC008D9D13 /* Recipes.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF966117496EDC008D9D13 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF969117496F95008D9D13 /* CoreData.framework */,\n\t\t\t\tC7CF966217496EDC008D9D13 /* UIKit.framework */,\n\t\t\t\tC7CF966417496EDC008D9D13 /* Foundation.framework */,\n\t\t\t\tC7CF966617496EDC008D9D13 /* CoreGraphics.framework */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tpath = ../..;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF967D17496F83008D9D13 /* Application */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF967E17496F83008D9D13 /* Categories */,\n\t\t\t\tC7CF967F17496F83008D9D13 /* Controllers */,\n\t\t\t\tC7CF968017496F83008D9D13 /* Delegate */,\n\t\t\t\tC7CF968317496F83008D9D13 /* Models */,\n\t\t\t\tC7CF968517496F83008D9D13 /* Support */,\n\t\t\t\tC7CF968B17496F83008D9D13 /* Views */,\n\t\t\t);\n\t\t\tpath = Application;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF967E17496F83008D9D13 /* Categories */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF975F17497858008D9D13 /* ImageToDataTransformer.h */,\n\t\t\t\tC7CF976017497858008D9D13 /* ImageToDataTransformer.m */,\n\t\t\t);\n\t\t\tpath = Categories;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF967F17496F83008D9D13 /* Controllers */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF96C417497086008D9D13 /* AddressBook_Prefix.pch */,\n\t\t\t\tC7CF96C517497086008D9D13 /* EditingTableViewCell.h */,\n\t\t\t\tC7CF96C617497086008D9D13 /* EditingTableViewCell.m */,\n\t\t\t\tC7CF96C717497086008D9D13 /* ImperialPickerController.h */,\n\t\t\t\tC7CF96C817497086008D9D13 /* ImperialPickerController.m */,\n\t\t\t\tC7CF96C917497086008D9D13 /* IngredientDetailViewController.h */,\n\t\t\t\tC7CF96CA17497086008D9D13 /* IngredientDetailViewController.m */,\n\t\t\t\tC7CF96CB17497086008D9D13 /* InstructionsViewController.h */,\n\t\t\t\tC7CF96CC17497086008D9D13 /* InstructionsViewController.m */,\n\t\t\t\tC7CF96CD17497086008D9D13 /* MetricPickerController.h */,\n\t\t\t\tC7CF96CE17497086008D9D13 /* MetricPickerController.m */,\n\t\t\t\tC7CF96CF17497086008D9D13 /* RecipeAddViewController.h */,\n\t\t\t\tC7CF96D017497086008D9D13 /* RecipeAddViewController.m */,\n\t\t\t\tC7CF96D117497086008D9D13 /* RecipeDetailViewController.h */,\n\t\t\t\tC7CF96D217497086008D9D13 /* RecipeDetailViewController.m */,\n\t\t\t\tC7CF96D317497086008D9D13 /* RecipeListTableViewController.h */,\n\t\t\t\tC7CF96D417497086008D9D13 /* RecipeListTableViewController.m */,\n\t\t\t\tC7CF96D517497086008D9D13 /* RecipePhotoViewController.h */,\n\t\t\t\tC7CF96D617497086008D9D13 /* RecipePhotoViewController.m */,\n\t\t\t\tC7CF96D917497086008D9D13 /* RecipeTableViewCell.h */,\n\t\t\t\tC7CF96DA17497086008D9D13 /* RecipeTableViewCell.m */,\n\t\t\t\tC7CF970317497347008D9D13 /* TemperatureCell.h */,\n\t\t\t\tC7CF970417497348008D9D13 /* TemperatureCell.m */,\n\t\t\t\tC7CF96DB17497086008D9D13 /* TemperatureConverterViewController.h */,\n\t\t\t\tC7CF96DC17497086008D9D13 /* TemperatureConverterViewController.m */,\n\t\t\t\tC7CF96DD17497086008D9D13 /* TypeSelectionViewController.h */,\n\t\t\t\tC7CF96DE17497086008D9D13 /* TypeSelectionViewController.m */,\n\t\t\t\tC7CF96DF17497086008D9D13 /* UnitConverterTableViewController.h */,\n\t\t\t\tC7CF96E017497086008D9D13 /* UnitConverterTableViewController.m */,\n\t\t\t\tC7CF96E117497086008D9D13 /* WeightConverterViewController.h */,\n\t\t\t\tC7CF97061749752C008D9D13 /* WeightConverterViewController.m */,\n\t\t\t);\n\t\t\tpath = Controllers;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF968017496F83008D9D13 /* Delegate */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF968117496F83008D9D13 /* MGPRecipesAppDelegate.h */,\n\t\t\t\tC7CF968217496F83008D9D13 /* MGPRecipesAppDelegate.m */,\n\t\t\t);\n\t\t\tpath = Delegate;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF968317496F83008D9D13 /* Models */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF96F51749725B008D9D13 /* entities */,\n\t\t\t\tC7CF96FA1749725B008D9D13 /* generated */,\n\t\t\t\tC7CF96F1174971C4008D9D13 /* Recipes.xcdatamodeld */,\n\t\t\t);\n\t\t\tpath = Models;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF968517496F83008D9D13 /* Support */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF966117496EDC008D9D13 /* Frameworks */,\n\t\t\t\tC7CF968617496F83008D9D13 /* InfoPlist.strings */,\n\t\t\t\tC7CF968817496F83008D9D13 /* main.m */,\n\t\t\t\tC7CF968917496F83008D9D13 /* Recipes-Info.plist */,\n\t\t\t\tC7CF968A17496F83008D9D13 /* Recipes-Prefix.pch */,\n\t\t\t);\n\t\t\tpath = Support;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF968B17496F83008D9D13 /* Views */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF96B417497053008D9D13 /* DetailHeaderView.xib */,\n\t\t\t\tC7CF96B517497053008D9D13 /* EditingTableViewCell.xib */,\n\t\t\t\tC7CF96B617497053008D9D13 /* InstructionsView.xib */,\n\t\t\t\tC7CF96B717497053008D9D13 /* MainWindow.xib */,\n\t\t\t\tC7CF96B817497053008D9D13 /* RecipeAddView.xib */,\n\t\t\t\tC7CF96B917497053008D9D13 /* TemperatureCell.xib */,\n\t\t\t\tC7CF96BA17497053008D9D13 /* TemperatureConverter.xib */,\n\t\t\t\tC7CF96BB17497053008D9D13 /* WeightConverter.xib */,\n\t\t\t);\n\t\t\tpath = Views;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF969317497005008D9D13 /* Resources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF969417497005008D9D13 /* Default-568h@2x.png */,\n\t\t\t\tC7CF969517497005008D9D13 /* Default.png */,\n\t\t\t\tC7CF969617497005008D9D13 /* Default@2x.png */,\n\t\t\t\tC7CF969717497005008D9D13 /* images */,\n\t\t\t\tC7CF96A217497005008D9D13 /* RecipeData */,\n\t\t\t);\n\t\t\tpath = Resources;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF969717497005008D9D13 /* images */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF969817497005008D9D13 /* choosePhoto.png */,\n\t\t\t\tC7CF969917497005008D9D13 /* convert.png */,\n\t\t\t\tC7CF969A17497005008D9D13 /* fork.png */,\n\t\t\t\tC7CF969B17497005008D9D13 /* Icon-72.png */,\n\t\t\t\tC7CF969C17497005008D9D13 /* Icon-Small-50.png */,\n\t\t\t\tC7CF969D17497005008D9D13 /* Icon-Small.png */,\n\t\t\t\tC7CF969E17497005008D9D13 /* Icon-Small@2x.png */,\n\t\t\t\tC7CF969F17497005008D9D13 /* Icon.png */,\n\t\t\t\tC7CF96A017497005008D9D13 /* Icon@2x.png */,\n\t\t\t\tC7CF96A117497005008D9D13 /* iTunesArtwork */,\n\t\t\t);\n\t\t\tpath = images;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF96A217497005008D9D13 /* RecipeData */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF96A317497005008D9D13 /* Recipes.sqlite */,\n\t\t\t\tC7CF96A417497005008D9D13 /* TemperatureData.plist */,\n\t\t\t);\n\t\t\tpath = RecipeData;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF96F51749725B008D9D13 /* entities */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF96F61749725B008D9D13 /* Ingredient.h */,\n\t\t\t\tC7CF96F71749725B008D9D13 /* Ingredient.m */,\n\t\t\t\tC7CF96F81749725B008D9D13 /* Recipe.h */,\n\t\t\t\tC7CF96F91749725B008D9D13 /* Recipe.m */,\n\t\t\t);\n\t\t\tpath = entities;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC7CF96FA1749725B008D9D13 /* generated */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF96FB1749725B008D9D13 /* _Ingredient.h */,\n\t\t\t\tC7CF96FC1749725B008D9D13 /* _Ingredient.m */,\n\t\t\t\tC7CF96FD1749725B008D9D13 /* _Recipe.h */,\n\t\t\t\tC7CF96FE1749725B008D9D13 /* _Recipe.m */,\n\t\t\t);\n\t\t\tpath = generated;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tC7CF965E17496EDC008D9D13 /* Recipes */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C7CF967C17496EDC008D9D13 /* Build configuration list for PBXNativeTarget \"Recipes\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC7CF96F017497178008D9D13 /* Regenerate Core Data Entities */,\n\t\t\t\tC7CF965B17496EDC008D9D13 /* Sources */,\n\t\t\t\tC7CF965D17496EDC008D9D13 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = Recipes;\n\t\t\tproductName = Recipies;\n\t\t\tproductReference = C7CF965F17496EDC008D9D13 /* Recipes.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tC7CF964E174966C4008D9D13 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 0510;\n\t\t\t};\n\t\t\tbuildConfigurationList = C7CF9651174966C4008D9D13 /* Build configuration list for PBXProject \"MagicalRecordRecipes\" */;\n\t\t\tcompatibilityVersion = \"Xcode 10.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = C7CF964D174966C4008D9D13;\n\t\t\tproductRefGroup = C7CF966017496EDC008D9D13 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tC7CF965E17496EDC008D9D13 /* Recipes */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tC7CF965D17496EDC008D9D13 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC7CF968E17496F83008D9D13 /* InfoPlist.strings in Resources */,\n\t\t\t\tC7CF96A517497005008D9D13 /* Default-568h@2x.png in Resources */,\n\t\t\t\tC7CF96A617497005008D9D13 /* Default.png in Resources */,\n\t\t\t\tC7CF96A717497005008D9D13 /* Default@2x.png in Resources */,\n\t\t\t\tC7CF96A817497005008D9D13 /* choosePhoto.png in Resources */,\n\t\t\t\tC7CF96A917497005008D9D13 /* convert.png in Resources */,\n\t\t\t\tC7CF96AA17497005008D9D13 /* fork.png in Resources */,\n\t\t\t\tC7CF96AB17497005008D9D13 /* Icon-72.png in Resources */,\n\t\t\t\tC7CF96AC17497005008D9D13 /* Icon-Small-50.png in Resources */,\n\t\t\t\tC7CF96AD17497005008D9D13 /* Icon-Small.png in Resources */,\n\t\t\t\tC7CF96AE17497005008D9D13 /* Icon-Small@2x.png in Resources */,\n\t\t\t\tC7CF96AF17497005008D9D13 /* Icon.png in Resources */,\n\t\t\t\tC7CF96B017497005008D9D13 /* Icon@2x.png in Resources */,\n\t\t\t\tC7CF96B117497005008D9D13 /* iTunesArtwork in Resources */,\n\t\t\t\tC7CF96B217497005008D9D13 /* Recipes.sqlite in Resources */,\n\t\t\t\tC7CF96B317497005008D9D13 /* TemperatureData.plist in Resources */,\n\t\t\t\tC7CF96BC17497053008D9D13 /* DetailHeaderView.xib in Resources */,\n\t\t\t\tC7CF96BD17497053008D9D13 /* EditingTableViewCell.xib in Resources */,\n\t\t\t\tC7CF96BE17497053008D9D13 /* InstructionsView.xib in Resources */,\n\t\t\t\tC7CF96BF17497053008D9D13 /* MainWindow.xib in Resources */,\n\t\t\t\tC7CF96C017497053008D9D13 /* RecipeAddView.xib in Resources */,\n\t\t\t\tC7CF96C117497053008D9D13 /* TemperatureCell.xib in Resources */,\n\t\t\t\tC7CF96C217497053008D9D13 /* TemperatureConverter.xib in Resources */,\n\t\t\t\tC7CF96C317497053008D9D13 /* WeightConverter.xib in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\tC7CF96F017497178008D9D13 /* Regenerate Core Data Entities */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Regenerate Core Data Entities\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"mogen=`which mogenerator`\\nPlistBuddy=/usr/libexec/PlistBuddy\\nHUMAN_FILES_OUTPUT_FOLDER=$PROJECT_DIR/Application/Models/entities\\nMACHINE_FILES_OUTPUT_FOLDER=$PROJECT_DIR/Application/Models/generated\\nMODEL_DATA_FOLDER=$PROJECT_DIR/Application/Models/Recipes.xcdatamodeld\\n\\n#figure out current model version\\nCURRENT_MODEL_VERSION=`\\\"$PlistBuddy\\\" -c 'Print _XCCurrentVersionName' \\\"$MODEL_DATA_FOLDER/.xccurrentversion\\\"`\\n\\n\\nif [[ -x $mogen ]]; then\\necho \\\"Updating data objects from $MODEL_DATA_FOLDER/$CURRENT_MODEL_VERSION using $mogen\\\"\\n\\\"$mogen\\\" -m \\\"$MODEL_DATA_FOLDER/$CURRENT_MODEL_VERSION\\\" -M \\\"$MACHINE_FILES_OUTPUT_FOLDER\\\" -H \\\"$HUMAN_FILES_OUTPUT_FOLDER\\\" --template-var arc=true\\nfi\\n\";\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tC7CF965B17496EDC008D9D13 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC7CF968C17496F83008D9D13 /* MGPRecipesAppDelegate.m in Sources */,\n\t\t\t\t90610E3418F4022D00E2C328 /* MagicalRecord+iCloud.m in Sources */,\n\t\t\t\t90610E2318F4022D00E2C328 /* NSObject+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF968F17496F83008D9D13 /* main.m in Sources */,\n\t\t\t\tC7CF96E217497086008D9D13 /* EditingTableViewCell.m in Sources */,\n\t\t\t\tC7CF96E317497086008D9D13 /* ImperialPickerController.m in Sources */,\n\t\t\t\t90610E2F18F4022D00E2C328 /* NSManagedObjectModel+MagicalRecord.m in Sources */,\n\t\t\t\t90610E2518F4022D00E2C328 /* NSString+MagicalDataImport.m in Sources */,\n\t\t\t\t90610E2418F4022D00E2C328 /* NSRelationshipDescription+MagicalDataImport.m in Sources */,\n\t\t\t\t90610E2818F4022D00E2C328 /* NSManagedObject+MagicalFinders.m in Sources */,\n\t\t\t\tC7CF96E417497086008D9D13 /* IngredientDetailViewController.m in Sources */,\n\t\t\t\t90610E1F18F4022D00E2C328 /* MagicalImportFunctions.m in Sources */,\n\t\t\t\tC7CF96E517497086008D9D13 /* InstructionsViewController.m in Sources */,\n\t\t\t\t90610E2E18F4022D00E2C328 /* NSManagedObjectContext+MagicalThreading.m in Sources */,\n\t\t\t\tC7CF96E617497086008D9D13 /* MetricPickerController.m in Sources */,\n\t\t\t\tC7CF96E717497086008D9D13 /* RecipeAddViewController.m in Sources */,\n\t\t\t\t90610E3318F4022D00E2C328 /* MagicalRecord+ErrorHandling.m in Sources */,\n\t\t\t\t90610E2D18F4022D00E2C328 /* NSManagedObjectContext+MagicalSaves.m in Sources */,\n\t\t\t\t90610E3118F4022D00E2C328 /* NSPersistentStoreCoordinator+MagicalRecord.m in Sources */,\n\t\t\t\tC7CF96E817497086008D9D13 /* RecipeDetailViewController.m in Sources */,\n\t\t\t\t90610E2B18F4022D00E2C328 /* NSManagedObjectContext+MagicalObserving.m in Sources */,\n\t\t\t\t90610E2618F4022D00E2C328 /* NSManagedObject+MagicalAggregation.m in Sources */,\n\t\t\t\tC7CF96E917497086008D9D13 /* RecipeListTableViewController.m in Sources */,\n\t\t\t\t90610E2218F4022D00E2C328 /* NSNumber+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF96EA17497086008D9D13 /* RecipePhotoViewController.m in Sources */,\n\t\t\t\t90610E2C18F4022D00E2C328 /* NSManagedObjectContext+MagicalRecord.m in Sources */,\n\t\t\t\t90610E3218F4022D00E2C328 /* MagicalRecord+Actions.m in Sources */,\n\t\t\t\t90610E2018F4022D00E2C328 /* NSAttributeDescription+MagicalDataImport.m in Sources */,\n\t\t\t\t37F29F59229EFEB100570CA4 /* MagicalRecord+ShorthandMethods.m in Sources */,\n\t\t\t\t90610E3518F4022D00E2C328 /* MagicalRecord+Options.m in Sources */,\n\t\t\t\tC7CF96EC17497086008D9D13 /* RecipeTableViewCell.m in Sources */,\n\t\t\t\tC7CF96ED17497086008D9D13 /* TemperatureConverterViewController.m in Sources */,\n\t\t\t\t90610E2A18F4022D00E2C328 /* NSManagedObject+MagicalRequests.m in Sources */,\n\t\t\t\tC7CF96EE17497086008D9D13 /* TypeSelectionViewController.m in Sources */,\n\t\t\t\tC7CF96EF17497086008D9D13 /* UnitConverterTableViewController.m in Sources */,\n\t\t\t\t90610E3018F4022D00E2C328 /* NSPersistentStore+MagicalRecord.m in Sources */,\n\t\t\t\tC7CF96F4174971C4008D9D13 /* Recipes.xcdatamodeld in Sources */,\n\t\t\t\tC7CF96FF1749725B008D9D13 /* Ingredient.m in Sources */,\n\t\t\t\tC7CF97001749725B008D9D13 /* Recipe.m in Sources */,\n\t\t\t\t90610E2718F4022D00E2C328 /* NSManagedObject+MagicalDataImport.m in Sources */,\n\t\t\t\tC7CF97011749725B008D9D13 /* _Ingredient.m in Sources */,\n\t\t\t\tC7CF97021749725B008D9D13 /* _Recipe.m in Sources */,\n\t\t\t\t90610E3618F4022D00E2C328 /* MagicalRecord+Setup.m in Sources */,\n\t\t\t\t90610E2918F4022D00E2C328 /* NSManagedObject+MagicalRecord.m in Sources */,\n\t\t\t\t90610E2118F4022D00E2C328 /* NSEntityDescription+MagicalDataImport.m in Sources */,\n\t\t\t\t37F29F58229EFEB100570CA4 /* MagicalRecordInternal.m in Sources */,\n\t\t\t\tC7CF970517497348008D9D13 /* TemperatureCell.m in Sources */,\n\t\t\t\tC7CF97071749752D008D9D13 /* WeightConverterViewController.m in Sources */,\n\t\t\t\tC7CF976117497858008D9D13 /* ImageToDataTransformer.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXVariantGroup section */\n\t\tC7CF968617496F83008D9D13 /* InfoPlist.strings */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF968717496F83008D9D13 /* en */,\n\t\t\t);\n\t\t\tname = InfoPlist.strings;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\tC7CF9652174966C4008D9D13 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC7CF9653174966C4008D9D13 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC7CF967A17496EDC008D9D13 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"Application/Support/Recipes-Prefix.pch\";\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tHEADER_SEARCH_PATHS = (\n\t\t\t\t\t\"\\\"$(SRCROOT)/../../MagicalRecord\\\"/**\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = \"Application/Support/Recipes-Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC7CF967B17496EDC008D9D13 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"Application/Support/Recipes-Prefix.pch\";\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tHEADER_SEARCH_PATHS = (\n\t\t\t\t\t\"\\\"$(SRCROOT)/../../MagicalRecord\\\"/**\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = \"Application/Support/Recipes-Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tOTHER_CFLAGS = \"-DNS_BLOCK_ASSERTIONS=1\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tC7CF9651174966C4008D9D13 /* Build configuration list for PBXProject \"MagicalRecordRecipes\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC7CF9652174966C4008D9D13 /* Debug */,\n\t\t\t\tC7CF9653174966C4008D9D13 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC7CF967C17496EDC008D9D13 /* Build configuration list for PBXNativeTarget \"Recipes\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC7CF967A17496EDC008D9D13 /* Debug */,\n\t\t\t\tC7CF967B17496EDC008D9D13 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCVersionGroup section */\n\t\tC7CF96F1174971C4008D9D13 /* Recipes.xcdatamodeld */ = {\n\t\t\tisa = XCVersionGroup;\n\t\t\tchildren = (\n\t\t\t\tC7CF96F2174971C4008D9D13 /* Recipes 2.xcdatamodel */,\n\t\t\t\tC7CF96F3174971C4008D9D13 /* Recipes.xcdatamodel */,\n\t\t\t);\n\t\t\tcurrentVersion = C7CF96F3174971C4008D9D13 /* Recipes.xcdatamodel */;\n\t\t\tpath = Recipes.xcdatamodeld;\n\t\t\tsourceTree = \"<group>\";\n\t\t\tversionGroupType = wrapper.xcdatamodel;\n\t\t};\n/* End XCVersionGroup section */\n\t};\n\trootObject = C7CF964E174966C4008D9D13 /* Project object */;\n}\n"
  },
  {
    "path": "Samples/iOS/Resources/RecipeData/TemperatureData.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<array>\n\t<dict>\n\t\t<key>f</key>\n\t\t<string>225</string>\n\t\t<key>c</key>\n\t\t<string>110</string>\n\t\t<key>g</key>\n\t\t<string>1/4</string>\n\t\t<key>d</key>\n\t\t<string>Very Slow</string>\n\t</dict>\n\t<dict>\n\t\t<key>f</key>\n\t\t<string>250</string>\n\t\t<key>c</key>\n\t\t<string>120</string>\n\t\t<key>g</key>\n\t\t<string>1/2</string>\n\t\t<key>d</key>\n\t\t<string>Very Slow</string>\n\t</dict>\n\t<dict>\n\t\t<key>f</key>\n\t\t<string>275</string>\n\t\t<key>c</key>\n\t\t<string>140</string>\n\t\t<key>g</key>\n\t\t<string>1</string>\n\t\t<key>d</key>\n\t\t<string>Slow</string>\n\t</dict>\n\t<dict>\n\t\t<key>f</key>\n\t\t<string>300</string>\n\t\t<key>c</key>\n\t\t<string>150</string>\n\t\t<key>g</key>\n\t\t<string>2</string>\n\t\t<key>d</key>\n\t\t<string>Slow</string>\n\t</dict>\n\t<dict>\n\t\t<key>f</key>\n\t\t<string>325</string>\n\t\t<key>c</key>\n\t\t<string>160</string>\n\t\t<key>g</key>\n\t\t<string>3</string>\n\t\t<key>d</key>\n\t\t<string>Moderate</string>\n\t</dict>\n\t<dict>\n\t\t<key>f</key>\n\t\t<string>350</string>\n\t\t<key>c</key>\n\t\t<string>180</string>\n\t\t<key>g</key>\n\t\t<string>4</string>\n\t\t<key>d</key>\n\t\t<string>Moderate</string>\n\t</dict>\n\t<dict>\n\t\t<key>f</key>\n\t\t<string>375</string>\n\t\t<key>c</key>\n\t\t<string>190</string>\n\t\t<key>g</key>\n\t\t<string>5</string>\n\t\t<key>d</key>\n\t\t<string>Moderately Hot</string>\n\t</dict>\n\t<dict>\n\t\t<key>f</key>\n\t\t<string>400</string>\n\t\t<key>c</key>\n\t\t<string>200</string>\n\t\t<key>g</key>\n\t\t<string>6</string>\n\t\t<key>d</key>\n\t\t<string>Moderately Hot</string>\n\t</dict>\n\t<dict>\n\t\t<key>f</key>\n\t\t<string>425</string>\n\t\t<key>c</key>\n\t\t<string>220</string>\n\t\t<key>g</key>\n\t\t<string>7</string>\n\t\t<key>d</key>\n\t\t<string>Hot</string>\n\t</dict>\n\t<dict>\n\t\t<key>f</key>\n\t\t<string>450</string>\n\t\t<key>c</key>\n\t\t<string>230</string>\n\t\t<key>g</key>\n\t\t<string>8</string>\n\t\t<key>d</key>\n\t\t<string>Hot</string>\n\t</dict>\n\t<dict>\n\t\t<key>f</key>\n\t\t<string>475</string>\n\t\t<key>c</key>\n\t\t<string>240</string>\n\t\t<key>g</key>\n\t\t<string>9</string>\n\t\t<key>d</key>\n\t\t<string>Very Hot</string>\n\t</dict>\n</array>\n</plist>\n"
  },
  {
    "path": "Support/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>0</string>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2015 Magical Panda Software LLC. All rights reserved.</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Support/Scripts/GenerateShorthandAliases.rb",
    "content": "#!/usr/bin/env ruby\n#\n#  ProcessHeader.rb\n#  Magical Record\n#\n#  Created by Saul Mora on 11/14/11.\n#  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n#\n\nrequire 'pp'\n\ndef processImplementation(headerFile)\n    unless headerFile.end_with? \".h\"\n        puts \"#{headerFile} not a header\"\n        return\n    end\n\n    puts \"Reading #{headerFile}\"\n\n    method_match_expression = /^(?<Start>[\\+|\\-]\\s*\\([a-zA-Z_\\(\\)\\,\\s\\*]+\\)\\s*)(?<MethodName>MR_\\w+)(?<End>\\:?.*)/\n    category_match_expression = /^\\s*(?<Interface>@[[:alnum:]]+)\\s*(?<ObjectName>[[:alnum:]]+)\\s*(\\((?<Category>\\w+)\\))?/\n\n    lines = File.readlines(headerFile)\n    non_prefixed_methods = []\n    processed_methods_count = 0\n    objects_to_process = [\"NSManagedObject\", \"NSManagedObjectContext\", \"NSManagedObjectModel\", \"NSPersistentStoreCoordinator\", \"NSPersistentStore\"]\n\n    lines.each { |line|\n        processed_line = nil\n        if line.start_with?(\"@interface\")\n            matches = category_match_expression.match(line)\n            if objects_to_process.include?(matches[:ObjectName])\n                processed_line = \"\\n@implementation #{matches[:ObjectName]} (#{matches[:Category]}ShortHand)\\n\"\n            else\n                puts \"Skipping #{headerFile} because it didn't match any of the approved classes\"\n                non_prefixed_methods = nil\n                return\n            end\n        end\n\n        if processed_line == nil\n            matches = method_match_expression.match(line)\n\n            if matches\n\n                if matches[:MethodName].start_with?(\"MR_\")\n                    ++processed_methods_count\n                    methodName = matches[:MethodName].sub(\"MR_\", \"\")\n                    methodStart = matches[:Start].gsub(/^[\\-|\\+].*/, '')\n                    methodEnd = matches[:End].gsub(/\\sNS_[^\\s]+/, '').gsub(/\\sMR_DEPRECATED_IN_3_0_PLEASE_USE.*$/, '')\n\n                    selfcall = \"#{methodStart}#{matches[:MethodName]}#{methodEnd}\"\n\n                    pp selfcall\n                    selfcall = selfcall.gsub(/;$/, '')\n                    selfcall = selfcall.gsub(/(\\([^\\)]+\\)+)/, '')\n\n                    processed_line = <<EOS\n#{matches[:Start]}#{methodName}#{methodEnd}\n{\n    return [self #{selfcall}];\n}\nEOS\n\n                  if processed_line.include? \"NSFetchedResultsController\"\n                    processed_line = \"#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\\n\\n#{processed_line}\\n#endif /* TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR */\\n\"\n                  end\n                else\n                    non_prefixed_methods = nil\n                    return\n                    puts \"Skipping #{headerFile} : #{matches[:MethodName]} because it doesn't start with MR_\"\n                end\n            end\n        end\n\n        if processed_line == nil\n            if line.start_with?(\"@end\")\n                processed_line = \"@end\\n\"\n            end\n        end\n\n        unless processed_line == nil\n            non_prefixed_methods << processed_line\n        end\n    }\n\n    non_prefixed_methods.compact\nend\n\ndef processHeader(headerFile, include_deprecation_warnings)\n    unless headerFile.end_with? \".h\"\n        puts \"#{headerFile} not a header\"\n        return\n    end\n\n    puts \"Reading #{headerFile}\"\n\n    method_match_expression = /^(?<Start>[\\+|\\-]\\s*\\([a-zA-Z_\\(\\)\\,\\s\\*]+\\)\\s*)(?<MethodName>MR_\\w+)(?<End>\\:?.*)/\n    category_match_expression = /^\\s*(?<Interface>@[[:alnum:]]+)\\s*(?<ObjectName>[[:alnum:]]+)\\s*(\\((?<Category>\\w+)\\))?/\n\n    lines = File.readlines(headerFile)\n    non_prefixed_methods = []\n    processed_methods_count = 0\n    objects_to_process = [\"NSManagedObject\", \"NSManagedObjectContext\", \"NSManagedObjectModel\", \"NSPersistentStoreCoordinator\", \"NSPersistentStore\"]\n\n    lines.each { |line|\n        processed_line = nil\n        if line.start_with?(\"@interface\")\n            matches = category_match_expression.match(line)\n            if objects_to_process.include?(matches[:ObjectName])\n                processed_line = \"\\n#{matches[:Interface]} #{matches[:ObjectName]} (#{matches[:Category]}ShortHand)\\n\"\n            else\n                puts \"Skipping #{headerFile} because it didn't match any of the approved classes\"\n                non_prefixed_methods = nil\n                return\n            end\n        end\n\n        if processed_line == nil\n            matches = method_match_expression.match(line)\n\n            if matches\n                if matches[:MethodName].start_with?(\"MR_\")\n                    ++processed_methods_count\n                    methodName = matches[:MethodName].sub(\"MR_\", \"\")\n                    methodStart = matches[:Start].gsub(/^([\\-|\\+]).*/, '\\1')\n                    methodEnd = matches[:End]\n\n                    methodSuffix = nil\n                    unless include_deprecation_warnings == false or methodEnd.include? \"MR_DEPRECATED_IN_3_0_PLEASE_USE\"\n                      methodEnd = methodEnd.sub(\";\", '')\n                      deprecationNoticeMethod = methodEnd.gsub(/:(\\([^\\)]+\\)[\\w]+)|:(\\(.+)/, ':')\n                      deprecationNoticeMethod = deprecationNoticeMethod.gsub(/:\\s/, ':')\n                      deprecationNoticeMethod = deprecationNoticeMethod.gsub(/ NS_[^\\s]+/, '')\n                      deprecationNoticeMethod = deprecationNoticeMethod.gsub(/;$/, '')\n\n                      methodSuffix = \" MR_DEPRECATED_IN_3_0_PLEASE_USE(\\\"#{matches[:MethodName]}\\\");\"\n                    end\n\n                    processed_line = \"#{matches[:Start]}#{methodName}#{methodEnd}#{methodSuffix}\"\n\n                    if processed_line.include? \"NSFetchedResultsController\"\n                      processed_line = \"\\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\\n\\n#{processed_line}\\n\\n#endif /* TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR */\"\n                    end\n                else\n                    non_prefixed_methods = nil\n                    return\n                    puts \"Skipping #{headerFile} : #{matches[:MethodName]} because it doesn't start with MR_\"\n                end\n            end\n        end\n\n        if processed_line == nil\n            if line.start_with?(\"@end\")\n                processed_line = \"\\n@end\\n\"\n            end\n        end\n\n        unless processed_line == nil\n            non_prefixed_methods << processed_line\n        end\n    }\n\n    non_prefixed_methods.compact\nend\n\ndef processDirectoryForHeaders(path, include_deprecation_warnings)\n\n    headers = File.join(path, \"**\", \"*+*.h\")\n    processedHeaders = []\n\n    Dir.glob(headers).each { |file|\n        puts \"Processing #{file}\"\n\n        processDirectory(file) if File.directory?(file)\n        if file.end_with?(\".h\")\n            processedHeaders << processHeader(file, include_deprecation_warnings)\n        end\n    }\n\n    processedHeaders\nend\n\ndef processDirectoryForImplementations(path)\n\n    headers = File.join(path, \"**\", \"*+*.h\")\n    processedHeaders = []\n\n    Dir.glob(headers).each { |file|\n        puts \"Processing #{file}\"\n\n        processDirectory(file) if File.directory?(file)\n        if file.end_with?(\".h\")\n            processedHeaders << processImplementation(file)\n        end\n    }\n\n    processedHeaders\nend\n\n\ndef generateHeaders(startingPoint, include_deprecation_warnings)\n\n    processedHeaders = []\n    if startingPoint\n        path = File.expand_path(startingPoint)\n\n        if path.end_with?(\".h\")\n            processedHeaders << processHeader(path, include_deprecation_warnings)\n        else\n            puts \"Processing Headers in #{path}\"\n            processedHeaders << processDirectoryForHeaders(path, include_deprecation_warnings)\n        end\n\n    else\n        processedHeaders << processDirectoryForHeaders(startingPoint || Dir.getwd(), include_deprecation_warnings)\n    end\n\n    processedHeaders\nend\n\ndef generateImplementations(startingPoint)\n\n    processedHeaders = []\n    if startingPoint\n        path = File.expand_path(startingPoint)\n\n        if path.end_with?(\".h\")\n            processedHeaders << processImplementation(path)\n        else\n            puts \"Processing Headers in #{path}\"\n            processedHeaders << processDirectoryForImplementations(path)\n        end\n\n    else\n        processedHeaders << processDirectoryForImplementations(startingPoint || Dir.getwd())\n    end\n\n    processedHeaders\nend\n\n\nputs \"Input dir: #{File.expand_path(ARGV[0])}\"\n\noutput_file = ARGV[1]\nputs \"Output file: #{File.expand_path(output_file)}\"\n\nunless output_file\n    puts \"Need an output file specified\"\n    return\nelse\n    puts \"Generating shorthand headers\"\nend\n\nheaders = generateHeaders(ARGV[0], false).collect &:compact\n# implementations = generateImplementations(ARGV[0]).collect &:compact\n\nFile.open(\"#{output_file}.h\", \"w\") { |file|\n    file.write(\"#import <MagicalRecord/MagicalRecord.h>\\n\")\n    file.write(\"#import <MagicalRecord/MagicalRecordDeprecationMacros.h>\\n\\n\")\n    file.write(headers.compact.join(\"\\n\"))\n}\n\n# File.open(\"#{output_file}.m\", \"w\") { |file|\n#     file.write(\"#ifdef MR_SHORTHAND\\n\\n\")\n#     file.write(\"#import \\\"#{output_file}.h\\\"\\n\")\n#     file.write(\"#import \\\"MagicalRecord.h\\\"\\n\\n\")\n#     file.write(implementations.compact.join(\"\\n\"))\n#     file.write(\"#endif\\n\")\n# }\n"
  },
  {
    "path": "Support/Scripts/push_podspec.sh",
    "content": "#!/usr/bin/env bash\n\nsource ~/.rvm/scripts/rvm\nrvm use default\npod trunk push\n"
  },
  {
    "path": "Support/Scripts/set_version_information.sh",
    "content": "#!/bin/bash\n\ngit=$(sh /etc/profile; which git)\nnumber_of_commits=$(\"$git\" rev-list HEAD --count)\ngit_release_version=$(\"$git\" describe --tags --always --abbrev=0)\n\ntarget_plist=\"$TARGET_BUILD_DIR/$INFOPLIST_PATH\"\ndsym_plist=\"$DWARF_DSYM_FOLDER_PATH/$DWARF_DSYM_FILE_NAME/Contents/Info.plist\"\n\nfor plist in \"$target_plist\" \"$dsym_plist\"; do\n  if [ -f \"$plist\" ]; then\n    /usr/libexec/PlistBuddy -c \"Set :CFBundleVersion $number_of_commits\" \"$plist\"\n    /usr/libexec/PlistBuddy -c \"Set :CFBundleShortVersionString ${git_release_version#*v}\" \"$plist\"\n  fi\ndone\n"
  },
  {
    "path": "Tests/Core/MagicalRecord+ActionsTests.m",
    "content": "//\n//  Created by Tony Arnold on 25/03/2014.\n//  Copyright (c) 2014 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalRecordTestBase.h\"\n#import \"SingleEntityWithNoRelationships.h\"\n\n@interface MagicalRecordActionsTests : MagicalRecordTestBase\n\n@end\n\n@implementation MagicalRecordActionsTests\n\n#pragma mark - Synchronous Saves\n\n- (void)testSynchronousSaveActionSaves\n{\n    __block NSManagedObjectID *objectId;\n\n    [MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext) {\n        NSManagedObject *inserted = [SingleEntityWithNoRelationships MR_createEntityInContext:localContext];\n\n        XCTAssertTrue(inserted.hasChanges);\n\n        [localContext obtainPermanentIDsForObjects:@[inserted] error:nil];\n        objectId = [inserted objectID];\n    }];\n\n    XCTAssertNotNil(objectId);\n\n    XCTestExpectation *rootSavingExpectation = [self expectationWithDescription:@\"Root Saving Context Fetch Object\"];\n    NSManagedObjectContext *rootSavingContext = [NSManagedObjectContext MR_rootSavingContext];\n\n    [rootSavingContext performBlock:^{\n        NSError *fetchError;\n        NSManagedObject *fetchedObject = [rootSavingContext existingObjectWithID:objectId error:&fetchError];\n\n        XCTAssertNotNil(fetchedObject);\n        XCTAssertNil(fetchError);\n        XCTAssertFalse(fetchedObject.hasChanges);\n\n        [rootSavingExpectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0f handler:nil];\n}\n\n- (void)testSynchronousSaveActionMakesInsertedEntitiesAvailableInTheDefaultContext\n{\n    __block NSManagedObjectID *objectId;\n\n    [MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext) {\n        NSManagedObject *inserted = [SingleEntityWithNoRelationships MR_createEntityInContext:localContext];\n\n        XCTAssertTrue(inserted.hasChanges);\n\n        [localContext obtainPermanentIDsForObjects:@[inserted] error:nil];\n        objectId = [inserted objectID];\n    }];\n\n    XCTAssertNotNil(objectId);\n\n    XCTestExpectation *rootSavingExpectation = [self expectationWithDescription:@\"Root Saving Context Fetch Object\"];\n    NSManagedObjectContext *rootSavingContext = [NSManagedObjectContext MR_rootSavingContext];\n\n    [rootSavingContext performBlock:^{\n        NSError *fetchError;\n        NSManagedObject *fetchedObject = [rootSavingContext existingObjectWithID:objectId error:&fetchError];\n\n        XCTAssertNotNil(fetchedObject);\n        XCTAssertNil(fetchError);\n        XCTAssertFalse(fetchedObject.hasChanges);\n\n        [rootSavingExpectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0f handler:nil];\n}\n\n- (void)testSynchronousSaveActionMakesUpdatesToEntitiesAvailableToTheDefaultContext\n{\n    __block NSManagedObjectID *objectId;\n    __block NSManagedObject *fetchedObject;\n\n    NSString *const kTestAttributeKey = @\"booleanTestAttribute\";\n\n    [MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext) {\n        NSManagedObject *inserted = [SingleEntityWithNoRelationships MR_createEntityInContext:localContext];\n\n        [inserted setValue:@YES forKey:kTestAttributeKey];\n\n        XCTAssertTrue(inserted.hasChanges);\n\n        [localContext obtainPermanentIDsForObjects:@[inserted] error:nil];\n        objectId = [inserted objectID];\n    }];\n\n    XCTestExpectation *rootSavingExpectation = [self expectationWithDescription:@\"Root Saving Context Fetch Object\"];\n    NSManagedObjectContext *rootSavingContext = [NSManagedObjectContext MR_rootSavingContext];\n\n    [rootSavingContext performBlock:^{\n        fetchedObject = [rootSavingContext objectWithID:objectId];\n        XCTAssertTrue([fetchedObject valueForKey:kTestAttributeKey]);\n\n        [rootSavingExpectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0f handler:nil];\n\n    [MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext) {\n        NSManagedObject *changed = [localContext objectWithID:objectId];\n\n        [changed setValue:@NO forKey:kTestAttributeKey];\n    }];\n\n    rootSavingExpectation = [self expectationWithDescription:@\"Root Saving Context Fetch Object\"];\n\n    [rootSavingContext performBlock:^{\n        fetchedObject = [rootSavingContext objectWithID:objectId];\n\n        // Async since the merge to the main thread context after persistence\n        XCTAssertEqualObjects([fetchedObject valueForKey:kTestAttributeKey], @NO);\n\n        [rootSavingExpectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0f handler:nil];\n}\n\n#pragma mark - Asynchronous Saves\n\n- (void)testAsynchronousSaveActionSaves\n{\n    XCTestExpectation *expectation = [self expectationWithDescription:@\"Save Completed\"];\n\n    __block BOOL saveSuccessState = NO;\n    __block NSError *saveError;\n    __block NSManagedObjectID *objectId;\n\n    [MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {\n        NSManagedObject *inserted = [SingleEntityWithNoRelationships MR_createEntityInContext:localContext];\n\n        XCTAssertTrue(inserted.hasChanges);\n\n        XCTAssertTrue([localContext obtainPermanentIDsForObjects:@[inserted] error:nil]);\n        objectId = [inserted objectID];\n\n        XCTAssertNotNil(objectId);\n        XCTAssertFalse(objectId.isTemporaryID);\n    } completion:^(BOOL contextDidSave, NSError *error) {\n        saveSuccessState = contextDidSave;\n        saveError = error;\n\n        XCTAssertTrue(saveSuccessState);\n        XCTAssertNil(saveError);\n\n        NSManagedObjectContext *rootSavingContext = [NSManagedObjectContext MR_rootSavingContext];\n\n        [rootSavingContext performBlockAndWait:^{\n            NSError *existingObjectError;\n            NSManagedObject *existingObject = [rootSavingContext existingObjectWithID:objectId error:&existingObjectError];\n\n            XCTAssertNotNil(existingObject);\n            XCTAssertFalse(existingObject.hasChanges);\n            XCTAssertNil(existingObjectError);\n\n            [expectation fulfill];\n        }];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0f handler:nil];\n}\n\n- (void)testAsynchronousSaveActionCallsCompletionBlockOnTheMainThread\n{\n    XCTestExpectation *expectation = [self expectationWithDescription:@\"Save Completed\"];\n\n    [MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {\n        [SingleEntityWithNoRelationships MR_createEntityInContext:localContext];\n    } completion:^(BOOL contextDidSave, NSError *error) {\n        XCTAssertTrue(NSThread.isMainThread);\n\n        [expectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0f handler:nil];\n}\n\n- (void)testAsynchronousSaveActionMakesInsertedEntitiesAvailableInTheDefaultContext\n{\n    __block NSManagedObjectID *objectId;\n\n    XCTestExpectation *contextSavedExpectation = [self expectationWithDescription:@\"Context Did Save\"];\n\n    [MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {\n        NSManagedObject *inserted = [SingleEntityWithNoRelationships MR_createEntityInContext:localContext];\n\n        XCTAssertTrue(inserted.hasChanges);\n\n        [localContext obtainPermanentIDsForObjects:@[inserted] error:nil];\n        objectId = [inserted objectID];\n    } completion:^(BOOL contextDidSave, NSError *error) {\n        XCTAssertTrue(contextDidSave);\n\n        NSManagedObjectContext *rootSavingContext = [NSManagedObjectContext MR_rootSavingContext];\n\n        [rootSavingContext performBlock:^{\n            NSManagedObject *fetchedObject = [rootSavingContext objectWithID:objectId];\n            XCTAssertNotNil(fetchedObject);\n            XCTAssertFalse(fetchedObject.hasChanges);\n\n            [contextSavedExpectation fulfill];\n        }];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0f handler:nil];\n}\n\n- (void)testAsynchronousSaveActionMakesUpdatesToEntitiesAvailableToTheDefaultContext\n{\n    __block NSManagedObjectID *objectId;\n    __block NSManagedObject *fetchedObject;\n\n    NSString *const kTestAttributeKey = @\"booleanTestAttribute\";\n\n    [MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext) {\n        NSManagedObject *inserted = [SingleEntityWithNoRelationships MR_createEntityInContext:localContext];\n\n        [inserted setValue:@YES forKey:kTestAttributeKey];\n\n        XCTAssertTrue(inserted.hasChanges);\n\n        [localContext obtainPermanentIDsForObjects:@[inserted] error:nil];\n        objectId = [inserted objectID];\n    }];\n\n    NSManagedObjectContext *rootSavingContext = [NSManagedObjectContext MR_rootSavingContext];\n\n    [rootSavingContext performBlockAndWait:^{\n        fetchedObject = [[NSManagedObjectContext MR_rootSavingContext] objectWithID:objectId];\n        XCTAssertTrue([fetchedObject valueForKey:kTestAttributeKey]);\n    }];\n\n    XCTestExpectation *expectation = [self expectationWithDescription:@\"Wait for managed object context\"];\n\n    [MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {\n        NSManagedObject *changed = [localContext objectWithID:objectId];\n        \n        [changed setValue:@NO forKey:kTestAttributeKey];\n    } completion:^(BOOL contextDidSave, NSError *error) {\n        [rootSavingContext performBlock:^{\n            fetchedObject = [rootSavingContext objectWithID:objectId];\n            XCTAssertNotNil(fetchedObject);\n            XCTAssertEqualObjects([fetchedObject valueForKey:kTestAttributeKey], @NO);\n\n            [expectation fulfill];\n        }];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0 handler:^(NSError * _Nullable error) {\n        MRLogError(@\"Managed Object Context performBlock: timed out due to error: %@\", [error localizedDescription]);\n    }];\n\n}\n\n@end\n"
  },
  {
    "path": "Tests/Core/MagicalRecord+ShorthandTests.m",
    "content": "//\n//  Created by Tony Arnold on 28/01/2016.\n//  Copyright © 2016 Magical Panda Software LLC. All rights reserved.\n\n#import \"MagicalRecordTestBase.h\"\n#import \"NSManagedObject+MagicalRecord.h\"\n#import \"MagicalRecord+ShorthandMethods.h\"\n#import \"MagicalRecordShorthandMethodAliases.h\"\n\n@interface MagicalRecordShorthandTests : MagicalRecordTestBase\n\n@end\n\n@implementation MagicalRecordShorthandTests\n\n- (void)setUp\n{\n    [super setUp];\n    [MagicalRecord enableShorthandMethods];\n}\n\n- (void)testLongFormMethodsAreStillAvailableWhenShorthandIsEnabled\n{\n    XCTAssertTrue([[NSManagedObjectContext class] respondsToSelector:@selector(MR_rootSavingContext)]);\n    XCTAssertTrue([[NSManagedObjectContext MR_rootSavingContext] respondsToSelector:@selector(MR_saveWithBlock:)]);\n}\n\n- (void)testShorthandMethodsAreAvailableWhenEnabled\n{\n    XCTAssertTrue([[NSManagedObjectContext class] respondsToSelector:@selector(rootSavingContext)]);\n    XCTAssertNotNil([NSManagedObjectContext rootSavingContext]);\n    XCTAssertTrue([[NSManagedObjectContext rootSavingContext] respondsToSelector:@selector(saveWithBlock:)]);\n}\n\n@end\n"
  },
  {
    "path": "Tests/Core/MagicalRecord+StackTests.m",
    "content": "//\n//  Created by Saul Mora on 7/15/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <XCTest/XCTest.h>\n#import <CoreData/CoreData.h>\n\n#import <MagicalRecord/MagicalRecord.h>\n#import \"MagicalRecordTestHelpers.h\"\n\n@interface MagicalRecordTests : XCTestCase\n\n@end\n\n\n@protocol MagicalRecordErrorHandlerProtocol <NSObject>\n\n- (void) testHandlingError:(NSError *)error;\n\n@end\n\n@implementation MagicalRecordTests\n{\n    BOOL errorHandlerWasCalled_;\n}\n\n- (void) assertDefaultStack\n{\n    XCTAssertNotNil([NSManagedObjectContext MR_defaultContext], @\"Default context cannot be nil\");\n    XCTAssertNotNil([NSManagedObjectModel MR_defaultManagedObjectModel], @\"Default managed object model cannot be nil\");\n    XCTAssertNotNil([NSPersistentStoreCoordinator MR_defaultStoreCoordinator], @\"Default store coordinator cannot be nil\");\n    XCTAssertNotNil([NSPersistentStore MR_defaultPersistentStore], @\"Default persistent store cannot be nil\");\n}\n\n- (void) testCreateDefaultCoreDataStack\n{\n    [MagicalRecord setupCoreDataStack];\n    \n    [self assertDefaultStack];\n    \n    NSPersistentStore *defaultStore = [NSPersistentStore MR_defaultPersistentStore];\n    NSURL *defaultStoreURL = defaultStore.URL;\n\n    XCTAssertTrue([[defaultStoreURL absoluteString] hasSuffix:@\".sqlite\"], @\"Default store URL must have an extension of 'sqlite'\");\n    XCTAssertEqual([defaultStore type], NSSQLiteStoreType, @\"Default store should be of type NSSQLiteStoreType\");\n\n    [MagicalRecord cleanUp];\n    [MagicalRecordTestHelpers removeStoreFilesForStoreAtURL:defaultStoreURL];\n}\n\n- (void) testCreateInMemoryCoreDataStack\n{\n    [MagicalRecord setupCoreDataStackWithInMemoryStore];\n    \n    [self assertDefaultStack];\n    \n    NSPersistentStore *defaultStore = [NSPersistentStore MR_defaultPersistentStore];\n    XCTAssertEqual([defaultStore type], NSInMemoryStoreType, @\"Default store should be of type NSInMemoryStoreType\");\n\n    [MagicalRecord cleanUp];\n}\n\n- (void) testCreateSqliteStackWithCustomName\n{\n    NSString *testStoreName = @\"MyTestDataStore.sqlite\";\n    NSURL *testStoreURL = [NSPersistentStore MR_urlForStoreName:testStoreName];\n\n    [MagicalRecord setupCoreDataStackWithStoreNamed:testStoreName];\n    \n    [self assertDefaultStack];\n    \n    NSPersistentStore *defaultStore = [NSPersistentStore MR_defaultPersistentStore];\n    XCTAssertEqual([defaultStore type], NSSQLiteStoreType, @\"Default store should be of type NSSQLiteStoreType\");\n    XCTAssertEqualObjects(defaultStore.URL, testStoreURL, @\"Default store should have the same URL as the one that was passed to it\");\n    XCTAssertTrue([[[defaultStore URL] absoluteString] hasSuffix:testStoreName], @\"Default store URL expects to have a suffix of '%@'\", testStoreName);\n\n    [MagicalRecord cleanUp];\n    [MagicalRecordTestHelpers removeStoreFilesForStoreAtURL:testStoreURL];\n}\n\n- (void) customErrorHandler:(id)error\n{\n}\n\n- (void) testCanSetAUserSpecifiedErrorHandler\n{\n    [MagicalRecord setErrorHandlerTarget:self action:@selector(customErrorHandler:)];\n\n    XCTAssertEqualObjects([MagicalRecord errorHandlerTarget], self, @\"Error handler should be self\");\n    XCTAssertEqualObjects(NSStringFromSelector([MagicalRecord errorHandlerAction]), NSStringFromSelector(@selector(customErrorHandler:)), @\"Error handler action expected to be `customErrorHandler:`\");\n}\n\n- (void) magicalRecordErrorHandlerTest:(NSError *)error\n{\n    XCTAssertNotNil(error, @\"Expected a non-nil error object\");\n    XCTAssertEqualObjects([error domain], @\"MRTests\", @\"Expected an error domain of 'MRTests'\");\n    XCTAssertEqual([error code], (NSInteger)1000, @\"Expected an error code of '1000'\");\n    errorHandlerWasCalled_ = YES;\n}\n\n- (void) testUserSpecifiedErrorHandlersAreTriggeredOnError\n{\n    errorHandlerWasCalled_ = NO;\n    [MagicalRecord setErrorHandlerTarget:self action:@selector(magicalRecordErrorHandlerTest:)];\n    \n    NSError *testError = [NSError errorWithDomain:@\"MRTests\" code:1000 userInfo:nil];\n    [MagicalRecord handleErrors:testError];\n\n    XCTAssertTrue(errorHandlerWasCalled_, @\"Expected error handler to have been called\");\n}\n\n@end\n"
  },
  {
    "path": "Tests/Core/MagicalRecordTestBase.h",
    "content": "//\n//  Created by Tony Arnold on 21/12/2013.\n//  Copyright (c) 2013 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <XCTest/XCTest.h>\n#import <CoreData/CoreData.h>\n#import <MagicalRecord/MagicalRecord.h>\n\n@interface MagicalRecordTestBase : XCTestCase\n\n@end\n"
  },
  {
    "path": "Tests/Core/MagicalRecordTestBase.m",
    "content": "//\n//  Created by Tony Arnold on 21/12/2013.\n//  Copyright (c) 2013 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalRecordTestBase.h\"\n#import \"MagicalRecordLogging.h\"\n\n@implementation MagicalRecordTestBase\n\n- (void)setUp\n{\n    [super setUp];\n\n    // Don't pollute the tests with logging\n    [MagicalRecord setLoggingLevel:MagicalRecordLoggingLevelOff];\n\n    // Setup the default model from the current class' bundle\n    [MagicalRecord setDefaultModelFromClass:[self class]];\n\n    // Setup a default in-memory store\n    [MagicalRecord setupCoreDataStackWithInMemoryStore];\n}\n\n- (void)tearDown\n{\n    [MagicalRecord cleanUp];\n\n    [super tearDown];\n}\n\n@end\n"
  },
  {
    "path": "Tests/Core/NSManagedObject+MagicalRecordTests.m",
    "content": "//\n//  Created by Tony Arnold on 11/04/2014.\n//  Copyright (c) 2014 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalRecordTestBase.h\"\n#import \"NSManagedObject+MagicalRecord.h\"\n\n#import \"DifferentClassNameMapping.h\"\n#import \"EntityWithoutEntityNameMethod.h\"\n\n@interface NSManagedObjectMagicalRecord : MagicalRecordTestBase\n\n@end\n\n@implementation NSManagedObjectMagicalRecord\n\n// +[NSManagedObject(_PFDynamicAccessorsAndPropertySupport) entityName] was subsequently added in iOS 10 and macOS 10.12\n// so this expectation has become obsolete\n/*\n- (void)testThatInternalEntityNameReturnsClassNameWhenEntityNameMethodIsNotImplemented\n{\n    XCTAssertNotNil([EntityWithoutEntityNameMethod MR_entityName]);\n    XCTAssertEqualObjects([EntityWithoutEntityNameMethod MR_entityName], NSStringFromClass([EntityWithoutEntityNameMethod class]));\n}\n*/\n\n- (void)testThatInternalEntityNameReturnsProvidedNameWhenEntityNameMethodIsImplemented\n{\n    XCTAssertNotNil([EntityWithoutEntityNameMethod MR_entityName]);\n    XCTAssertNotEqualObjects([DifferentClassNameMapping MR_entityName], NSStringFromClass([DifferentClassNameMapping class]));\n    XCTAssertEqualObjects([DifferentClassNameMapping MR_entityName], [DifferentClassNameMapping entityName]);\n}\n\n@end\n"
  },
  {
    "path": "Tests/Core/NSManagedObject+MagicalRequestTests.m",
    "content": "//\n//  NSManagedObject+MagicalRequestTests.m\n//  MagicalRecord\n//\n//  Created by Sam Dean on 30/07/2016.\n//  Copyright © 2016 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalRecordTestBase.h\"\n\n#import \"NSManagedObject+MagicalRequests.h\"\n\n@interface NSManagedObject_MagicalRequestTests : MagicalRecordTestBase\n\n@end\n\n@implementation NSManagedObject_MagicalRequestTests\n\n- (void)testThatAscendingParameterIsHonouredForMultipleKeys {\n    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];\n\n    NSPredicate *predicate = [NSPredicate predicateWithValue:YES];\n\n    // Deliberately expect the default ascending value (YES) to be used for key3\n    // (not the carried over NO from key2)\n    NSFetchRequest *request = [NSManagedObject MR_requestAllSortedBy:@\"key1:YES,key2:NO,key3\"\n                                                           ascending:YES\n                                                       withPredicate:predicate\n                                                           inContext:context];\n\n    XCTAssertEqual(request.sortDescriptors[0].ascending, YES);\n    XCTAssertEqual(request.sortDescriptors[1].ascending, NO);\n    XCTAssertEqual(request.sortDescriptors[2].ascending, YES);\n\n    XCTAssertEqualObjects(request.sortDescriptors[0].key, @\"key1\");\n    XCTAssertEqualObjects(request.sortDescriptors[1].key, @\"key2\");\n    XCTAssertEqualObjects(request.sortDescriptors[2].key, @\"key3\");\n}\n\n@end\n"
  },
  {
    "path": "Tests/Core/NSManagedObjectContext+ChainSaveTests.m",
    "content": "//\n//  NSManagedObjectContext+ChainSaveTests.m\n//  MagicalRecord\n//\n//  Created by Lee on 12/1/14.\n//  Copyright (c) 2014 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalRecordTestBase.h\"\n#import \"NSManagedObjectContext+MagicalChainSave.h\"\n#import \"SingleEntityWithNoRelationships.h\"\n\n@interface NSManagedObjectContext_ChainSaveTests : MagicalRecordTestBase\n\n@end\n\n@implementation NSManagedObjectContext_ChainSaveTests\n\n- (void)testChainSave\n{\n    XCTestExpectation *expectation = [self expectationWithDescription:@\"Chain Save Completed\"];\n    \n    //Test if a new Object can save from child context to parent context\n    __block NSManagedObjectID *childObjectID;\n\n    NSManagedObjectContext *defaultContext = [NSManagedObjectContext MR_defaultContext];\n\n    [defaultContext MR_saveWithBlock:^(NSManagedObjectContext *localContext) {\n        SingleEntityWithNoRelationships *insertedObject = [SingleEntityWithNoRelationships MR_createEntityInContext:localContext];\n\n        XCTAssertTrue(insertedObject.hasChanges);\n\n        NSError *obtainIDsError;\n        BOOL obtainIDsResult = [localContext obtainPermanentIDsForObjects:@[ insertedObject ] error:&obtainIDsError];\n\n        XCTAssertTrue(obtainIDsResult);\n        XCTAssertNil(obtainIDsError);\n\n        childObjectID = [insertedObject objectID];\n\n        XCTAssertNotNil(childObjectID);\n        XCTAssertFalse(childObjectID.isTemporaryID);\n\n    } completion:^(BOOL success, NSError *error) {\n\n        //test parent and root saving context\n        SingleEntityWithNoRelationships *parentObject = (SingleEntityWithNoRelationships *)[defaultContext objectWithID:childObjectID];\n\n        XCTAssertNotNil(parentObject);\n\n        NSManagedObjectContext *rootSavingContext = [NSManagedObjectContext MR_rootSavingContext];\n\n        [rootSavingContext performBlockAndWait:^{\n            SingleEntityWithNoRelationships *rootObject = (SingleEntityWithNoRelationships *)[rootSavingContext objectWithID:childObjectID];\n            \n            XCTAssertNotNil(rootObject);\n        }];\n\n        [expectation fulfill];\n    }];\n    \n    [self waitForExpectationsWithTimeout:5.0f handler:nil];\n}\n\n@end\n"
  },
  {
    "path": "Tests/Core/NSManagedObjectContext+MagicalSavesTests.m",
    "content": "//\n//  Created by Tony Arnold on 25/03/2014.\n//  Copyright (c) 2014 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalRecordTestBase.h\"\n#import \"SingleEntityWithNoRelationships.h\"\n\n@interface NSManagedObjectContextMagicalSavesTests : MagicalRecordTestBase\n\n@end\n\n@implementation NSManagedObjectContextMagicalSavesTests\n\n- (void)testSaveToSelfOnlyWhenSaveIsSynchronous\n{\n    NSManagedObjectContext *parentContext = [NSManagedObjectContext MR_defaultContext];\n    NSManagedObjectContext *childContext = [NSManagedObjectContext MR_contextWithParent:parentContext];\n\n    XCTestExpectation *childContextSavedExpectation = [self expectationWithDescription:@\"Child Context Did Save\"];\n\n    __block NSManagedObjectID *insertedObjectID;\n    __block SingleEntityWithNoRelationships *insertedObject;\n\n    [childContext performBlockAndWait:^{\n        insertedObject = [SingleEntityWithNoRelationships MR_createEntityInContext:childContext];\n\n        XCTAssertTrue(insertedObject.hasChanges);\n\n        NSError *obtainIDsError;\n        BOOL obtainIDsResult = [childContext obtainPermanentIDsForObjects:@[insertedObject] error:&obtainIDsError];\n\n        XCTAssertTrue(obtainIDsResult);\n        XCTAssertNil(obtainIDsError);\n\n        insertedObjectID = [insertedObject objectID];\n\n        XCTAssertNotNil(insertedObjectID);\n        XCTAssertFalse(insertedObjectID.isTemporaryID);\n        \n        [childContext MR_saveOnlySelfAndWait];\n\n        [childContextSavedExpectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0f handler:nil];\n\n    XCTestExpectation *parentContextSavedExpectation = [self expectationWithDescription:@\"Parent Context Did Save\"];\n    childContextSavedExpectation = [self expectationWithDescription:@\"Child Context Did Save\"];\n\n    [parentContext performBlockAndWait:^{\n        NSManagedObject *parentContextFetchedObject = [parentContext objectRegisteredForID:insertedObjectID];\n\n        // Saving a child context moves the saved changes up to the parent, but does\n        //  not save them, leaving the parent context with changes\n        XCTAssertNotNil(parentContextFetchedObject);\n        XCTAssertTrue(parentContextFetchedObject.hasChanges);\n\n        [childContext performBlockAndWait:^{\n            NSManagedObject *childContextFetchedObject = [childContext objectRegisteredForID:insertedObjectID];\n\n            // The child context should not have changes after the save\n            XCTAssertNotNil(childContextFetchedObject);\n            XCTAssertFalse(childContextFetchedObject.hasChanges);\n\n            [childContextSavedExpectation fulfill];\n        }];\n\n        [parentContextSavedExpectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0f handler:nil];\n}\n\n- (void)testSaveToSelfOnlyWhenSaveIsAsynchronous\n{\n    NSManagedObjectContext *parentContext = [NSManagedObjectContext MR_defaultContext];\n    NSManagedObjectContext *childContext = [NSManagedObjectContext MR_contextWithParent:parentContext];\n\n    XCTestExpectation *childContextExpectation = [self expectationWithDescription:@\"Child Context Completed Work\"];\n    XCTestExpectation *childContextSaveExpectation = [self expectationWithDescription:@\"Child Context Saved\"];\n    XCTestExpectation *parentContextExpectation = [self expectationWithDescription:@\"Parent Context Completed Work\"];\n\n    [childContext performBlock:^{\n        SingleEntityWithNoRelationships *insertedObject = [SingleEntityWithNoRelationships MR_createEntityInContext:childContext];\n\n        XCTAssertTrue(insertedObject.hasChanges);\n\n        NSError *obtainIDsError;\n        BOOL obtainIDsResult = [childContext obtainPermanentIDsForObjects:@[insertedObject] error:&obtainIDsError];\n\n        XCTAssertTrue(obtainIDsResult);\n        XCTAssertNil(obtainIDsError);\n\n        NSManagedObjectID *insertedObjectID = [insertedObject objectID];\n\n        XCTAssertNotNil(insertedObjectID);\n        XCTAssertFalse(insertedObjectID.isTemporaryID);\n\n        [childContext MR_saveOnlySelfWithCompletion:^(BOOL contextDidSave, NSError *error) {\n            XCTAssertTrue(contextDidSave);\n            XCTAssertNil(error);\n\n            [childContext performBlock:^{\n                // The child context should not have changes after the save\n                XCTAssertFalse(childContext.hasChanges);\n\n                [childContextSaveExpectation fulfill];\n            }];\n\n            [parentContext performBlock:^{\n                NSManagedObject *parentContextFetchedObject = [parentContext objectRegisteredForID:insertedObjectID];\n\n                // Saving a child context moves the saved changes up to the parent, but does\n                //  not save them, leaving the parent context with changes\n                XCTAssertNotNil(parentContextFetchedObject);\n                XCTAssertTrue(parentContextFetchedObject.hasChanges);\n\n                [parentContextExpectation fulfill];\n            }];\n        }];\n\n        [childContextExpectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0f handler:nil];\n}\n\n- (void)testSaveToSelfOnlyWhenSaveIsAsynchronousCallsMainThreadOnCompletion\n{\n    NSManagedObjectContext *defaultContext = [NSManagedObjectContext MR_defaultContext];\n    NSManagedObject *inserted = [SingleEntityWithNoRelationships MR_createEntityInContext:defaultContext];\n\n    XCTAssertTrue(inserted.hasChanges);\n\n    XCTestExpectation *contextSavedExpectation = [self expectationWithDescription:@\"Context Did Save\"];\n\n    [defaultContext MR_saveOnlySelfWithCompletion:^(BOOL contextDidSave, NSError *error) {\n        XCTAssertTrue(NSThread.isMainThread);\n\n        [contextSavedExpectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0f handler:nil];\n}\n\n- (void)testSaveToPersistentStoreWhenSaveIsSynchronous\n{\n    NSManagedObjectContext *parentContext = [NSManagedObjectContext MR_defaultContext];\n    NSManagedObjectContext *childContext = [NSManagedObjectContext MR_contextWithParent:parentContext];\n\n    __block NSManagedObjectID *insertedObjectID;\n    __block SingleEntityWithNoRelationships *insertedObject;\n\n    [childContext performBlockAndWait:^{\n        insertedObject = [SingleEntityWithNoRelationships MR_createEntityInContext:childContext];\n\n        XCTAssertTrue(insertedObject.hasChanges);\n\n        NSError *obtainIDsError;\n        BOOL obtainIDsResult = [childContext obtainPermanentIDsForObjects:@[insertedObject] error:&obtainIDsError];\n\n        XCTAssertTrue(obtainIDsResult);\n        XCTAssertNil(obtainIDsError);\n\n        insertedObjectID = [insertedObject objectID];\n\n        XCTAssertNotNil(insertedObjectID);\n        XCTAssertFalse(insertedObjectID.isTemporaryID);\n    }];\n\n    [childContext MR_saveToPersistentStoreAndWait];\n\n    [parentContext performBlockAndWait:^{\n        NSError *fetchExistingObjectFromParentContextError;\n        NSManagedObject *parentContextFetchedObject = [parentContext existingObjectWithID:insertedObjectID error:&fetchExistingObjectFromParentContextError];\n\n        // Saving to the persistent store should save to all parent contexts,\n        //  leaving no changes\n        XCTAssertNil(fetchExistingObjectFromParentContextError);\n        XCTAssertNotNil(parentContextFetchedObject);\n        XCTAssertFalse(parentContextFetchedObject.hasChanges);\n    }];\n\n    [childContext performBlockAndWait:^{\n        NSManagedObject *childContextFetchedObject = [childContext objectRegisteredForID:insertedObjectID];\n\n        // The child context should not have changes after the save\n        XCTAssertNotNil(childContextFetchedObject);\n        XCTAssertFalse(childContextFetchedObject.hasChanges);\n    }];\n}\n\n- (void)testSaveToPersistentStoreWhenSaveIsAsynchronous\n{\n    NSManagedObjectContext *parentContext = [NSManagedObjectContext MR_defaultContext];\n    NSManagedObjectContext *childContext = [NSManagedObjectContext MR_contextWithParent:parentContext];\n\n    XCTestExpectation *childContextExpectation = [self expectationWithDescription:@\"Child Context Completed Work\"];\n    XCTestExpectation *childContextSavedExpectation = [self expectationWithDescription:@\"Child Context Saved\"];\n\n    [childContext performBlock:^{\n        SingleEntityWithNoRelationships *insertedObject = [SingleEntityWithNoRelationships MR_createEntityInContext:childContext];\n\n        XCTAssertTrue(insertedObject.hasChanges);\n\n        NSError *obtainIDsError;\n        BOOL obtainIDsResult = [childContext obtainPermanentIDsForObjects:@[insertedObject] error:&obtainIDsError];\n\n        XCTAssertTrue(obtainIDsResult);\n        XCTAssertNil(obtainIDsError);\n\n        NSManagedObjectID *insertedObjectID = [insertedObject objectID];\n\n        XCTAssertNotNil(insertedObjectID);\n        XCTAssertFalse(insertedObjectID.isTemporaryID);\n\n        [childContext MR_saveToPersistentStoreWithCompletion:^(BOOL contextDidSave, NSError *error) {\n            XCTAssertTrue(contextDidSave);\n            XCTAssertNil(error);\n\n            [parentContext performBlockAndWait:^{\n                NSError *fetchExistingObjectFromParentContextError;\n                NSManagedObject *parentContextFetchedObject = [parentContext existingObjectWithID:insertedObjectID error:&fetchExistingObjectFromParentContextError];\n\n                // Saving to the persistent store should save to all parent contexts,\n                //  leaving no changes\n                XCTAssertNil(fetchExistingObjectFromParentContextError);\n                XCTAssertNotNil(parentContextFetchedObject);\n                XCTAssertFalse(parentContextFetchedObject.hasChanges);\n            }];\n\n            [childContext performBlockAndWait:^{\n                // The child context should not have changes after the save\n                XCTAssertFalse(childContext.hasChanges);\n            }];\n\n            [childContextSavedExpectation fulfill];\n        }];\n\n        [childContextExpectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0f handler:nil];\n}\n\n- (void)testThatSavedObjectsHavePermanentIDs\n{\n    NSManagedObjectContext *defaultContext = [NSManagedObjectContext MR_defaultContext];\n\n    [defaultContext performBlockAndWait:^{\n        SingleEntityWithNoRelationships *entity = [SingleEntityWithNoRelationships MR_createEntityInContext:defaultContext];\n\n        XCTAssertTrue([entity objectID].isTemporaryID);\n\n        [defaultContext MR_saveOnlySelfAndWait];\n\n        XCTAssertFalse([entity objectID].isTemporaryID);\n    }];\n}\n\n@end\n"
  },
  {
    "path": "Tests/Core/NSManagedObjectContextHelperTests.m",
    "content": "//\n//  NSManagedObjectContextHelperTests.m\n//  Magical Record\n//\n//  Created by Saul Mora on 7/15/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalRecordTestBase.h\"\n#import \"SingleEntityWithNoRelationships.h\"\n\n@interface NSManagedObjectContextHelperTests : MagicalRecordTestBase\n\n@end\n\n\n@implementation NSManagedObjectContextHelperTests\n\n- (void) testCanCreateContextForCurrentThread\n{\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n    NSManagedObjectContext *firstContext = [NSManagedObjectContext MR_contextForCurrentThread];\n    NSManagedObjectContext *secondContext = [NSManagedObjectContext MR_contextForCurrentThread];\n#pragma clang diagnostic pop\n\n    XCTAssertEqualObjects(firstContext, secondContext, @\"Contexts should be equal\");\n}\n\n- (void) testCanNotifyDefaultContextOnSave\n{\n    NSManagedObjectContext *testContext = [NSManagedObjectContext MR_contextWithParent:[NSManagedObjectContext MR_defaultContext]];\n\n    XCTAssertEqualObjects([testContext parentContext], [NSManagedObjectContext MR_defaultContext], @\"Parent context should be the default context\");\n}\n\n- (void) testThatSavedObjectsHavePermanentIDs\n{\n    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];\n    SingleEntityWithNoRelationships *entity = [SingleEntityWithNoRelationships MR_createEntityInContext:context];\n\n    XCTAssertTrue([[entity objectID] isTemporaryID], @\"Entity should have a temporary ID before saving\");\n    [context MR_saveOnlySelfAndWait];\n    XCTAssertFalse([[entity objectID] isTemporaryID], @\"Entity should not have a temporary ID after saving\");\n}\n\n\n@end\n"
  },
  {
    "path": "Tests/Core/NSManagedObjectHelperTests.m",
    "content": "//\n//  NSManagedObjectHelperTests.m\n//  Magical Record\n//\n//  Created by Saul Mora on 7/15/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalRecordTestBase.h\"\n#import \"SingleRelatedEntity.h\"\n\n@interface NSManagedObjectHelperTests : MagicalRecordTestBase\n\n@end\n\n@implementation NSManagedObjectHelperTests\n\n- (void)testCreateFetchRequestForEntity\n{\n    NSFetchRequest *testRequest = [SingleRelatedEntity MR_requestAllInContext:[NSManagedObjectContext MR_defaultContext]];\n\n    XCTAssertEqualObjects([[testRequest entity] name], NSStringFromClass([SingleRelatedEntity class]), @\"Entity name should be the string representation of the entity's class\");\n}\n\n- (void)testCanRequestFirstEntityWithPredicate\n{\n    NSPredicate *testPredicate = [NSPredicate predicateWithFormat:@\"mappedStringAttribute = 'Test Predicate'\"];\n    NSFetchRequest *testRequest = [SingleRelatedEntity MR_requestFirstWithPredicate:testPredicate inContext:[NSManagedObjectContext MR_defaultContext]];\n\n    XCTAssertEqual([testRequest fetchLimit], (NSUInteger)1, @\"Fetch limit should be 1, got: %tu\", [testRequest fetchLimit]);\n    XCTAssertEqualObjects([testRequest predicate], testPredicate, @\"Predicate objects should be equal\");\n}\n\n- (void)testCreateRequestForFirstEntity\n{\n    NSFetchRequest *testRequest = [SingleRelatedEntity MR_requestFirstByAttribute:@\"mappedStringAttribute\" withValue:nil inContext:[NSManagedObjectContext MR_defaultContext]];\n\n    XCTAssertEqualObjects([[testRequest entity] name], NSStringFromClass([SingleRelatedEntity class]), @\"Entity name should be the string representation of the entity's class\");\n    XCTAssertEqual([testRequest fetchLimit], (NSUInteger)1, @\"Fetch limit should be 1, got: %tu\", [testRequest fetchLimit]);\n    XCTAssertEqual([testRequest fetchOffset], (NSUInteger)0, @\"Fetch offset should be 0, got: %tu\", [testRequest fetchOffset]);\n    XCTAssertEqualObjects([testRequest predicate], [NSPredicate predicateWithFormat:@\"mappedStringAttribute = nil\"], @\"Predicate objects should be equal\");\n}\n\n- (void)testCanGetEntityDescriptionFromEntityClass\n{\n    NSEntityDescription *testDescription = [SingleRelatedEntity MR_entityDescriptionInContext:[NSManagedObjectContext MR_defaultContext]];\n\n    XCTAssertNotNil(testDescription, @\"Entity description should not be nil\");\n}\n\n- (void)testCanCreateEntityInstance\n{\n    [[NSManagedObjectContext MR_defaultContext] performBlockAndWait:^{\n        id testEntity = [SingleRelatedEntity MR_createEntityInContext:[NSManagedObjectContext MR_defaultContext]];\n\n        XCTAssertNotNil(testEntity, @\"Entity should not be nil\");\n    }];\n}\n\n- (void)testCanDeleteEntityInstance\n{\n    [[NSManagedObjectContext MR_defaultContext] performBlockAndWait:^{\n        id testEntity = [SingleRelatedEntity MR_createEntityInContext:[NSManagedObjectContext MR_defaultContext]];\n\n        [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];\n\n        XCTAssertFalse([testEntity isDeleted], @\"Entity should not return true for isDeleted before MR_deleteEntity is sent\");\n\n        [testEntity MR_deleteEntity];\n\n        XCTAssertNotNil(testEntity, @\"Entity should not be nil after calling MR_deleteEntity\");\n        XCTAssertTrue([testEntity isDeleted], @\"Entity should return true for isDeleted before MR_deleteEntity is sent\");\n    }];\n}\n\n- (void)testCanSearchForNumberOfAllEntities\n{\n    NSInteger numberOfTestEntitiesToCreate = 20;\n\n    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];\n\n    [context performBlockAndWait:^{\n        [self p_createSampleData:numberOfTestEntitiesToCreate inContext:context];\n        \n        NSNumber *entityCount = [SingleRelatedEntity MR_numberOfEntitiesWithContext:context];\n        XCTAssertEqualObjects(entityCount, @(numberOfTestEntitiesToCreate), @\"Expected numberOfEntities to be %zd, got %@\", numberOfTestEntitiesToCreate, entityCount);\n    }];\n}\n\n- (void)testCanSearchForNumberOfEntitiesWithPredicate\n{\n    NSInteger numberOfTestEntitiesToCreate = 20;\n\n    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];\n\n    [context performBlockAndWait:^{\n        [self p_createSampleData:numberOfTestEntitiesToCreate inContext:context];\n\n        NSPredicate *searchFilter = [NSPredicate predicateWithFormat:@\"mappedStringAttribute = '1'\"];\n        NSNumber *entityCount = [SingleRelatedEntity MR_numberOfEntitiesWithPredicate:searchFilter inContext:context];\n        XCTAssertEqualObjects(entityCount, @5, @\"Should return a count of 5, got %@\", entityCount);\n    }];\n}\n\n- (void)testRetrieveInstanceOfManagedObjectFromAnotherContextHasAPermanentObjectID\n{\n    NSManagedObjectContext *defaultContext = [NSManagedObjectContext MR_defaultContext];\n    __block NSManagedObject *insertedEntity;\n\n    [defaultContext performBlockAndWait:^{\n        insertedEntity = [SingleRelatedEntity MR_createEntityInContext:defaultContext];\n\n        XCTAssertTrue(insertedEntity.objectID.isTemporaryID, @\"Object ID should be temporary until saved\");\n\n        [defaultContext MR_saveToPersistentStoreAndWait];\n\n        XCTAssertFalse(insertedEntity.objectID.isTemporaryID, @\"Object ID should be permanent after save\");\n    }];\n\n    [MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext) {\n        NSManagedObject *localEntity = [insertedEntity MR_inContext:localContext];\n        XCTAssertNotNil(localEntity, @\"Object should not be nil\");\n        XCTAssertFalse([[localEntity objectID] isTemporaryID], @\"Object ID should not be temporary after save\");\n    }];\n}\n\n- (void)testCanDeleteEntityInstanceInOtherContext\n{\n    NSManagedObjectContext *defaultContext = [NSManagedObjectContext MR_defaultContext];\n\n    [defaultContext performBlockAndWait:^{\n        NSManagedObject *testEntity = [SingleRelatedEntity MR_createEntityInContext:defaultContext];\n\n        [defaultContext MR_saveToPersistentStoreAndWait];\n\n        XCTAssertFalse([testEntity isDeleted], @\"Entity should not be deleted at this point\");\n\n        [MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext) {\n            NSManagedObject *otherEntity = [testEntity MR_inContext:localContext];\n\n            XCTAssertNotNil(otherEntity, @\"Entity should not be nil\");\n            XCTAssertFalse([otherEntity isDeleted], @\"Entity should not be deleted at this point\");\n\n            // Delete the object in the other context\n            [testEntity MR_deleteEntityInContext:localContext];\n            [localContext processPendingChanges];\n\n            // The nested context entity should now be deleted\n            XCTAssertTrue([localContext.deletedObjects containsObject:otherEntity], @\"Entity should be listed as being deleted in the context\");\n            XCTAssertTrue([otherEntity isDeleted], @\"Entity should now be deleted\");\n        }];\n    }];\n}\n\n#pragma mark - Private Methods\n\n- (void)p_createSampleData:(NSInteger)numberOfTestEntitiesToCreate inContext:(NSManagedObjectContext *)context\n{\n    [context performBlockAndWait:^{\n        for (int i = 0; i < numberOfTestEntitiesToCreate; i++)\n        {\n            SingleRelatedEntity *testEntity = [SingleRelatedEntity MR_createEntityInContext:context];\n            testEntity.mappedStringAttribute = [NSString stringWithFormat:@\"%d\", i / 5];\n        }\n\n        [context MR_saveOnlySelfAndWait];\n    }];\n}\n\n@end\n"
  },
  {
    "path": "Tests/Core/NSPersistentStoreCoordinatorHelperTests.m",
    "content": "//\n//  NSPersistentStoreCoordinatorHelperTests.m\n//  Magical Record\n//\n//  Created by Saul Mora on 7/15/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <XCTest/XCTest.h>\n#import <MagicalRecord/MagicalRecord.h>\n#import \"MagicalRecordTestHelpers.h\"\n\n@interface NSPersistentStoreCoordinatorHelperTests : XCTestCase\n\n@end\n\n@implementation NSPersistentStoreCoordinatorHelperTests\n\n- (void) setUp\n{\n    [super setUp];\n\n    NSURL *testStoreURL = [NSPersistentStore MR_urlForStoreName:@\"TestStore.sqlite\"];\n    [MagicalRecordTestHelpers removeStoreFilesForStoreAtURL:testStoreURL];\n}\n\n- (void) tearDown\n{\n    [super tearDown];\n\n    NSURL *testStoreURL = [NSPersistentStore MR_urlForStoreName:@\"TestStore.sqlite\"];\n    [MagicalRecordTestHelpers removeStoreFilesForStoreAtURL:testStoreURL];\n}\n\n- (void) testCreateCoordinatorWithSqlitePersistentStoreNamed\n{\n    NSPersistentStoreCoordinator *testCoordinator = [NSPersistentStoreCoordinator MR_coordinatorWithSqliteStoreNamed:@\"TestStore.sqlite\"];\n\n    NSUInteger persistentStoreCount = [[testCoordinator persistentStores] count];\n    XCTAssertEqual(persistentStoreCount, (NSUInteger)1, @\"Expected there to be 1 persistent store, sadly there are %tu\", persistentStoreCount);\n\n    NSPersistentStore *store = [[testCoordinator persistentStores] firstObject];\n    NSString *storeType = [store type];\n    XCTAssertEqualObjects(storeType, NSSQLiteStoreType, @\"Store type should be NSSQLiteStoreType, instead is %@\", storeType);\n}\n\n- (void) testCreateCoordinatorWithSqlitePersistentStoreAtURL\n{\n    NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];\n    path = [path stringByAppendingPathComponent:@\"TestStore.sqlite\"];\n    \n    NSPersistentStoreCoordinator *testCoordinator = [NSPersistentStoreCoordinator MR_coordinatorWithSqliteStoreAtURL:[NSURL fileURLWithPath:path]];\n    \n    NSUInteger persistentStoreCount = [[testCoordinator persistentStores] count];\n    XCTAssertEqual(persistentStoreCount, (NSUInteger)1, @\"Expected there to be 1 persistent store, sadly there are %tu\", persistentStoreCount);\n    \n    NSPersistentStore *store = [[testCoordinator persistentStores] firstObject];\n    NSString *storeType = [store type];\n    XCTAssertEqualObjects(storeType, NSSQLiteStoreType, @\"Store type should be NSSQLiteStoreType, instead is %@\", storeType);\n}\n\n- (void) testCreateCoordinatorWithInMemoryStore\n{\n    NSPersistentStoreCoordinator *testCoordinator = [NSPersistentStoreCoordinator MR_coordinatorWithInMemoryStore];\n\n    NSUInteger persistentStoreCount = [[testCoordinator persistentStores] count];\n    XCTAssertEqual(persistentStoreCount, (NSUInteger)1, @\"Expected there to be 1 persistent store, sadly there are %tu\", persistentStoreCount);\n\n    NSPersistentStore *store = [[testCoordinator persistentStores] firstObject];\n    NSString *storeType = [store type];\n    XCTAssertEqualObjects(storeType, NSInMemoryStoreType, @\"Store type should be NSInMemoryStoreType, instead is %@\", storeType);\n}\n\n- (void) testCanAddAnInMemoryStoreToAnExistingCoordinator\n{\n    NSPersistentStoreCoordinator *testCoordinator = [NSPersistentStoreCoordinator MR_coordinatorWithSqliteStoreNamed:@\"TestStore.sqlite\"];\n\n    NSUInteger persistentStoreCount = [[testCoordinator persistentStores] count];\n    XCTAssertEqual(persistentStoreCount, (NSUInteger)1, @\"Expected there to be 1 persistent store, sadly there are %tu\", persistentStoreCount);\n\n    NSPersistentStore *firstStore = [[testCoordinator persistentStores] firstObject];\n    NSString *firstStoreType = [firstStore type];\n    XCTAssertEqualObjects(firstStoreType, NSSQLiteStoreType, @\"First store type should be NSSQLiteStoreType, instead is %@\", firstStoreType);\n\n    [testCoordinator MR_addInMemoryStore];\n    \n    persistentStoreCount = [[testCoordinator persistentStores] count];\n    XCTAssertEqual(persistentStoreCount, (NSUInteger)2, @\"Expected there to be 2 persistent store, sadly there are %tu\", persistentStoreCount);\n\n    NSPersistentStore *secondStore = [testCoordinator persistentStores][1];\n    NSString *secondStoreType = [secondStore type];\n    XCTAssertEqualObjects(secondStoreType, NSInMemoryStoreType, @\"Second store type should be NSInMemoryStoreType, instead is %@\", secondStoreType);\n}\n\n#pragma mark - Private\n\n- (void)removeAllStoreFiles\n{\n    NSURL *testStoreURL = [NSPersistentStore MR_urlForStoreName:@\"TestStore.sqlite\"];\n    NSString *rawURL = [testStoreURL absoluteString];\n    NSURL *shmSidecar = [NSURL URLWithString:[rawURL stringByAppendingString:@\"-shm\"]];\n    NSURL *walSidecar = [NSURL URLWithString:[rawURL stringByAppendingString:@\"-wal\"]];\n\n    [[NSFileManager defaultManager] removeItemAtURL:testStoreURL error:nil];\n    [[NSFileManager defaultManager] removeItemAtURL:shmSidecar error:nil];\n    [[NSFileManager defaultManager] removeItemAtURL:walSidecar error:nil];\n}\n\n@end\n"
  },
  {
    "path": "Tests/Core/NSPersistentStoreHelperTests.m",
    "content": "//\n//  NSPersistentStoreHelperTests.m\n//  Magical Record\n//\n//  Created by Saul Mora on 7/15/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <XCTest/XCTest.h>\n#import <MagicalRecord/MagicalRecord.h>\n#import \"MagicalRecordTestHelpers.h\"\n\n@interface NSPersistentStoreHelperTests : XCTestCase\n\n@end\n\n@interface NSPersistentStore (MagicalRecordPrivate)\n+ (NSString *)MR_applicationStorageDirectory;\n@end\n\n@implementation NSPersistentStoreHelperTests\n\n#if TARGET_OS_IPHONE\n\n- (void) testDefaultStoreFolderForiOSDevicesIsTheApplicationSupportFolder\n{\n    NSString *applicationLibraryDirectory = [NSPersistentStore MR_applicationStorageDirectory];\n    NSString *expectedStorePath = [applicationLibraryDirectory stringByAppendingPathComponent:kMagicalRecordDefaultStoreFileName];\n    NSURL *expectedStoreUrl = [NSURL fileURLWithPath:expectedStorePath];\n    NSURL *defaultStoreUrl = [NSPersistentStore MR_defaultLocalStoreUrl];\n    \n    XCTAssertEqualObjects(defaultStoreUrl, expectedStoreUrl, @\"Store URL should be %@, actually is %@\", [expectedStoreUrl absoluteString], [defaultStoreUrl absoluteString]);\n}\n\n- (void) testCanFindAURLInTheLibraryForiOSForASpecifiedStoreName\n{\n    NSString *storeFileName = @\"NotTheDefaultStoreName.storefile\";\n    NSString *applicationLibraryDirectory = [NSPersistentStore MR_applicationStorageDirectory];\n    NSString *expectedStorePath = [applicationLibraryDirectory stringByAppendingPathComponent:storeFileName];\n\n    BOOL fileWasCreated = [[NSFileManager defaultManager] createFileAtPath:expectedStorePath contents:[storeFileName dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];\n    XCTAssertTrue(fileWasCreated, @\"Expected file to have been created\");\n\n    NSURL *expectedFoundStoreUrl = [NSURL fileURLWithPath:expectedStorePath];\n    NSURL *foundStoreUrl = [NSPersistentStore MR_urlForStoreName:storeFileName];\n    \n    XCTAssertEqualObjects(foundStoreUrl, expectedFoundStoreUrl, @\"Found store URL should be %@, actually is %@\", [expectedFoundStoreUrl absoluteString], [foundStoreUrl absoluteString]);\n\n    [MagicalRecordTestHelpers removeStoreFilesForStoreAtURL:[NSURL fileURLWithPath:expectedStorePath]];\n}\n\n#else\n\n- (void) testDefaultStoreFolderForMacIsTheApplicationSupportDirectory\n{\n    NSString *applicationSupportDirectory = [NSPersistentStore MR_applicationStorageDirectory];\n    NSString *expectedStorePath = [applicationSupportDirectory stringByAppendingPathComponent:kMagicalRecordDefaultStoreFileName];\n    NSURL *expectedStoreUrl = [NSURL fileURLWithPath:expectedStorePath];\n    NSURL *defaultStoreUrl = [NSPersistentStore MR_defaultLocalStoreUrl];\n\n    XCTAssertEqualObjects(defaultStoreUrl, expectedStoreUrl, @\"Store URL should be %@, actually is %@\", [expectedStoreUrl absoluteString], [defaultStoreUrl absoluteString]);\n}\n\n- (void) testCanFindAURLInTheApplicationSupportLibraryForMacForASpecifiedStoreName\n{\n    NSString *storeFileName = @\"NotTheDefaultStoreName.storefile\";\n    NSString *applicationSupportDirectory = [NSPersistentStore MR_applicationStorageDirectory];\n    NSString *expectedStorePath = [applicationSupportDirectory stringByAppendingPathComponent:storeFileName];\n\n    BOOL fileWasCreated = [[NSFileManager defaultManager] createFileAtPath:expectedStorePath contents:[storeFileName dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];\n    XCTAssertTrue(fileWasCreated, @\"Expected file to have been created\");\n\n    NSURL *expectedStoreUrl = [NSURL fileURLWithPath:expectedStorePath];\n    NSURL *foundStoreUrl = [NSPersistentStore MR_urlForStoreName:storeFileName];\n    \n    XCTAssertEqualObjects(foundStoreUrl, expectedStoreUrl, @\"Found store URL should be %@, actually is %@\", [expectedStoreUrl absoluteString], [foundStoreUrl absoluteString]);\n\n    [MagicalRecordTestHelpers removeStoreFilesForStoreAtURL:[NSURL fileURLWithPath:expectedStorePath]];\n}\n\n#endif\n\n@end\n"
  },
  {
    "path": "Tests/DataImport/ImportMultipleEntitiesWithNoPrimaryKeyTests.m",
    "content": "//\n//  ImportMultipleEntitiesWithNoPrimaryKeyTests.m\n//  MagicalRecord\n//\n//  Created by Sérgio Estêvão on 09/01/2014.\n//  Copyright (c) 2014 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalDataImportTestCase.h\"\n#import <XCTest/XCTest.h>\n#import \"FixtureHelpers.h\"\n#import \"SingleEntityWithNoRelationships.h\"\n\n@interface ImportMultipleEntitiesWithNoPrimaryKeyTests : MagicalDataImportTestCase\n\n@property (nonatomic, retain) NSArray * arrayOfTestEntity;\n\n@end\n\n@implementation ImportMultipleEntitiesWithNoPrimaryKeyTests\n\n- (void)setUp\n{\n    [super setUp];\n    \n    self.arrayOfTestEntity = [SingleEntityWithNoRelationships MR_importFromArray:self.testEntityData];\n}\n\n- (void)tearDown\n{\n    [super tearDown];\n}\n\n- (void)testImportOfMultipleEntities\n{\n    XCTAssertNotNil(self.arrayOfTestEntity, @\"arrayOfTestEntity should not be nil\");\n    XCTAssertEqual(self.arrayOfTestEntity.count, (NSUInteger)4, @\"arrayOfTestEntity should have 4 entities\");\n}\n\n@end\n"
  },
  {
    "path": "Tests/DataImport/ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m",
    "content": "//\n//  Import SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests.m\n//  Magical Record\n//\n//  Created by Saul Mora on 8/16/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.h\"\n#import \"MagicalDataImportTestCase.h\"\n\n@interface ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests : MagicalDataImportTestCase\n\n@end\n\n@implementation ImportSingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyTests\n\n- (Class)testEntityClass\n{\n    return [SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey class];\n}\n\n- (void)testImportData\n{\n    SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey *entity = [[self testEntityClass] MR_importFromObject:self.testEntityData inContext:[NSManagedObjectContext MR_defaultContext]];\n    \n    XCTAssertNotNil(entity, @\"Entity should not be nil\");\n\n    XCTestExpectation *expectation = [self expectationWithDescription:@\"Wait for managed object context\"];\n\n    [entity.managedObjectContext performBlock:^{\n        NSUInteger mappedEntitiesCount = entity.mappedEntities.count;\n        XCTAssertEqual(mappedEntitiesCount, (NSUInteger)4, @\"Expected 4 mapped entities, received %zd\", mappedEntitiesCount);\n\n        [expectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0 handler:^(NSError * _Nullable error) {\n        MRLogError(@\"Managed Object Context performBlock: timed out due to error: %@\", [error localizedDescription]);\n    }];\n}\n\n- (void)testImportNilData\n{\n    SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey *entity = [[self testEntityClass] MR_importFromObject:self.testEntityData inContext:[NSManagedObjectContext MR_defaultContext]];\n    \n    XCTAssertNotNil(entity, @\"Entity should not be nil\");\n    \n    [entity.managedObjectContext performBlockAndWait:^{\n        // testing that importing nothing will not change the relationship\n        [entity MR_importValuesForKeysWithObject:@{}];\n        NSUInteger mappedEntitiesCount = entity.mappedEntities.count;\n        XCTAssertEqual(mappedEntitiesCount, (NSUInteger)4, @\"Expected 4 mapped entities, received %zd\", mappedEntitiesCount);\n        \n        // testing that importing `null` will nullify the relationship\n        [entity MR_importValuesForKeysWithObject:@{@\"mappedEntities\":[NSNull null]}];\n        mappedEntitiesCount = entity.mappedEntities.count;\n        XCTAssertEqual(mappedEntitiesCount, (NSUInteger)0, @\"Expected 0 mapped entities, received %zd\", mappedEntitiesCount);\n    }];\n}\n\n@end\n"
  },
  {
    "path": "Tests/DataImport/ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests.m",
    "content": "//\n//  ImportSingleEntityRelatedToMappedEntityUsingDefaults.m\n//  Magical Record\n//\n//  Created by Saul Mora on 8/11/11.\n//  Copyright (c) 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MappedEntity.h\"\n#import \"SingleEntityRelatedToMappedEntityUsingDefaults.h\"\n#import \"MagicalDataImportTestCase.h\"\n\n@interface ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests : MagicalDataImportTestCase\n\n@end\n\n@implementation ImportSingleEntityRelatedToMappedEntityUsingDefaultsTests\n\n- (Class)testEntityClass\n{\n    return [SingleEntityRelatedToMappedEntityUsingDefaults class];\n}\n\n- (void)setupTestData\n{\n    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];\n\n    MappedEntity *testMappedEntity = [MappedEntity MR_createEntityInContext:context];\n    \n    testMappedEntity.mappedEntityID = @42;\n    testMappedEntity.sampleAttribute = @\"This attribute created as part of the test case setup\";\n\n    SingleEntityRelatedToMappedEntityUsingDefaults *entity = [SingleEntityRelatedToMappedEntityUsingDefaults MR_createEntityInContext:context];\n    entity.singleEntityRelatedToMappedEntityUsingDefaultsID = @24;\n\n    [context MR_saveToPersistentStoreAndWait];\n}\n\n- (void)testImportMappedEntityViaToOneRelationship\n{\n    SingleEntityRelatedToMappedEntityUsingDefaults *entity = [[self testEntityClass] MR_importFromObject:self.testEntityData];\n\n    XCTestExpectation *expectation = [self expectationWithDescription:@\"Wait for managed object context\"];\n\n    [entity.managedObjectContext performBlock:^{\n        MappedEntity *testRelatedEntity = entity.mappedEntity;\n\n        XCTAssertNotNil(testRelatedEntity, @\"Entity should not be nil\");\n\n        NSString *string = testRelatedEntity.sampleAttribute;\n        NSRange stringRange = [string rangeOfString:@\"sample json file\"];\n\n        XCTAssert(stringRange.length > 0, @\"Could not find 'sample json file' in '%@'\", string);\n\n        NSNumber *numberOfEntities = [MappedEntity MR_numberOfEntities];\n        XCTAssertEqualObjects(numberOfEntities, @1, @\"Expected 1 entity, got %@\", numberOfEntities);\n\n        [expectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0 handler:^(NSError * _Nullable error) {\n        MRLogError(@\"Managed Object Context performBlock: timed out due to error: %@\", [error localizedDescription]);\n    }];\n}\n\n@end\n"
  },
  {
    "path": "Tests/DataImport/ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests.m",
    "content": "//\n//  ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m\n//  Magical Record\n//\n//  Created by Saul Mora on 8/11/11.\n//  Copyright (c) 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MappedEntity.h\"\n#import \"SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.h\"\n#import \"MagicalDataImportTestCase.h\"\n\n@interface ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests : MagicalDataImportTestCase\n\n@end\n\n@implementation ImportSingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyTests\n\n- (void)setupTestData\n{\n    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];\n\n    MappedEntity *testMappedEntity = [MappedEntity MR_createEntityInContext:context];\n\n    testMappedEntity.testMappedEntityID = @42;\n    testMappedEntity.sampleAttribute = @\"This attribute created as part of the test case setup\";\n\n    [context MR_saveToPersistentStoreAndWait];\n}\n\n- (Class)testEntityClass\n{\n    return [SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey class];\n}\n\n- (void)testImportMappedEntityRelatedViaToOneRelationship\n{\n    SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey *entity = [[self testEntityClass] MR_importFromObject:self.testEntityData];\n\n    XCTestExpectation *expectation = [self expectationWithDescription:@\"Wait for managed object context\"];\n\n    NSManagedObjectContext *entityContext = entity.managedObjectContext;\n\n    [entityContext performBlock:^{\n        MappedEntity *testRelatedEntity = entity.mappedEntity;\n\n        // Verify mapping in relationship description userinfo\n        NSEntityDescription *mappedEntity = [entity entity];\n        NSRelationshipDescription *testRelationship = [[mappedEntity propertiesByName] valueForKey:@\"mappedEntity\"];\n        XCTAssertEqualObjects([[testRelationship userInfo] objectForKey:kMagicalRecordImportRelationshipMapKey], @\"someRandomAttributeName\", @\"Expected 'someRandomAttributeName' got '%@'\", [[testRelationship userInfo] objectForKey:kMagicalRecordImportRelationshipMapKey]);\n\n        NSNumber *numberOfEntities = [SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey MR_numberOfEntitiesWithContext:entityContext];\n        XCTAssertEqualObjects(numberOfEntities, @1, @\"Expected count of 1 entity, got %@\", numberOfEntities);\n\n        NSNumber *numberOfMappedEntities = [MappedEntity MR_numberOfEntitiesWithContext:entityContext];\n        XCTAssertEqualObjects(numberOfMappedEntities, @1, @\"Expected count of 1 entity, got %@\", numberOfMappedEntities);\n\n        XCTAssertNotNil(testRelatedEntity, @\"testRelatedEntity should not be nil\");\n\n        NSRange stringRange = [[testRelatedEntity sampleAttribute] rangeOfString:@\"sample json file\"];\n\n        XCTAssertTrue(stringRange.length > 0, @\"Did not find 'sample json file' in %@\", [testRelatedEntity sampleAttribute]);\n\n        [expectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0 handler:^(NSError * _Nullable error) {\n        MRLogError(@\"Managed Object Context performBlock: timed out due to error: %@\", [error localizedDescription]);\n    }];\n}\n\n- (void)testImportMappedEntityUsingPrimaryRelationshipKey\n{\n    SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey *entity = [[self testEntityClass] MR_importFromObject:self.testEntityData];\n\n    XCTestExpectation *expectation = [self expectationWithDescription:@\"Wait for managed object context\"];\n\n    NSManagedObjectContext *entityContext = entity.managedObjectContext;\n\n    [entityContext performBlock:^{\n        MappedEntity *testRelatedEntity = entity.mappedEntity;\n\n        //verify mapping in relationship description userinfo\n        NSEntityDescription *mappedEntity = [entity entity];\n        NSRelationshipDescription *testRelationship = [[mappedEntity propertiesByName] valueForKey:@\"mappedEntity\"];\n        NSString *mapKey = [[testRelationship userInfo] objectForKey:kMagicalRecordImportRelationshipMapKey];\n        XCTAssertEqualObjects(mapKey, @\"someRandomAttributeName\", @\"Expected 'someRandomAttributeName' got '%@'\", mapKey);\n\n        NSNumber *entityCount = [SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey MR_numberOfEntitiesWithContext:entityContext];\n        XCTAssertEqualObjects(entityCount, @1, @\"Expected count of 1 entity, got %@\", entityCount);\n\n        NSNumber *mappedEntityCount = [MappedEntity MR_numberOfEntitiesWithContext:entityContext];\n        XCTAssertEqualObjects(mappedEntityCount, @1, @\"Expected count of 1 entity, got %@\", mappedEntityCount);\n\n        NSNumber *mappedEntityID = [testRelatedEntity testMappedEntityID];\n        XCTAssertEqualObjects(mappedEntityID, @42, @\"Expected testMappedEntityID to be '42', got '%@'\", mappedEntityID);\n\n        XCTAssertNotNil(testRelatedEntity, @\"testRelatedEntity should not be nil\");\n\n        NSRange stringRange = [[testRelatedEntity sampleAttribute] rangeOfString:@\"sample json file\"];\n        XCTAssertTrue(stringRange.length > 0, @\"Did not find 'sample json file' in %@\", [testRelatedEntity sampleAttribute]);\n\n        [expectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0 handler:^(NSError * _Nullable error) {\n        MRLogError(@\"Managed Object Context performBlock: timed out due to error: %@\", [error localizedDescription]);\n    }];\n}\n\n@end\n"
  },
  {
    "path": "Tests/DataImport/ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m",
    "content": "//\n//  ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests.m\n//  Magical Record\n//\n//  Created by Saul Mora on 8/16/11.\n//  Copyright (c) 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalDataImportTestCase.h\"\n#import \"MappedEntity.h\"\n#import \"SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.h\"\n\n@interface ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests : MagicalDataImportTestCase\n\n@end\n\n@implementation ImportSingleEntityRelatedToMappedEntityWithNestedMappedAttributesTests\n\n- (Class)testEntityClass\n{\n    return [SingleEntityRelatedToMappedEntityWithNestedMappedAttributes class];\n}\n\n- (void)testDataImport\n{\n    SingleEntityRelatedToMappedEntityWithNestedMappedAttributes *entity = [[self testEntityClass] MR_importFromObject:self.testEntityData];\n\n    XCTestExpectation *expectation = [self expectationWithDescription:@\"Wait for managed object context\"];\n\n    [entity.managedObjectContext performBlock:^{\n        XCTAssertNotNil(entity.mappedEntity, @\"mappedEntity should not be nil\");\n        XCTAssertEqualObjects(entity.mappedEntity.mappedEntityID, @42, @\"Expected mappedEntityID to be 42, got %@\", entity.mappedEntity.mappedEntityID);\n\n        NSRange stringRange = [entity.mappedEntity.nestedAttribute rangeOfString:@\"nested value\"];\n        XCTAssertTrue(stringRange.length > 0, @\"nestedAttribute did not contain 'nested value': %@\", entity.mappedEntity.nestedAttribute);\n\n        [expectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0 handler:^(NSError * _Nullable error) {\n        MRLogError(@\"Managed Object Context performBlock: timed out due to error: %@\", [error localizedDescription]);\n    }];\n}\n\n@end\n"
  },
  {
    "path": "Tests/DataImport/ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m",
    "content": "//\n//  ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests.m\n//  Magical Record\n//\n//  Created by Saul Mora on 8/18/11.\n//  Copyright (c) 2011 Magical Panda Software LLC. All rights reserved.\n//\n#import \"MagicalDataImportTestCase.h\"\n#import \"SingleEntityRelatedToMappedEntityWithSecondaryMappings.h\"\n#import \"MappedEntity.h\"\n\n@interface ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests : MagicalDataImportTestCase\n\n@end\n\n@implementation ImportSingleEntityRelatedToMappedEntityWithSecondaryMappingsTests\n\n- (Class)testEntityClass\n{\n    return [SingleEntityRelatedToMappedEntityWithSecondaryMappings class];\n}\n\n- (void)testImportMappedAttributeUsingSecondaryMappedKeyName\n{\n    SingleEntityRelatedToMappedEntityWithSecondaryMappings *entity = [[self testEntityClass] MR_importFromObject:self.testEntityData];\n\n    [entity.managedObjectContext performBlockAndWait:^{\n        XCTAssertNotNil(entity, @\"Entity should not be nil\");\n\n        NSRange stringRange = [[entity secondaryMappedAttribute] rangeOfString:@\"sample json file\"];\n        XCTAssertTrue(stringRange.length > 0, @\"Expected string not contained within secondary mapped attribute. Got %@\", [entity secondaryMappedAttribute]);\n    }];\n}\n\n@end\n"
  },
  {
    "path": "Tests/DataImport/ImportSingleEntityWithNoRelationshipsTests.m",
    "content": "//\n//  DataImportTests.m\n//  Magical Record\n//\n//  Created by Saul Mora on 7/15/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <XCTest/XCTest.h>\n#import <MagicalRecord/MagicalRecord.h>\n#import \"FixtureHelpers.h\"\n#import \"SingleEntityWithNoRelationships.h\"\n\n@interface ImportSingleEntityWithNoRelationshipsTests : XCTestCase\n\n@property (nonatomic, strong) SingleEntityWithNoRelationships *testEntity;\n\n@end\n\n@implementation ImportSingleEntityWithNoRelationshipsTests\n\n@synthesize testEntity;\n\n- (void)setUp\n{\n    [super setUp];\n\n    [MagicalRecord setDefaultModelFromClass:[self class]];\n    [MagicalRecord setupCoreDataStackWithInMemoryStore];\n\n    id singleEntity = [self dataFromJSONFixture];\n\n    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];\n    [context performBlockAndWait:^{\n        self.testEntity = [SingleEntityWithNoRelationships MR_importFromObject:singleEntity inContext:context];\n    }];\n}\n\n- (void)tearDown\n{\n    [super tearDown];\n\n    [MagicalRecord cleanUp];\n}\n\n- (void)testImportASingleEntity\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertNotNil(self->testEntity, @\"testEntity should not be nil\");\n    }];\n}\n\n- (void)testImportStringAttributeToEntity\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertEqualObjects(self->testEntity.stringTestAttribute, @\"This is a test value\", @\"stringTestAttribute did not contain expected value, instead found '%@'\", self->testEntity.stringTestAttribute);\n    }];\n}\n\n- (void)testImportInt16AttributeToEntity\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertEqualObjects(self->testEntity.int16TestAttribute, @256, @\"int16TestAttribute did not contain expected value, instead found: %@\", self->testEntity.int16TestAttribute);\n    }];\n}\n\n- (void)testImportInt32AttributeToEntity\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertEqualObjects(self->testEntity.int32TestAttribute, @32, @\"int32TestAttribute did not contain expected value, instead found: %@\", self->testEntity.int32TestAttribute);\n    }];\n}\n\n- (void)testImportInt64AttributeToEntity\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertEqualObjects(self->testEntity.int64TestAttribute, @10158365420975381, @\"int64TestAttribute did not contain expected value, instead found: %@\", self->testEntity.int64TestAttribute);\n    }];\n}\n\n- (void)testImportDecimalAttributeToEntity\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertEqualObjects(self->testEntity.decimalTestAttribute, @1.2, @\"decimalTestAttribute did not contain expected value, instead found: %@\", self->testEntity.decimalTestAttribute);\n    }];\n}\n\n- (void)testImportDoubleAttributeToEntity\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertEqualObjects(self->testEntity.doubleTestAttribute, @124.3, @\"doubleTestAttribute did not contain expected value, instead found: %@\", self->testEntity.doubleTestAttribute);\n    }];\n}\n\n- (void)testImportFloatAttributeToEntity\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertEqualObjects(self->testEntity.floatTestAttribute, @10000000000, @\"floatTestAttribute did not contain expected value, instead found: %@\", self->testEntity.floatTestAttribute);\n    }];\n}\n\n- (void)testImportBooleanAttributeToEntity\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertFalse([self->testEntity.booleanTestAttribute boolValue], @\"booleanTestAttribute did not contain expected value, instead found: %@\", self->testEntity.booleanTestAttribute);\n    }];\n}\n\n- (void)testImportMappedStringAttributeToEntity\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertEqualObjects(self->testEntity.mappedStringAttribute, @\"Mapped value\", @\"mappedStringAttribute did not contain expected value, instead found: %@\", self->testEntity.mappedStringAttribute);\n    }];\n}\n\n- (void)testImportStringAttributeWithNullValue\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertNil(self->testEntity.nullTestAttribute, @\"nullTestAttribute did not contain expected value, instead found: %@\", self->testEntity.nullTestAttribute);\n    }];\n}\n\n- (void)testImportNumberAsStringAttributeToEntity\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertEqualObjects(self->testEntity.numberAsStringTestAttribute, @\"10248909829\", @\"numberAsStringTestAttribute did not contain expected value, instead found: %@\", self->testEntity.numberAsStringTestAttribute);\n    }];\n}\n\n- (void)testImportBooleanAsStringAttributeToEntity\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertTrue(self->testEntity.booleanAsStringTestAttribute, @\"booleanFromStringTestAttribute did not contain expected value, instead found: %@\", self->testEntity.booleanAsStringTestAttribute);\n    }];\n}\n\n- (void)testImportAttributeNotInJsonData\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        NSRange rangeOfString = [self->testEntity.notInJsonAttribute rangeOfString:@\"Core Data Model\"];\n\n        XCTAssertNotEqual(@(rangeOfString.length), @0, @\"notInJsonAttribute did not contain expected string, instead received: %@\", self->testEntity.notInJsonAttribute);\n    }];\n}\n\n#if TARGET_OS_IPHONE\n\n#if defined(__IPHONE_5_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_5_0\n\n- (void)testImportUIColorAttributeToEntity\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        UIColor *actualColor = self->testEntity.colorTestAttribute;\n\n        if ([actualColor respondsToSelector:@selector(getRed:green:blue:alpha:)])\n        {\n            CGFloat red, blue, green, alpha;\n            [actualColor getRed:&red green:&green blue:&blue alpha:&alpha];\n\n            XCTAssertEqual(alpha, (CGFloat)1., @\"Unexpected value returned: %f\", alpha);\n            XCTAssertEqual(red, (CGFloat)64. / (CGFloat)255., @\"Unexpected value returned: %f\", red);\n            XCTAssertEqual(green, (CGFloat)128. / (CGFloat)255., @\"Unexpected value returned: %f\", green);\n            XCTAssertEqual(blue, (CGFloat)225. / (CGFloat)255., @\"Unexpected value returned: %f\", blue);\n        }\n    }];\n}\n#endif\n\n- (NSDate *)dateFromString:(NSString *)date\n{\n    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];\n\n    formatter.dateFormat = @\"yyyy-MM-dd HH:mm:ss ZZZ\";\n    formatter.timeZone = [NSTimeZone timeZoneWithName:@\"GMT\"];\n    formatter.locale = [NSLocale currentLocale];\n\n    NSDate *expectedDate = [formatter dateFromString:date];\n\n    return expectedDate;\n}\n\n#else\n\n- (void)testImportNSColorAttributeToEntity\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        NSColor *actualColor = self->testEntity.colorTestAttribute;\n\n        XCTAssertEqual([actualColor alphaComponent], (CGFloat)255. / (CGFloat)255., @\"Unexpected value returned\");\n        XCTAssertEqual([actualColor redComponent], (CGFloat)64. / (CGFloat)255., @\"Unexpected value returned\");\n        XCTAssertEqual([actualColor greenComponent], (CGFloat)128. / (CGFloat)255., @\"Unexpected value returned\");\n        XCTAssertEqual([actualColor blueComponent], (CGFloat)225. / (CGFloat)255., @\"Unexpected value returned\");\n    }];\n}\n\n- (NSDate *)dateFromString:(NSString *)date\n{\n    NSDate *expectedDate = [NSDate dateWithString:date];\n\n    return expectedDate;\n}\n#endif /* if TARGET_OS_IPHONE */\n\n- (void)testImportDateAttributeToEntity\n{\n    NSDate *expectedDate = [self dateFromString:@\"2011-07-23 22:30:40 +0000\"];\n\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertEqualObjects(self->testEntity.dateTestAttribute, expectedDate, @\"Unexpected value returned\");\n    }];\n}\n\n- (void)testImportDateAttributeWithCustomFormat\n{\n    NSDate *expectedDate = [self dateFromString:@\"2011-08-05 01:56:04 +0000\"];\n\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertEqualObjects(self->testEntity.dateWithCustomFormat, expectedDate, @\"Unexpected value returned\");\n    }];\n}\n\n- (void)testImportEpochDate\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertEqualObjects(self->testEntity.unixTimeTestAttribute, [NSDate dateWithTimeIntervalSince1970:1388349428], @\"unixTimeTestAttribute did not contain the expected value, instead found: %@\", self->testEntity.unixTimeTestAttribute);\n    }];\n}\n\n- (void)testImportEpochDate13\n{\n    [testEntity.managedObjectContext performBlockAndWait:^{\n        XCTAssertEqualObjects(self->testEntity.unixTime13TestAttribute, [NSDate dateWithTimeIntervalSince1970:1388349427.543], @\"unixTimeTest13Attribute did not contain the expected value, instead found: %@\", self->testEntity.unixTime13TestAttribute);\n    }];\n}\n\n@end\n"
  },
  {
    "path": "Tests/DataImport/ImportSingleRelatedEntityTests.m",
    "content": "//\n//  ImportSingleEntityWithRelatedEntitiesTests.m\n//  Magical Record\n//\n//  Created by Saul Mora on 7/23/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalDataImportTestCase.h\"\n#import \"SingleRelatedEntity.h\"\n#import \"AbstractRelatedEntity.h\"\n#import \"ConcreteRelatedEntity.h\"\n#import \"MappedEntity.h\"\n\n@interface ImportSingleRelatedEntityTests : MagicalDataImportTestCase\n\n@property (nonatomic, retain) SingleRelatedEntity *singleTestEntity;\n\n@end\n\n@implementation ImportSingleRelatedEntityTests\n\n@synthesize singleTestEntity = _singleTestEntity;\n\n- (void)setupTestData\n{\n    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];\n\n    XCTestExpectation *expectation = [self expectationWithDescription:@\"Wait for managed object context\"];\n\n    [context performBlock:^{\n        MappedEntity *testMappedEntity = [MappedEntity MR_createEntityInContext:context];\n\n        testMappedEntity.testMappedEntityID = @42;\n        testMappedEntity.sampleAttribute = @\"This attribute created as part of the test case setup\";\n\n        [expectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0 handler:^(NSError *_Nullable error) {\n        MRLogError(@\"Managed Object Context performBlock: timed out due to error: %@\", [error localizedDescription]);\n    }];\n}\n\n- (void)setUp\n{\n    [super setUp];\n\n    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];\n    self.singleTestEntity = [SingleRelatedEntity MR_importFromObject:self.testEntityData inContext:context];\n}\n\n- (void)testImportAnEntityRelatedToAbstractEntityViaToOneRelationship\n{\n    XCTestExpectation *expectation = [self expectationWithDescription:@\"Wait for managed object context\"];\n\n    [self.singleTestEntity.managedObjectContext performBlock:^{\n        XCTAssertNotNil(self.singleTestEntity, @\"singleTestEntity should not be nil\");\n\n        id testRelatedEntity = self.singleTestEntity.testAbstractToOneRelationship;\n\n        XCTAssertNotNil(testRelatedEntity, @\"testRelatedEntity should not be nil\");\n\n        NSRange stringRange = [[testRelatedEntity sampleBaseAttribute] rangeOfString:@\"BASE\"];\n        XCTAssertTrue(stringRange.length > 0, @\"Expected to find 'BASE' in string '%@' but did not\", [testRelatedEntity sampleBaseAttribute]);\n\n        XCTAssertFalse([testRelatedEntity respondsToSelector:@selector(sampleConcreteAttribute)], @\"testRelatedEntity should respond to selector sampleConcreteAttribute\");\n\n        [expectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0 handler:^(NSError * _Nullable error) {\n        MRLogError(@\"Managed Object Context performBlock: timed out due to error: %@\", [error localizedDescription]);\n    }];\n}\n\n- (void)testImportAnEntityRelatedToAbstractEntityViaToManyRelationship\n{\n    XCTestExpectation *expectation = [self expectationWithDescription:@\"Wait for managed object context\"];\n\n    [self.singleTestEntity.managedObjectContext performBlock:^{\n        XCTAssertNotNil(self.singleTestEntity, @\"singleTestEntity should not be nil\");\n\n        NSUInteger relationshipCount = [self.singleTestEntity.testAbstractToManyRelationship count];\n        XCTAssertEqual(relationshipCount, (NSUInteger)2, @\"Expected relationship count to be 2, received %zd\", relationshipCount);\n\n        id testRelatedEntity = [self.singleTestEntity.testAbstractToManyRelationship anyObject];\n\n        XCTAssertNotNil(testRelatedEntity, @\"testRelatedEntity should not be nil\");\n\n        NSRange stringRange = [[testRelatedEntity sampleBaseAttribute] rangeOfString:@\"BASE\"];\n        XCTAssertTrue(stringRange.length > 0, @\"Expected to find 'BASE' in string '%@' but did not\", [testRelatedEntity sampleBaseAttribute]);\n\n        XCTAssertFalse([testRelatedEntity respondsToSelector:@selector(sampleConcreteAttribute)], @\"testRelatedEntity should respond to selector sampleConcreteAttribute\");\n\n        [expectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0 handler:^(NSError * _Nullable error) {\n        MRLogError(@\"Managed Object Context performBlock: timed out due to error: %@\", [error localizedDescription]);\n    }];\n}\n\n#pragma mark - Subentity tests\n\n- (void)testImportAnEntityRelatedToAConcreteSubEntityViaToOneRelationship\n{\n    XCTestExpectation *expectation = [self expectationWithDescription:@\"Wait for managed object context\"];\n\n    [self.singleTestEntity.managedObjectContext performBlock:^{\n        ConcreteRelatedEntity *testRelatedEntity = self.singleTestEntity.testConcreteToOneRelationship;\n\n        XCTAssertNotNil(testRelatedEntity, @\"testRelatedEntity should not be nil\");\n\n        NSRange stringRange = [[testRelatedEntity sampleBaseAttribute] rangeOfString:@\"BASE\"];\n        XCTAssertTrue(stringRange.length > 0, @\"Expected to find 'BASE' in string '%@' but did not\", [testRelatedEntity sampleBaseAttribute]);\n\n        stringRange = [[testRelatedEntity sampleConcreteAttribute] rangeOfString:@\"DESCENDANT\"];\n        XCTAssertTrue(stringRange.length > 0, @\"Expected to find 'DESCENDANT' in string '%@' but did not\", [testRelatedEntity sampleConcreteAttribute]);\n\n        [expectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0 handler:^(NSError * _Nullable error) {\n        MRLogError(@\"Managed Object Context performBlock: timed out due to error: %@\", [error localizedDescription]);\n    }];\n}\n\n- (void)testImportAnEntityRelatedToASubEntityViaToManyRelationship\n{\n    XCTestExpectation *expectation = [self expectationWithDescription:@\"Wait for managed object context\"];\n\n    [self.singleTestEntity.managedObjectContext performBlock:^{\n        NSUInteger relationshipCount = [self.singleTestEntity.testConcreteToManyRelationship count];\n        XCTAssertEqual(relationshipCount, (NSUInteger)3, @\"Expected relationship count to be 3, received %zd\", relationshipCount);\n\n        id testRelatedEntity = [self.singleTestEntity.testConcreteToManyRelationship anyObject];\n        XCTAssertNotNil(testRelatedEntity, @\"testRelatedEntity should not be nil\");\n\n        NSRange stringRange = [[testRelatedEntity sampleBaseAttribute] rangeOfString:@\"BASE\"];\n        XCTAssertTrue(stringRange.length > 0, @\"Expected to find 'BASE' in string '%@' but did not\", [testRelatedEntity sampleBaseAttribute]);\n\n        stringRange = [[testRelatedEntity sampleConcreteAttribute] rangeOfString:@\"DESCENDANT\"];\n        XCTAssertTrue(stringRange.length > 0, @\"Expected to find 'DESCENDANT' in string '%@' but did not\", [testRelatedEntity sampleConcreteAttribute]);\n\n        [expectation fulfill];\n    }];\n\n    [self waitForExpectationsWithTimeout:5.0 handler:^(NSError * _Nullable error) {\n        MRLogError(@\"Managed Object Context performBlock: timed out due to error: %@\", [error localizedDescription]);\n    }];\n}\n\n@end\n"
  },
  {
    "path": "Tests/DataImport/MagicalDataImportTestCase.h",
    "content": "//\n//  MagicalDataImportTestCase.h\n//  Magical Record\n//\n//  Created by Saul Mora on 8/16/11.\n//  Copyright (c) 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalRecordTestBase.h\"\n\n@interface MagicalDataImportTestCase : MagicalRecordTestBase\n\n@property (nonatomic, strong) id testEntityData;\n@property (nonatomic, strong) id testEntity;\n\n- (Class) testEntityClass;\n- (void) setupTestData;\n\n@end\n"
  },
  {
    "path": "Tests/DataImport/MagicalDataImportTestCase.m",
    "content": "//\n//  MagicalDataImportTestCase.m\n//  Magical Record\n//\n//  Created by Saul Mora on 8/16/11.\n//  Copyright (c) 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalDataImportTestCase.h\"\n#import \"FixtureHelpers.h\"\n\n@implementation MagicalDataImportTestCase\n\n- (void)setUp\n{\n    [super setUp];\n\n    [self setupTestData];\n\n    self.testEntityData = [self dataFromJSONFixture];\n}\n\n- (Class)testEntityClass\n{\n    return [NSManagedObject class];\n}\n\n- (void)setupTestData\n{\n    // Implement this in your subclasses\n}\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/FixtureHelpers.h",
    "content": "//\n//  FixtureHelpers.h\n//  Magical Record\n//\n//  Created by Saul Mora on 7/15/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <XCTest/XCTest.h>\n\n@interface FixtureHelpers : NSObject\n\n+ (id) dataFromPListFixtureNamed:(NSString *)fixtureName;\n+ (id) dataFromJSONFixtureNamed:(NSString *)fixtureName;\n\n@end\n\n@interface XCTest (FixtureHelpers)\n\n- (id) dataFromJSONFixture;\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/FixtureHelpers.m",
    "content": "//\n//  FixtureHelpers.m\n//  Magical Record\n//\n//  Created by Saul Mora on 7/15/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"FixtureHelpers.h\"\n\n@implementation FixtureHelpers\n\n+ (id) dataFromPListFixtureNamed:(NSString *)fixtureName\n{\n    NSBundle *testBundle = [NSBundle bundleForClass:[self class]];\n    NSString *resource = [testBundle pathForResource:fixtureName ofType:@\"plist\"];\n    NSData *plistData = [NSData dataWithContentsOfFile:resource];\n    \n    return [NSPropertyListSerialization propertyListWithData:plistData options:NSPropertyListImmutable format:nil error:nil];\n}\n\n+ (id) dataFromJSONFixtureNamed:(NSString *)fixtureName\n{\n    NSBundle *testBundle = [NSBundle bundleForClass:[self class]];\n    NSString *resource = [testBundle pathForResource:fixtureName ofType:@\"json\"];\n    NSInputStream *inputStream = [NSInputStream inputStreamWithFileAtPath:resource];\n    [inputStream open];\n    \n    return [NSJSONSerialization JSONObjectWithStream:inputStream options:0 error:nil];\n}\n\n@end\n\n@implementation XCTest (FixtureHelpers)\n\n- (id) dataFromJSONFixture\n{\n    NSString *className = NSStringFromClass([self class]);\n    className = [className stringByReplacingOccurrencesOfString:@\"Import\" withString:@\"\"];\n    className = [className stringByReplacingOccurrencesOfString:@\"Spec\" withString:@\"\"];\n    className = [className stringByReplacingOccurrencesOfString:@\"Tests\" withString:@\"\"];\n    return [FixtureHelpers dataFromJSONFixtureNamed:className];\n}\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/ImportSingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeysTests.m",
    "content": "//\n//  ImportSingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeysTests.m\n//  Magical Record\n//\n//  Created by Saul Mora on 9/1/11.\n//  Copyright 2011 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"MagicalDataImportTestCase.h\"\n#import \"MappedEntity.h\"\n#import \"SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.h\"\n\n@interface ImportSingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeysTests : MagicalDataImportTestCase\n\n@end\n\n@implementation ImportSingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeysTests\n\n- (Class) testEntityClass\n{\n    return [SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey class];\n}\n\n- (void) setupTestData\n{\n    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];\n\n    MappedEntity *related = nil;\n    for (int i = 0; i < 10; i++) \n    {\n        MappedEntity *testMappedEntity = [MappedEntity createInContext:context];\n        testMappedEntity.testMappedEntityIDValue = i;\n        testMappedEntity.sampleAttribute = [NSString stringWithFormat:@\"test attribute %d\", i];\n        related = testMappedEntity;\n    }\n    \n    SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey *entity = [SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey createInContext:context];\n    entity.testPrimaryKeyValue = 84;\n    [entity addMappedEntitiesObject:related];\n    \n    [context MR_saveToPersistentStoreAndWait];\n}\n\n- (void) testDataImportUsingListOfPrimaryKeyIDs\n{\n    SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey *testEntity = [[self testEntityClass] MR_importFromObject:self.testEntityData];\n    [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];\n    \n    assertThat([SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey numberOfEntities], is(equalToInteger(1)));\n    assertThat([MappedEntity numberOfEntities], is(equalToInteger(10)));\n\n    assertThat(testEntity.mappedEntities, hasCountOf(5));\n    for (MappedEntity *relatedEntity in testEntity.mappedEntities)\n    {\n        assertThat(relatedEntity.sampleAttribute, containsString(@\"test attribute\"));\n    }\n}\n\n//- (void) testDataUpdateWithLookupInfoInDataSet\n//{\n//    SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey *testEntity = [[self testEntityClass] MR_updateFromObject:self.testEntityData];\n//    [[NSManagedObjectContext MR_defaultContext] MR_save];\n//\n//    assertThat([SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey numberOfEntities], is(equalToInteger(1)));\n//    assertThat([MappedEntity numberOfEntities], is(equalToInteger(10)));\n//               \n//    assertThat(testEntity, is(notNilValue()));\n//    assertThat(testEntity.testPrimaryKey, is(equalToInteger(84)));\n//    assertThat(testEntity.mappedEntities, hasCountOf(5));\n//\n//    for (MappedEntity *relatedEntity in testEntity.mappedEntities)\n//    {\n//        assertThat(relatedEntity.sampleAttribute, containsString(@\"test attribute\"));\n//    }\n//}\n\n//- (void) testDataUpdateWithoutLookupData\n//{\n//    SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey *testEntity =\n//    [SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey findFirstByAttribute:@\"testPrimaryKey\" withValue:[NSNumber numberWithInt:84]];\n//    \n//    assertThat(testEntity, is(notNilValue()));\n//    \n//    [testEntity MR_updateValuesForKeysWithObject:self.testEntityData];\n//}\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/MultipleEntitiesWithNoPrimaryKey.json",
    "content": "[\n    {\n        \"stringTestAttribute\": \"This is a test value\",\n    },\n    {\n        \"stringTestAttribute\": \"This is a test value\",\n    },\n    {\n        \"stringTestAttribute\": \"This is a test value\",\n    },\n    {\n        \"stringTestAttribute\": \"This is a test value\",\n    }\n]"
  },
  {
    "path": "Tests/Fixtures/SampleJSONDataForImport.json",
    "content": "{\n    \n}"
  },
  {
    "path": "Tests/Fixtures/SingleEntityRelatedToManyMappedEntitiesUsingListOfPrimaryKeys.json",
    "content": "{\n    \"mappedEntities\": [1,2,3,4],\n    \"testPrimaryKey\": 84\n}"
  },
  {
    "path": "Tests/Fixtures/SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.json",
    "content": "{\n    \"mappedEntities\":\n    [\n        {\n            \"id\": 1,\n            \"sampleAttribute\": \"Sample Attribute Value 1\"\n        }\n        ,\n        {\n            \"id\": 2,\n            \"sampleAttribute\": \"Sample Attribute Value 2\"\n        }\n        ,\n        {\n            \"id\": 3,\n            \"sampleAttribute\": \"Sample Attribute Value 3\"\n        }\n        ,\n        {\n            \"id\": 4,\n            \"sampleAttribute\": \"Sample Attribute Value 4\"\n        }\n    ]\n}"
  },
  {
    "path": "Tests/Fixtures/SingleEntityRelatedToMappedEntityUsingDefaults.json",
    "content": "{\n    \"mappedEntity\":\n    {\n        \"mappedEntityID\": 42,\n        \"sampleAttribute\": \"This is from the sample json file\"\n    }\n}"
  },
  {
    "path": "Tests/Fixtures/SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.json",
    "content": "{\n    \"someRandomAttributeName\":\n    {\n        \"id\": 42,\n        \"sampleAttribute\": \"This is from the sample json file\"\n    }\n}"
  },
  {
    "path": "Tests/Fixtures/SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.json",
    "content": "{\n    \"mappedEntity\":\n    {\n        \"mappedEntityID\": 42,\n        \"attributeValue\":\n        {\n            \"nestedValue\": \"This is a nested value\"\n        }\n    }\n}"
  },
  {
    "path": "Tests/Fixtures/SingleEntityRelatedToMappedEntityWithSecondaryMappings.json",
    "content": "{\n    \"actualMappedKey\": \"mapped value from sample json file\",\n    \"actualRelatedObject\":\n    {\n        \"id\": 50,\n        \"sampleAttribute\": \"actualMappedRelationship value from sample json file\"\n    }\n}"
  },
  {
    "path": "Tests/Fixtures/SingleEntityWithNoRelationships.json",
    "content": "{\n    \"int64TestAttribute\": 10158365420975381,\n    \"stringTestAttribute\": \"This is a test value\",\n    \"int32TestAttribute\": 32,\n    \"int16TestAttribute\": 256,\n    \"decimalTestAttribute\": 1.2,\n    \"doubleTestAttribute\": 124.3,\n    \"floatTestAttribute\": 10000000000,\n    \"booleanTestAttribute\": false,\n    \"dateTestAttribute\": \"2011-07-23T22:30:40Z\",\n    \"colorTestAttribute\": \"rgba(64,128,225,1)\",\n    \"mappedAttributeWithStringValue\": \"Mapped value\",\n    \"dateWithCustomFormat\": \"8/5/2011 1-56-04\",\n    \"nullTestAttribute\": null,\n    \"int64AsStringTestAttribute\": \"42\",\n    \"int32AsStringTestAttribute\": \"32\",\n    \"int16AsStringTestAttribute\": \"256\",\n    \"decimalAsStringTestAttribute\": \"1.2\",\n    \"doubleAsStringTestAttribute\": \"124.3\",\n    \"floatAsStringTestAttribute\": \"10000000000\",\n    \"numberAsStringTestAttribute\" : 10248909829,\n    \"booleanAsStringTestAttribute\": \"true\",\n    \"unixTimeTestAttribute\" : 1388349428,\n    \"unixTime13TestAttribute\" : 1388349427543\n}"
  },
  {
    "path": "Tests/Fixtures/SingleEntityWithNoRelationships.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>numberAsStringTestAttribute</key>\n\t<integer>10248909829</integer>\n\t<key>int64TestAttribute</key>\n\t<integer>10158365420975381</integer>\n\t<key>stringTestAttribute</key>\n\t<string>This is a test value</string>\n\t<key>int32TestAttribute</key>\n\t<integer>32</integer>\n\t<key>int16TestAttribute</key>\n\t<integer>256</integer>\n\t<key>decimalTestAttribute</key>\n\t<real>1.2</real>\n\t<key>doubleTestAttribute</key>\n\t<real>124.3</real>\n\t<key>floatTestAttribute</key>\n\t<integer>10000000000</integer>\n\t<key>booleanTestAttribute</key>\n\t<false/>\n\t<key>dateTestAttribute</key>\n\t<date>2011-07-24T04:30:40Z</date>\n\t<key>colorTestAttribute</key>\n\t<string>rgba(64,128,225,1)</string>\n\t<key>mappedAttributeWithStringValue</key>\n\t<string>Mapped value</string>\n\t<key>dateWithCustomFormat</key>\n\t<string>8/5/2011 1-56-04 AM</string>\n\t<key>nullTestAttribte</key>\n\t<string></string>\n\t<key>booleanAsStringTestAttribute</key>\n\t<string>true</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Tests/Fixtures/SingleRelatedEntity.json",
    "content": "{\n    \"testAbstractToOneRelationship\":\n    {\n        \"sampleBaseAttribute\": \"This should be imported as: BASE ATTRIBUTE TEST\",\n        \"sampleConcreteAttribute\": \"This should be imported as: DESCENDANT ATTRIBUTE TEST\"\n    }\n    ,\n    \"testAbstractToManyRelationship\":\n    [\n         {\n             \"sampleBaseAttribute\": \"Import as BASE ATTRIBUTE TEST 1\",\n             \"sampleConcreteAttribute\": \"Import as DESCENDANT ATTRIBUTE TEST 1\"\n         }\n         ,\n         {\n             \"sampleBaseAttribute\": \"Import as BASE ATTRIBUTE TEST 2\",\n             \"sampleConcreteAttribute\": \"Import as DESCENDANT ATTRIBUTE TEST 2\"\n         }\n    ]\n    ,\n    \"testConcreteToOneRelationship\":\n    {\n        \"sampleBaseAttribute\": \"Import as BASE ATTRIBUTE TEST\",\n        \"sampleConcreteAttribute\": \"Import as DESCENDANT ATTRIBUTE TEST\"\n    }\n    ,\n    \"testConcreteToManyRelationship\":\n    [\n        {\n            \"sampleBaseAttribute\": \"Import as BASE ATTRIBUTE TEST 1\",\n            \"sampleConcreteAttribute\": \"Import as DESCENDANT ATTRIBUTE TEST 1\"\n        }\n        ,\n         {\n         \"sampleBaseAttribute\": \"Import as BASE ATTRIBUTE TEST 2\",\n         \"sampleConcreteAttribute\": \"Import as DESCENDANT ATTRIBUTE TEST 2\"\n         }\n        ,\n         {\n         \"sampleBaseAttribute\": \"Import as BASE ATTRIBUTE TEST 3\",\n         \"sampleConcreteAttribute\": \"Import as DESCENDANT ATTRIBUTE TEST 3\"\n         }\n    ]\n}"
  },
  {
    "path": "Tests/Fixtures/TestModel/AbstractRelatedEntity.h",
    "content": "#import \"_AbstractRelatedEntity.h\"\n\n@interface AbstractRelatedEntity : _AbstractRelatedEntity {}\n// Custom logic goes here.\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/AbstractRelatedEntity.m",
    "content": "#import \"AbstractRelatedEntity.h\"\n\n@interface AbstractRelatedEntity ()\n\n// Private interface goes here.\n\n@end\n\n@implementation AbstractRelatedEntity\n\n// Custom logic goes here.\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/ConcreteRelatedEntity.h",
    "content": "#import \"_ConcreteRelatedEntity.h\"\n\n@interface ConcreteRelatedEntity : _ConcreteRelatedEntity {}\n// Custom logic goes here.\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/ConcreteRelatedEntity.m",
    "content": "#import \"ConcreteRelatedEntity.h\"\n\n@interface ConcreteRelatedEntity ()\n\n// Private interface goes here.\n\n@end\n\n@implementation ConcreteRelatedEntity\n\n// Custom logic goes here.\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/DifferentClassNameMapping.h",
    "content": "#import \"_DifferentClassNameMapping.h\"\n\n@interface DifferentClassNameMapping : _DifferentClassNameMapping {}\n// Custom logic goes here.\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/DifferentClassNameMapping.m",
    "content": "#import \"DifferentClassNameMapping.h\"\n\n@interface DifferentClassNameMapping ()\n\n// Private interface goes here.\n\n@end\n\n@implementation DifferentClassNameMapping\n\n// Custom logic goes here.\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/EntityWithoutEntityNameMethod.h",
    "content": "//\n//  Created by Tony Arnold on 11/04/2014.\n//  Copyright (c) 2014 Magical Panda Software LLC. All rights reserved.\n//\n\n#import <CoreData/CoreData.h>\n\n@interface EntityWithoutEntityNameMethod : NSManagedObject\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/EntityWithoutEntityNameMethod.m",
    "content": "//\n//  Created by Tony Arnold on 11/04/2014.\n//  Copyright (c) 2014 Magical Panda Software LLC. All rights reserved.\n//\n\n#import \"EntityWithoutEntityNameMethod.h\"\n\n@implementation EntityWithoutEntityNameMethod\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/MappedEntity.h",
    "content": "#import \"_MappedEntity.h\"\n\n@interface MappedEntity : _MappedEntity {}\n// Custom logic goes here.\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/MappedEntity.m",
    "content": "#import \"MappedEntity.h\"\n\n@interface MappedEntity ()\n\n// Private interface goes here.\n\n@end\n\n@implementation MappedEntity\n\n// Custom logic goes here.\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.h",
    "content": "#import \"_SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.h\"\n\n@interface SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey : _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey {}\n// Custom logic goes here.\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m",
    "content": "#import \"SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.h\"\n\n@interface SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey ()\n\n// Private interface goes here.\n\n@end\n\n@implementation SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey\n\n// Custom logic goes here.\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/SingleEntityRelatedToMappedEntityUsingDefaults.h",
    "content": "#import \"_SingleEntityRelatedToMappedEntityUsingDefaults.h\"\n\n@interface SingleEntityRelatedToMappedEntityUsingDefaults : _SingleEntityRelatedToMappedEntityUsingDefaults {}\n// Custom logic goes here.\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/SingleEntityRelatedToMappedEntityUsingDefaults.m",
    "content": "#import \"SingleEntityRelatedToMappedEntityUsingDefaults.h\"\n\n@interface SingleEntityRelatedToMappedEntityUsingDefaults ()\n\n// Private interface goes here.\n\n@end\n\n@implementation SingleEntityRelatedToMappedEntityUsingDefaults\n\n// Custom logic goes here.\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.h",
    "content": "#import \"_SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.h\"\n\n@interface SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey : _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey {}\n// Custom logic goes here.\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m",
    "content": "#import \"SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.h\"\n\n@interface SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey ()\n\n// Private interface goes here.\n\n@end\n\n@implementation SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey\n\n// Custom logic goes here.\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.h",
    "content": "#import \"_SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.h\"\n\n@interface SingleEntityRelatedToMappedEntityWithNestedMappedAttributes : _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes {}\n// Custom logic goes here.\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m",
    "content": "#import \"SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.h\"\n\n@interface SingleEntityRelatedToMappedEntityWithNestedMappedAttributes ()\n\n// Private interface goes here.\n\n@end\n\n@implementation SingleEntityRelatedToMappedEntityWithNestedMappedAttributes\n\n// Custom logic goes here.\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/SingleEntityRelatedToMappedEntityWithSecondaryMappings.h",
    "content": "#import \"_SingleEntityRelatedToMappedEntityWithSecondaryMappings.h\"\n\n@interface SingleEntityRelatedToMappedEntityWithSecondaryMappings : _SingleEntityRelatedToMappedEntityWithSecondaryMappings {}\n// Custom logic goes here.\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/SingleEntityRelatedToMappedEntityWithSecondaryMappings.m",
    "content": "#import \"SingleEntityRelatedToMappedEntityWithSecondaryMappings.h\"\n\n@interface SingleEntityRelatedToMappedEntityWithSecondaryMappings ()\n\n// Private interface goes here.\n\n@end\n\n@implementation SingleEntityRelatedToMappedEntityWithSecondaryMappings\n\n// Custom logic goes here.\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/SingleEntityWithNoRelationships.h",
    "content": "#import \"_SingleEntityWithNoRelationships.h\"\n\n@interface SingleEntityWithNoRelationships : _SingleEntityWithNoRelationships {}\n// Custom logic goes here.\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/SingleEntityWithNoRelationships.m",
    "content": "#import \"SingleEntityWithNoRelationships.h\"\n\n@interface SingleEntityWithNoRelationships ()\n\n// Private interface goes here.\n\n@end\n\n@implementation SingleEntityWithNoRelationships\n\n// Custom logic goes here.\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/SingleRelatedEntity.h",
    "content": "#import \"_SingleRelatedEntity.h\"\n\n@interface SingleRelatedEntity : _SingleRelatedEntity {}\n// Custom logic goes here.\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/SingleRelatedEntity.m",
    "content": "#import \"SingleRelatedEntity.h\"\n\n@interface SingleRelatedEntity ()\n\n// Private interface goes here.\n\n@end\n\n@implementation SingleRelatedEntity\n\n// Custom logic goes here.\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_AbstractRelatedEntity.h",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to AbstractRelatedEntity.h instead.\n\n#import <CoreData/CoreData.h>\n\nextern const struct AbstractRelatedEntityAttributes {\n\t__unsafe_unretained NSString *sampleBaseAttribute;\n} AbstractRelatedEntityAttributes;\n\n@interface AbstractRelatedEntityID : NSManagedObjectID {}\n@end\n\n@interface _AbstractRelatedEntity : NSManagedObject {}\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_;\n+ (NSString*)entityName;\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_;\n- (AbstractRelatedEntityID*)objectID;\n\n@property (nonatomic, strong) NSString* sampleBaseAttribute;\n\n//- (BOOL)validateSampleBaseAttribute:(id*)value_ error:(NSError**)error_;\n\n@end\n\n@interface _AbstractRelatedEntity (CoreDataGeneratedPrimitiveAccessors)\n\n- (NSString*)primitiveSampleBaseAttribute;\n- (void)setPrimitiveSampleBaseAttribute:(NSString*)value;\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_AbstractRelatedEntity.m",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to AbstractRelatedEntity.m instead.\n\n#import \"_AbstractRelatedEntity.h\"\n\nconst struct AbstractRelatedEntityAttributes AbstractRelatedEntityAttributes = {\n\t.sampleBaseAttribute = @\"sampleBaseAttribute\",\n};\n\n@implementation AbstractRelatedEntityID\n@end\n\n@implementation _AbstractRelatedEntity\n\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription insertNewObjectForEntityForName:@\"AbstractRelatedEntity\" inManagedObjectContext:moc_];\n}\n\n+ (NSString*)entityName {\n\treturn @\"AbstractRelatedEntity\";\n}\n\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription entityForName:@\"AbstractRelatedEntity\" inManagedObjectContext:moc_];\n}\n\n- (AbstractRelatedEntityID*)objectID {\n\treturn (AbstractRelatedEntityID*)[super objectID];\n}\n\n@dynamic sampleBaseAttribute;\n\n@end\n\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_ConcreteRelatedEntity.h",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to ConcreteRelatedEntity.h instead.\n\n#import <CoreData/CoreData.h>\n#import \"AbstractRelatedEntity.h\"\n\nextern const struct ConcreteRelatedEntityAttributes {\n\t__unsafe_unretained NSString *sampleConcreteAttribute;\n} ConcreteRelatedEntityAttributes;\n\n@interface ConcreteRelatedEntityID : AbstractRelatedEntityID {}\n@end\n\n@interface _ConcreteRelatedEntity : AbstractRelatedEntity {}\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_;\n+ (NSString*)entityName;\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_;\n- (ConcreteRelatedEntityID*)objectID;\n\n@property (nonatomic, strong) NSString* sampleConcreteAttribute;\n\n//- (BOOL)validateSampleConcreteAttribute:(id*)value_ error:(NSError**)error_;\n\n@end\n\n@interface _ConcreteRelatedEntity (CoreDataGeneratedPrimitiveAccessors)\n\n- (NSString*)primitiveSampleConcreteAttribute;\n- (void)setPrimitiveSampleConcreteAttribute:(NSString*)value;\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_ConcreteRelatedEntity.m",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to ConcreteRelatedEntity.m instead.\n\n#import \"_ConcreteRelatedEntity.h\"\n\nconst struct ConcreteRelatedEntityAttributes ConcreteRelatedEntityAttributes = {\n\t.sampleConcreteAttribute = @\"sampleConcreteAttribute\",\n};\n\n@implementation ConcreteRelatedEntityID\n@end\n\n@implementation _ConcreteRelatedEntity\n\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription insertNewObjectForEntityForName:@\"ConcreteRelatedEntity\" inManagedObjectContext:moc_];\n}\n\n+ (NSString*)entityName {\n\treturn @\"ConcreteRelatedEntity\";\n}\n\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription entityForName:@\"ConcreteRelatedEntity\" inManagedObjectContext:moc_];\n}\n\n- (ConcreteRelatedEntityID*)objectID {\n\treturn (ConcreteRelatedEntityID*)[super objectID];\n}\n\n@dynamic sampleConcreteAttribute;\n\n@end\n\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_DifferentClassNameMapping.h",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to DifferentClassNameMapping.h instead.\n\n#import <CoreData/CoreData.h>\n\n@interface DifferentClassNameMappingID : NSManagedObjectID {}\n@end\n\n@interface _DifferentClassNameMapping : NSManagedObject {}\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_;\n+ (NSString*)entityName;\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_;\n- (DifferentClassNameMappingID*)objectID;\n\n@end\n\n@interface _DifferentClassNameMapping (CoreDataGeneratedPrimitiveAccessors)\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_DifferentClassNameMapping.m",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to DifferentClassNameMapping.m instead.\n\n#import \"_DifferentClassNameMapping.h\"\n\n@implementation DifferentClassNameMappingID\n@end\n\n@implementation _DifferentClassNameMapping\n\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription insertNewObjectForEntityForName:@\"EntityWithDifferentClassName\" inManagedObjectContext:moc_];\n}\n\n+ (NSString*)entityName {\n\treturn @\"EntityWithDifferentClassName\";\n}\n\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription entityForName:@\"EntityWithDifferentClassName\" inManagedObjectContext:moc_];\n}\n\n- (DifferentClassNameMappingID*)objectID {\n\treturn (DifferentClassNameMappingID*)[super objectID];\n}\n\n@end\n\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_MappedEntity.h",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to MappedEntity.h instead.\n\n#import <CoreData/CoreData.h>\n\nextern const struct MappedEntityAttributes {\n\t__unsafe_unretained NSString *mappedEntityID;\n\t__unsafe_unretained NSString *nestedAttribute;\n\t__unsafe_unretained NSString *sampleAttribute;\n\t__unsafe_unretained NSString *testMappedEntityID;\n} MappedEntityAttributes;\n\nextern const struct MappedEntityUserInfo {\n\t__unsafe_unretained NSString *relatedByAttribute;\n} MappedEntityUserInfo;\n\n@interface MappedEntityID : NSManagedObjectID {}\n@end\n\n@interface _MappedEntity : NSManagedObject {}\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_;\n+ (NSString*)entityName;\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_;\n- (MappedEntityID*)objectID;\n\n@property (nonatomic, strong) NSNumber* mappedEntityID;\n\n//- (BOOL)validateMappedEntityID:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSString* nestedAttribute;\n\n//- (BOOL)validateNestedAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSString* sampleAttribute;\n\n//- (BOOL)validateSampleAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSNumber* testMappedEntityID;\n\n//- (BOOL)validateTestMappedEntityID:(id*)value_ error:(NSError**)error_;\n\n@end\n\n@interface _MappedEntity (CoreDataGeneratedPrimitiveAccessors)\n\n- (NSNumber*)primitiveMappedEntityID;\n- (void)setPrimitiveMappedEntityID:(NSNumber*)value;\n\n- (NSString*)primitiveNestedAttribute;\n- (void)setPrimitiveNestedAttribute:(NSString*)value;\n\n- (NSString*)primitiveSampleAttribute;\n- (void)setPrimitiveSampleAttribute:(NSString*)value;\n\n- (NSNumber*)primitiveTestMappedEntityID;\n- (void)setPrimitiveTestMappedEntityID:(NSNumber*)value;\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_MappedEntity.m",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to MappedEntity.m instead.\n\n#import \"_MappedEntity.h\"\n\nconst struct MappedEntityAttributes MappedEntityAttributes = {\n\t.mappedEntityID = @\"mappedEntityID\",\n\t.nestedAttribute = @\"nestedAttribute\",\n\t.sampleAttribute = @\"sampleAttribute\",\n\t.testMappedEntityID = @\"testMappedEntityID\",\n};\n\nconst struct MappedEntityUserInfo MappedEntityUserInfo = {\n\t.relatedByAttribute = @\"mapped\",\n};\n\n@implementation MappedEntityID\n@end\n\n@implementation _MappedEntity\n\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription insertNewObjectForEntityForName:@\"MappedEntity\" inManagedObjectContext:moc_];\n}\n\n+ (NSString*)entityName {\n\treturn @\"MappedEntity\";\n}\n\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription entityForName:@\"MappedEntity\" inManagedObjectContext:moc_];\n}\n\n- (MappedEntityID*)objectID {\n\treturn (MappedEntityID*)[super objectID];\n}\n\n@dynamic mappedEntityID;\n\n@dynamic nestedAttribute;\n\n@dynamic sampleAttribute;\n\n@dynamic testMappedEntityID;\n\n@end\n\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.h",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.h instead.\n\n#import <CoreData/CoreData.h>\n\nextern const struct SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyAttributes {\n\t__unsafe_unretained NSString *testPrimaryKey;\n} SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyAttributes;\n\nextern const struct SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyRelationships {\n\t__unsafe_unretained NSString *mappedEntities;\n} SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyRelationships;\n\nextern const struct SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyUserInfo {\n\t__unsafe_unretained NSString *relatedByAttribute;\n} SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyUserInfo;\n\n@class MappedEntity;\n\n@interface SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyID : NSManagedObjectID {}\n@end\n\n@interface _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey : NSManagedObject {}\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_;\n+ (NSString*)entityName;\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_;\n- (SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyID*)objectID;\n\n@property (nonatomic, strong) NSNumber* testPrimaryKey;\n\n//- (BOOL)validateTestPrimaryKey:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSSet *mappedEntities;\n\n- (NSMutableSet*)mappedEntitiesSet;\n\n@end\n\n@interface _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey (MappedEntitiesCoreDataGeneratedAccessors)\n- (void)addMappedEntities:(NSSet*)value_;\n- (void)removeMappedEntities:(NSSet*)value_;\n- (void)addMappedEntitiesObject:(MappedEntity*)value_;\n- (void)removeMappedEntitiesObject:(MappedEntity*)value_;\n@end\n\n@interface _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey (CoreDataGeneratedPrimitiveAccessors)\n\n- (NSNumber*)primitiveTestPrimaryKey;\n- (void)setPrimitiveTestPrimaryKey:(NSNumber*)value;\n\n- (NSMutableSet*)primitiveMappedEntities;\n- (void)setPrimitiveMappedEntities:(NSMutableSet*)value;\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.m instead.\n\n#import \"_SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey.h\"\n\nconst struct SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyAttributes SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyAttributes = {\n\t.testPrimaryKey = @\"testPrimaryKey\",\n};\n\nconst struct SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyRelationships SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyRelationships = {\n\t.mappedEntities = @\"mappedEntities\",\n};\n\nconst struct SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyUserInfo SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyUserInfo = {\n\t.relatedByAttribute = @\"testPrimaryKey\",\n};\n\n@implementation SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyID\n@end\n\n@implementation _SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey\n\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription insertNewObjectForEntityForName:@\"SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey\" inManagedObjectContext:moc_];\n}\n\n+ (NSString*)entityName {\n\treturn @\"SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey\";\n}\n\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription entityForName:@\"SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey\" inManagedObjectContext:moc_];\n}\n\n- (SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyID*)objectID {\n\treturn (SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKeyID*)[super objectID];\n}\n\n@dynamic testPrimaryKey;\n\n@dynamic mappedEntities;\n\n- (NSMutableSet*)mappedEntitiesSet {\n\t[self willAccessValueForKey:@\"mappedEntities\"];\n\n\tNSMutableSet *result = (NSMutableSet*)[self mutableSetValueForKey:@\"mappedEntities\"];\n\n\t[self didAccessValueForKey:@\"mappedEntities\"];\n\treturn result;\n}\n\n@end\n\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_SingleEntityRelatedToMappedEntityUsingDefaults.h",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to SingleEntityRelatedToMappedEntityUsingDefaults.h instead.\n\n#import <CoreData/CoreData.h>\n\nextern const struct SingleEntityRelatedToMappedEntityUsingDefaultsAttributes {\n\t__unsafe_unretained NSString *singleEntityRelatedToMappedEntityUsingDefaultsID;\n} SingleEntityRelatedToMappedEntityUsingDefaultsAttributes;\n\nextern const struct SingleEntityRelatedToMappedEntityUsingDefaultsRelationships {\n\t__unsafe_unretained NSString *mappedEntity;\n} SingleEntityRelatedToMappedEntityUsingDefaultsRelationships;\n\n@class MappedEntity;\n\n@interface SingleEntityRelatedToMappedEntityUsingDefaultsID : NSManagedObjectID {}\n@end\n\n@interface _SingleEntityRelatedToMappedEntityUsingDefaults : NSManagedObject {}\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_;\n+ (NSString*)entityName;\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_;\n- (SingleEntityRelatedToMappedEntityUsingDefaultsID*)objectID;\n\n@property (nonatomic, strong) NSNumber* singleEntityRelatedToMappedEntityUsingDefaultsID;\n\n//- (BOOL)validateSingleEntityRelatedToMappedEntityUsingDefaultsID:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) MappedEntity *mappedEntity;\n\n//- (BOOL)validateMappedEntity:(id*)value_ error:(NSError**)error_;\n\n@end\n\n@interface _SingleEntityRelatedToMappedEntityUsingDefaults (CoreDataGeneratedPrimitiveAccessors)\n\n- (NSNumber*)primitiveSingleEntityRelatedToMappedEntityUsingDefaultsID;\n- (void)setPrimitiveSingleEntityRelatedToMappedEntityUsingDefaultsID:(NSNumber*)value;\n\n- (MappedEntity*)primitiveMappedEntity;\n- (void)setPrimitiveMappedEntity:(MappedEntity*)value;\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_SingleEntityRelatedToMappedEntityUsingDefaults.m",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to SingleEntityRelatedToMappedEntityUsingDefaults.m instead.\n\n#import \"_SingleEntityRelatedToMappedEntityUsingDefaults.h\"\n\nconst struct SingleEntityRelatedToMappedEntityUsingDefaultsAttributes SingleEntityRelatedToMappedEntityUsingDefaultsAttributes = {\n\t.singleEntityRelatedToMappedEntityUsingDefaultsID = @\"singleEntityRelatedToMappedEntityUsingDefaultsID\",\n};\n\nconst struct SingleEntityRelatedToMappedEntityUsingDefaultsRelationships SingleEntityRelatedToMappedEntityUsingDefaultsRelationships = {\n\t.mappedEntity = @\"mappedEntity\",\n};\n\n@implementation SingleEntityRelatedToMappedEntityUsingDefaultsID\n@end\n\n@implementation _SingleEntityRelatedToMappedEntityUsingDefaults\n\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription insertNewObjectForEntityForName:@\"SingleEntityRelatedToMappedEntityUsingDefaults\" inManagedObjectContext:moc_];\n}\n\n+ (NSString*)entityName {\n\treturn @\"SingleEntityRelatedToMappedEntityUsingDefaults\";\n}\n\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription entityForName:@\"SingleEntityRelatedToMappedEntityUsingDefaults\" inManagedObjectContext:moc_];\n}\n\n- (SingleEntityRelatedToMappedEntityUsingDefaultsID*)objectID {\n\treturn (SingleEntityRelatedToMappedEntityUsingDefaultsID*)[super objectID];\n}\n\n@dynamic singleEntityRelatedToMappedEntityUsingDefaultsID;\n\n@dynamic mappedEntity;\n\n@end\n\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.h",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.h instead.\n\n#import <CoreData/CoreData.h>\n\nextern const struct SingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyRelationships {\n\t__unsafe_unretained NSString *mappedEntity;\n} SingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyRelationships;\n\n@class MappedEntity;\n\n@interface SingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyID : NSManagedObjectID {}\n@end\n\n@interface _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey : NSManagedObject {}\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_;\n+ (NSString*)entityName;\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_;\n- (SingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyID*)objectID;\n\n@property (nonatomic, strong) MappedEntity *mappedEntity;\n\n//- (BOOL)validateMappedEntity:(id*)value_ error:(NSError**)error_;\n\n@end\n\n@interface _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey (CoreDataGeneratedPrimitiveAccessors)\n\n- (MappedEntity*)primitiveMappedEntity;\n- (void)setPrimitiveMappedEntity:(MappedEntity*)value;\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.m instead.\n\n#import \"_SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey.h\"\n\nconst struct SingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyRelationships SingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyRelationships = {\n\t.mappedEntity = @\"mappedEntity\",\n};\n\n@implementation SingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyID\n@end\n\n@implementation _SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey\n\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription insertNewObjectForEntityForName:@\"SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey\" inManagedObjectContext:moc_];\n}\n\n+ (NSString*)entityName {\n\treturn @\"SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey\";\n}\n\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription entityForName:@\"SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey\" inManagedObjectContext:moc_];\n}\n\n- (SingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyID*)objectID {\n\treturn (SingleEntityRelatedToMappedEntityUsingMappedPrimaryKeyID*)[super objectID];\n}\n\n@dynamic mappedEntity;\n\n@end\n\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.h",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.h instead.\n\n#import <CoreData/CoreData.h>\n\nextern const struct SingleEntityRelatedToMappedEntityWithNestedMappedAttributesRelationships {\n\t__unsafe_unretained NSString *mappedEntity;\n} SingleEntityRelatedToMappedEntityWithNestedMappedAttributesRelationships;\n\n@class MappedEntity;\n\n@interface SingleEntityRelatedToMappedEntityWithNestedMappedAttributesID : NSManagedObjectID {}\n@end\n\n@interface _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes : NSManagedObject {}\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_;\n+ (NSString*)entityName;\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_;\n- (SingleEntityRelatedToMappedEntityWithNestedMappedAttributesID*)objectID;\n\n@property (nonatomic, strong) MappedEntity *mappedEntity;\n\n//- (BOOL)validateMappedEntity:(id*)value_ error:(NSError**)error_;\n\n@end\n\n@interface _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes (CoreDataGeneratedPrimitiveAccessors)\n\n- (MappedEntity*)primitiveMappedEntity;\n- (void)setPrimitiveMappedEntity:(MappedEntity*)value;\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.m instead.\n\n#import \"_SingleEntityRelatedToMappedEntityWithNestedMappedAttributes.h\"\n\nconst struct SingleEntityRelatedToMappedEntityWithNestedMappedAttributesRelationships SingleEntityRelatedToMappedEntityWithNestedMappedAttributesRelationships = {\n\t.mappedEntity = @\"mappedEntity\",\n};\n\n@implementation SingleEntityRelatedToMappedEntityWithNestedMappedAttributesID\n@end\n\n@implementation _SingleEntityRelatedToMappedEntityWithNestedMappedAttributes\n\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription insertNewObjectForEntityForName:@\"SingleEntityRelatedToMappedEntityWithNestedMappedAttributes\" inManagedObjectContext:moc_];\n}\n\n+ (NSString*)entityName {\n\treturn @\"SingleEntityRelatedToMappedEntityWithNestedMappedAttributes\";\n}\n\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription entityForName:@\"SingleEntityRelatedToMappedEntityWithNestedMappedAttributes\" inManagedObjectContext:moc_];\n}\n\n- (SingleEntityRelatedToMappedEntityWithNestedMappedAttributesID*)objectID {\n\treturn (SingleEntityRelatedToMappedEntityWithNestedMappedAttributesID*)[super objectID];\n}\n\n@dynamic mappedEntity;\n\n@end\n\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_SingleEntityRelatedToMappedEntityWithSecondaryMappings.h",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to SingleEntityRelatedToMappedEntityWithSecondaryMappings.h instead.\n\n#import <CoreData/CoreData.h>\n\nextern const struct SingleEntityRelatedToMappedEntityWithSecondaryMappingsAttributes {\n\t__unsafe_unretained NSString *secondaryMappedAttribute;\n    __unsafe_unretained NSString *notImportedAttribute;\n} SingleEntityRelatedToMappedEntityWithSecondaryMappingsAttributes;\n\nextern const struct SingleEntityRelatedToMappedEntityWithSecondaryMappingsRelationships {\n\t__unsafe_unretained NSString *mappedRelationship;\n} SingleEntityRelatedToMappedEntityWithSecondaryMappingsRelationships;\n\n@class MappedEntity;\n\n@interface SingleEntityRelatedToMappedEntityWithSecondaryMappingsID : NSManagedObjectID {}\n@end\n\n@interface _SingleEntityRelatedToMappedEntityWithSecondaryMappings : NSManagedObject {}\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_;\n+ (NSString*)entityName;\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_;\n- (SingleEntityRelatedToMappedEntityWithSecondaryMappingsID*)objectID;\n\n@property (nonatomic, strong) NSString* secondaryMappedAttribute;\n\n//- (BOOL)validateSecondaryMappedAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSNumber *notImportedAttribute;\n\n//- (BOOL)validateNotImportedAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) MappedEntity *mappedRelationship;\n\n//- (BOOL)validateMappedRelationship:(id*)value_ error:(NSError**)error_;\n\n@end\n\n@interface _SingleEntityRelatedToMappedEntityWithSecondaryMappings (CoreDataGeneratedPrimitiveAccessors)\n\n- (NSNumber*)primitiveNotImportedAttribute;\n- (void)setPrimitiveNotImportedAttribute:(NSNumber*)value;\n\n- (NSString*)primitiveSecondaryMappedAttribute;\n- (void)setPrimitiveSecondaryMappedAttribute:(NSString*)value;\n\n- (MappedEntity*)primitiveMappedRelationship;\n- (void)setPrimitiveMappedRelationship:(MappedEntity*)value;\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_SingleEntityRelatedToMappedEntityWithSecondaryMappings.m",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to SingleEntityRelatedToMappedEntityWithSecondaryMappings.m instead.\n\n#import \"_SingleEntityRelatedToMappedEntityWithSecondaryMappings.h\"\n\nconst struct SingleEntityRelatedToMappedEntityWithSecondaryMappingsAttributes SingleEntityRelatedToMappedEntityWithSecondaryMappingsAttributes = {\n\t.secondaryMappedAttribute = @\"secondaryMappedAttribute\",\n    .notImportedAttribute = @\"notImportedAttribute\",\n};\n\nconst struct SingleEntityRelatedToMappedEntityWithSecondaryMappingsRelationships SingleEntityRelatedToMappedEntityWithSecondaryMappingsRelationships = {\n\t.mappedRelationship = @\"mappedRelationship\",\n};\n\n@implementation SingleEntityRelatedToMappedEntityWithSecondaryMappingsID\n@end\n\n@implementation _SingleEntityRelatedToMappedEntityWithSecondaryMappings\n\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription insertNewObjectForEntityForName:@\"SingleEntityRelatedToMappedEntityWithSecondaryMappings\" inManagedObjectContext:moc_];\n}\n\n+ (NSString*)entityName {\n\treturn @\"SingleEntityRelatedToMappedEntityWithSecondaryMappings\";\n}\n\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription entityForName:@\"SingleEntityRelatedToMappedEntityWithSecondaryMappings\" inManagedObjectContext:moc_];\n}\n\n- (SingleEntityRelatedToMappedEntityWithSecondaryMappingsID*)objectID {\n\treturn (SingleEntityRelatedToMappedEntityWithSecondaryMappingsID*)[super objectID];\n}\n\n- (id)valueForUndefinedKey:(NSString *)key\n{\n    if ([key isEqualToString:@\"secondaryMappedAttribute\"])\n    {\n        return self.secondaryMappedAttribute;\n    }\n    else if ([key isEqualToString:@\"notImportedAttribute\"])\n    {\n        return self.notImportedAttribute;\n    }\n\n    return nil;\n}\n\n@dynamic secondaryMappedAttribute;\n\n@dynamic notImportedAttribute;\n\n@dynamic mappedRelationship;\n\n@end\n\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_SingleEntityWithNoRelationships.h",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to SingleEntityWithNoRelationships.h instead.\n\n#import <Foundation/Foundation.h>\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n#import <UIKit/UIKit.h>\n#import <CoreData/CoreData.h>\n#else\n#import <Cocoa/Cocoa.h>\n#endif\n\nextern const struct SingleEntityWithNoRelationshipsAttributes {\n\t__unsafe_unretained NSString *booleanAsStringTestAttribute;\n\t__unsafe_unretained NSString *booleanTestAttribute;\n\t__unsafe_unretained NSString *colorTestAttribute;\n\t__unsafe_unretained NSString *dateTestAttribute;\n\t__unsafe_unretained NSString *dateWithCustomFormat;\n\t__unsafe_unretained NSString *decimalTestAttribute;\n\t__unsafe_unretained NSString *doubleTestAttribute;\n\t__unsafe_unretained NSString *floatTestAttribute;\n\t__unsafe_unretained NSString *int16TestAttribute;\n\t__unsafe_unretained NSString *int32TestAttribute;\n\t__unsafe_unretained NSString *int64TestAttribute;\n\t__unsafe_unretained NSString *mappedStringAttribute;\n\t__unsafe_unretained NSString *notInJsonAttribute;\n\t__unsafe_unretained NSString *nullTestAttribute;\n\t__unsafe_unretained NSString *numberAsStringTestAttribute;\n\t__unsafe_unretained NSString *stringTestAttribute;\n\t__unsafe_unretained NSString *unixTime13TestAttribute;\n\t__unsafe_unretained NSString *unixTimeTestAttribute;\n} SingleEntityWithNoRelationshipsAttributes;\n\n@interface SingleEntityWithNoRelationshipsID : NSManagedObjectID {}\n@end\n\n@interface _SingleEntityWithNoRelationships : NSManagedObject {}\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_;\n+ (NSString*)entityName;\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_;\n- (SingleEntityWithNoRelationshipsID*)objectID;\n\n@property (nonatomic, strong) NSNumber* booleanAsStringTestAttribute;\n\n//- (BOOL)validateBooleanAsStringTestAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSNumber* booleanTestAttribute;\n\n//- (BOOL)validateBooleanTestAttribute:(id*)value_ error:(NSError**)error_;\n\n#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n@property (nonatomic, strong) UIColor *colorTestAttribute;\n#else\n@property (nonatomic, strong) NSColor *colorTestAttribute;\n#endif\n\n//- (BOOL)validateColorTestAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSDate* dateTestAttribute;\n\n//- (BOOL)validateDateTestAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSDate* dateWithCustomFormat;\n\n//- (BOOL)validateDateWithCustomFormat:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSDecimalNumber* decimalTestAttribute;\n\n//- (BOOL)validateDecimalTestAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSNumber* doubleTestAttribute;\n\n//- (BOOL)validateDoubleTestAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSNumber* floatTestAttribute;\n\n//- (BOOL)validateFloatTestAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSNumber* int16TestAttribute;\n\n//- (BOOL)validateInt16TestAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSNumber* int32TestAttribute;\n\n//- (BOOL)validateInt32TestAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSNumber* int64TestAttribute;\n\n//- (BOOL)validateInt64TestAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSString* mappedStringAttribute;\n\n//- (BOOL)validateMappedStringAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSString* notInJsonAttribute;\n\n//- (BOOL)validateNotInJsonAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSNumber* nullTestAttribute;\n\n//- (BOOL)validateNullTestAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSString* numberAsStringTestAttribute;\n\n//- (BOOL)validateNumberAsStringTestAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSString* stringTestAttribute;\n\n//- (BOOL)validateStringTestAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSDate* unixTime13TestAttribute;\n\n//- (BOOL)validateUnixTime13TestAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSDate* unixTimeTestAttribute;\n\n//- (BOOL)validateUnixTimeTestAttribute:(id*)value_ error:(NSError**)error_;\n\n@end\n\n@interface _SingleEntityWithNoRelationships (CoreDataGeneratedPrimitiveAccessors)\n\n- (NSNumber*)primitiveBooleanAsStringTestAttribute;\n- (void)setPrimitiveBooleanAsStringTestAttribute:(NSNumber*)value;\n\n- (NSNumber*)primitiveBooleanTestAttribute;\n- (void)setPrimitiveBooleanTestAttribute:(NSNumber*)value;\n\n#if TARGET_OS_IPHONE\n- (UIColor *)primitiveColorTestAttribute;\n- (void)setPrimitiveColorTestAttribute:(UIColor *)value;\n#else\n- (NSColor *)primitiveColorTestAttribute;\n- (void)setPrimitiveColorTestAttribute:(NSColor *)value;\n#endif\n\n- (NSDate*)primitiveDateTestAttribute;\n- (void)setPrimitiveDateTestAttribute:(NSDate*)value;\n\n- (NSDate*)primitiveDateWithCustomFormat;\n- (void)setPrimitiveDateWithCustomFormat:(NSDate*)value;\n\n- (NSDecimalNumber*)primitiveDecimalTestAttribute;\n- (void)setPrimitiveDecimalTestAttribute:(NSDecimalNumber*)value;\n\n- (NSNumber*)primitiveDoubleTestAttribute;\n- (void)setPrimitiveDoubleTestAttribute:(NSNumber*)value;\n\n- (NSNumber*)primitiveFloatTestAttribute;\n- (void)setPrimitiveFloatTestAttribute:(NSNumber*)value;\n\n- (NSNumber*)primitiveInt16TestAttribute;\n- (void)setPrimitiveInt16TestAttribute:(NSNumber*)value;\n\n- (NSNumber*)primitiveInt32TestAttribute;\n- (void)setPrimitiveInt32TestAttribute:(NSNumber*)value;\n\n- (NSNumber*)primitiveInt64TestAttribute;\n- (void)setPrimitiveInt64TestAttribute:(NSNumber*)value;\n\n- (NSString*)primitiveMappedStringAttribute;\n- (void)setPrimitiveMappedStringAttribute:(NSString*)value;\n\n- (NSString*)primitiveNotInJsonAttribute;\n- (void)setPrimitiveNotInJsonAttribute:(NSString*)value;\n\n- (NSNumber*)primitiveNullTestAttribute;\n- (void)setPrimitiveNullTestAttribute:(NSNumber*)value;\n\n- (NSString*)primitiveNumberAsStringTestAttribute;\n- (void)setPrimitiveNumberAsStringTestAttribute:(NSString*)value;\n\n- (NSString*)primitiveStringTestAttribute;\n- (void)setPrimitiveStringTestAttribute:(NSString*)value;\n\n- (NSDate*)primitiveUnixTime13TestAttribute;\n- (void)setPrimitiveUnixTime13TestAttribute:(NSDate*)value;\n\n- (NSDate*)primitiveUnixTimeTestAttribute;\n- (void)setPrimitiveUnixTimeTestAttribute:(NSDate*)value;\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_SingleEntityWithNoRelationships.m",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to SingleEntityWithNoRelationships.m instead.\n\n#import \"_SingleEntityWithNoRelationships.h\"\n\nconst struct SingleEntityWithNoRelationshipsAttributes SingleEntityWithNoRelationshipsAttributes = {\n\t.booleanAsStringTestAttribute = @\"booleanAsStringTestAttribute\",\n\t.booleanTestAttribute = @\"booleanTestAttribute\",\n\t.colorTestAttribute = @\"colorTestAttribute\",\n\t.dateTestAttribute = @\"dateTestAttribute\",\n\t.dateWithCustomFormat = @\"dateWithCustomFormat\",\n\t.decimalTestAttribute = @\"decimalTestAttribute\",\n\t.doubleTestAttribute = @\"doubleTestAttribute\",\n\t.floatTestAttribute = @\"floatTestAttribute\",\n\t.int16TestAttribute = @\"int16TestAttribute\",\n\t.int32TestAttribute = @\"int32TestAttribute\",\n\t.int64TestAttribute = @\"int64TestAttribute\",\n\t.mappedStringAttribute = @\"mappedStringAttribute\",\n\t.notInJsonAttribute = @\"notInJsonAttribute\",\n\t.nullTestAttribute = @\"nullTestAttribute\",\n\t.numberAsStringTestAttribute = @\"numberAsStringTestAttribute\",\n\t.stringTestAttribute = @\"stringTestAttribute\",\n\t.unixTime13TestAttribute = @\"unixTime13TestAttribute\",\n\t.unixTimeTestAttribute = @\"unixTimeTestAttribute\",\n};\n\n@implementation SingleEntityWithNoRelationshipsID\n@end\n\n@implementation _SingleEntityWithNoRelationships\n\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription insertNewObjectForEntityForName:@\"SingleEntityWithNoRelationships\" inManagedObjectContext:moc_];\n}\n\n+ (NSString*)entityName {\n\treturn @\"SingleEntityWithNoRelationships\";\n}\n\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription entityForName:@\"SingleEntityWithNoRelationships\" inManagedObjectContext:moc_];\n}\n\n- (SingleEntityWithNoRelationshipsID*)objectID {\n\treturn (SingleEntityWithNoRelationshipsID*)[super objectID];\n}\n\n@dynamic booleanAsStringTestAttribute;\n\n@dynamic booleanTestAttribute;\n\n@dynamic colorTestAttribute;\n\n@dynamic dateTestAttribute;\n\n@dynamic dateWithCustomFormat;\n\n@dynamic decimalTestAttribute;\n\n@dynamic doubleTestAttribute;\n\n@dynamic floatTestAttribute;\n\n@dynamic int16TestAttribute;\n\n@dynamic int32TestAttribute;\n\n@dynamic int64TestAttribute;\n\n@dynamic mappedStringAttribute;\n\n@dynamic notInJsonAttribute;\n\n@dynamic nullTestAttribute;\n\n@dynamic numberAsStringTestAttribute;\n\n@dynamic stringTestAttribute;\n\n@dynamic unixTime13TestAttribute;\n\n@dynamic unixTimeTestAttribute;\n\n@end\n\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_SingleRelatedEntity.h",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to SingleRelatedEntity.h instead.\n\n#import <CoreData/CoreData.h>\n\nextern const struct SingleRelatedEntityAttributes {\n\t__unsafe_unretained NSString *mappedStringAttribute;\n} SingleRelatedEntityAttributes;\n\nextern const struct SingleRelatedEntityRelationships {\n\t__unsafe_unretained NSString *testAbstractToManyRelationship;\n\t__unsafe_unretained NSString *testAbstractToOneRelationship;\n\t__unsafe_unretained NSString *testConcreteToManyRelationship;\n\t__unsafe_unretained NSString *testConcreteToOneRelationship;\n} SingleRelatedEntityRelationships;\n\n@class AbstractRelatedEntity;\n@class AbstractRelatedEntity;\n@class ConcreteRelatedEntity;\n@class ConcreteRelatedEntity;\n\n@interface SingleRelatedEntityID : NSManagedObjectID {}\n@end\n\n@interface _SingleRelatedEntity : NSManagedObject {}\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_;\n+ (NSString*)entityName;\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_;\n- (SingleRelatedEntityID*)objectID;\n\n@property (nonatomic, strong) NSString* mappedStringAttribute;\n\n//- (BOOL)validateMappedStringAttribute:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSSet *testAbstractToManyRelationship;\n\n- (NSMutableSet*)testAbstractToManyRelationshipSet;\n\n@property (nonatomic, strong) AbstractRelatedEntity *testAbstractToOneRelationship;\n\n//- (BOOL)validateTestAbstractToOneRelationship:(id*)value_ error:(NSError**)error_;\n\n@property (nonatomic, strong) NSSet *testConcreteToManyRelationship;\n\n- (NSMutableSet*)testConcreteToManyRelationshipSet;\n\n@property (nonatomic, strong) ConcreteRelatedEntity *testConcreteToOneRelationship;\n\n//- (BOOL)validateTestConcreteToOneRelationship:(id*)value_ error:(NSError**)error_;\n\n@end\n\n@interface _SingleRelatedEntity (TestAbstractToManyRelationshipCoreDataGeneratedAccessors)\n- (void)addTestAbstractToManyRelationship:(NSSet*)value_;\n- (void)removeTestAbstractToManyRelationship:(NSSet*)value_;\n- (void)addTestAbstractToManyRelationshipObject:(AbstractRelatedEntity*)value_;\n- (void)removeTestAbstractToManyRelationshipObject:(AbstractRelatedEntity*)value_;\n@end\n\n@interface _SingleRelatedEntity (TestConcreteToManyRelationshipCoreDataGeneratedAccessors)\n- (void)addTestConcreteToManyRelationship:(NSSet*)value_;\n- (void)removeTestConcreteToManyRelationship:(NSSet*)value_;\n- (void)addTestConcreteToManyRelationshipObject:(ConcreteRelatedEntity*)value_;\n- (void)removeTestConcreteToManyRelationshipObject:(ConcreteRelatedEntity*)value_;\n@end\n\n@interface _SingleRelatedEntity (CoreDataGeneratedPrimitiveAccessors)\n\n- (NSString*)primitiveMappedStringAttribute;\n- (void)setPrimitiveMappedStringAttribute:(NSString*)value;\n\n- (NSMutableSet*)primitiveTestAbstractToManyRelationship;\n- (void)setPrimitiveTestAbstractToManyRelationship:(NSMutableSet*)value;\n\n- (AbstractRelatedEntity*)primitiveTestAbstractToOneRelationship;\n- (void)setPrimitiveTestAbstractToOneRelationship:(AbstractRelatedEntity*)value;\n\n- (NSMutableSet*)primitiveTestConcreteToManyRelationship;\n- (void)setPrimitiveTestConcreteToManyRelationship:(NSMutableSet*)value;\n\n- (ConcreteRelatedEntity*)primitiveTestConcreteToOneRelationship;\n- (void)setPrimitiveTestConcreteToOneRelationship:(ConcreteRelatedEntity*)value;\n\n@end\n"
  },
  {
    "path": "Tests/Fixtures/TestModel/_SingleRelatedEntity.m",
    "content": "// DO NOT EDIT. This file is machine-generated and constantly overwritten.\n// Make changes to SingleRelatedEntity.m instead.\n\n#import \"_SingleRelatedEntity.h\"\n\nconst struct SingleRelatedEntityAttributes SingleRelatedEntityAttributes = {\n\t.mappedStringAttribute = @\"mappedStringAttribute\",\n};\n\nconst struct SingleRelatedEntityRelationships SingleRelatedEntityRelationships = {\n\t.testAbstractToManyRelationship = @\"testAbstractToManyRelationship\",\n\t.testAbstractToOneRelationship = @\"testAbstractToOneRelationship\",\n\t.testConcreteToManyRelationship = @\"testConcreteToManyRelationship\",\n\t.testConcreteToOneRelationship = @\"testConcreteToOneRelationship\",\n};\n\n@implementation SingleRelatedEntityID\n@end\n\n@implementation _SingleRelatedEntity\n\n+ (id)insertInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription insertNewObjectForEntityForName:@\"SingleRelatedEntity\" inManagedObjectContext:moc_];\n}\n\n+ (NSString*)entityName {\n\treturn @\"SingleRelatedEntity\";\n}\n\n+ (NSEntityDescription*)entityInManagedObjectContext:(NSManagedObjectContext*)moc_ {\n\tNSParameterAssert(moc_);\n\treturn [NSEntityDescription entityForName:@\"SingleRelatedEntity\" inManagedObjectContext:moc_];\n}\n\n- (SingleRelatedEntityID*)objectID {\n\treturn (SingleRelatedEntityID*)[super objectID];\n}\n\n@dynamic mappedStringAttribute;\n\n@dynamic testAbstractToManyRelationship;\n\n- (NSMutableSet*)testAbstractToManyRelationshipSet {\n\t[self willAccessValueForKey:@\"testAbstractToManyRelationship\"];\n\n\tNSMutableSet *result = (NSMutableSet*)[self mutableSetValueForKey:@\"testAbstractToManyRelationship\"];\n\n\t[self didAccessValueForKey:@\"testAbstractToManyRelationship\"];\n\treturn result;\n}\n\n@dynamic testAbstractToOneRelationship;\n\n@dynamic testConcreteToManyRelationship;\n\n- (NSMutableSet*)testConcreteToManyRelationshipSet {\n\t[self willAccessValueForKey:@\"testConcreteToManyRelationship\"];\n\n\tNSMutableSet *result = (NSMutableSet*)[self mutableSetValueForKey:@\"testConcreteToManyRelationship\"];\n\n\t[self didAccessValueForKey:@\"testConcreteToManyRelationship\"];\n\treturn result;\n}\n\n@dynamic testConcreteToOneRelationship;\n\n@end\n\n"
  },
  {
    "path": "Tests/Fixtures/TestModel.xcdatamodeld/TestModel.xcdatamodel/contents",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model userDefinedModelVersionIdentifier=\"\" type=\"com.apple.IDECoreDataModeler.DataModel\" documentVersion=\"1.0\" lastSavedToolsVersion=\"6208.6\" systemVersion=\"14A298i\" minimumToolsVersion=\"Automatic\" macOSVersion=\"Automatic\" iOSVersion=\"Automatic\">\n    <entity name=\"AbstractRelatedEntity\" representedClassName=\"AbstractRelatedEntity\" isAbstract=\"YES\" syncable=\"YES\">\n        <attribute name=\"sampleBaseAttribute\" optional=\"YES\" attributeType=\"String\" syncable=\"YES\"/>\n    </entity>\n    <entity name=\"ConcreteRelatedEntity\" representedClassName=\"ConcreteRelatedEntity\" parentEntity=\"AbstractRelatedEntity\" syncable=\"YES\">\n        <attribute name=\"sampleConcreteAttribute\" optional=\"YES\" attributeType=\"String\" syncable=\"YES\"/>\n    </entity>\n    <entity name=\"EntityWithDifferentClassName\" representedClassName=\"DifferentClassNameMapping\" syncable=\"YES\"/>\n    <entity name=\"EntityWithoutEntityNameMethodWithASuffix\" representedClassName=\"EntityWithoutEntityNameMethod\" syncable=\"YES\"/>\n    <entity name=\"MappedEntity\" representedClassName=\"MappedEntity\" syncable=\"YES\">\n        <attribute name=\"mappedEntityID\" optional=\"YES\" attributeType=\"Integer 16\" defaultValueString=\"0\" syncable=\"YES\"/>\n        <attribute name=\"nestedAttribute\" optional=\"YES\" attributeType=\"String\" syncable=\"YES\">\n            <userInfo>\n                <entry key=\"mappedKeyName\" value=\"attributeValue.nestedValue\"/>\n            </userInfo>\n        </attribute>\n        <attribute name=\"sampleAttribute\" optional=\"YES\" attributeType=\"String\" syncable=\"YES\"/>\n        <attribute name=\"testMappedEntityID\" optional=\"YES\" attributeType=\"Integer 64\" defaultValueString=\"0\" syncable=\"YES\">\n            <userInfo>\n                <entry key=\"mappedKeyName\" value=\"id\"/>\n            </userInfo>\n        </attribute>\n        <userInfo>\n            <entry key=\"relatedByAttribute\" value=\"mapped\"/>\n        </userInfo>\n    </entity>\n    <entity name=\"SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey\" representedClassName=\"SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey\" syncable=\"YES\">\n        <attribute name=\"testPrimaryKey\" optional=\"YES\" attributeType=\"Integer 16\" defaultValueString=\"0\" syncable=\"YES\"/>\n        <relationship name=\"mappedEntities\" optional=\"YES\" toMany=\"YES\" deletionRule=\"Cascade\" destinationEntity=\"MappedEntity\" syncable=\"YES\">\n            <userInfo>\n                <entry key=\"relatedByAttribute\" value=\"testMappedEntityID\"/>\n            </userInfo>\n        </relationship>\n        <userInfo>\n            <entry key=\"relatedByAttribute\" value=\"testPrimaryKey\"/>\n        </userInfo>\n    </entity>\n    <entity name=\"SingleEntityRelatedToMappedEntityUsingDefaults\" representedClassName=\"SingleEntityRelatedToMappedEntityUsingDefaults\" syncable=\"YES\">\n        <attribute name=\"singleEntityRelatedToMappedEntityUsingDefaultsID\" optional=\"YES\" attributeType=\"Integer 16\" defaultValueString=\"0\" syncable=\"YES\"/>\n        <relationship name=\"mappedEntity\" optional=\"YES\" minCount=\"1\" maxCount=\"1\" deletionRule=\"Cascade\" destinationEntity=\"MappedEntity\" syncable=\"YES\"/>\n    </entity>\n    <entity name=\"SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey\" representedClassName=\"SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey\" syncable=\"YES\">\n        <relationship name=\"mappedEntity\" optional=\"YES\" minCount=\"1\" maxCount=\"1\" deletionRule=\"Cascade\" destinationEntity=\"MappedEntity\" syncable=\"YES\">\n            <userInfo>\n                <entry key=\"mappedKeyName\" value=\"someRandomAttributeName\"/>\n                <entry key=\"relatedByAttribute\" value=\"testMappedEntityID\"/>\n            </userInfo>\n        </relationship>\n    </entity>\n    <entity name=\"SingleEntityRelatedToMappedEntityWithNestedMappedAttributes\" representedClassName=\"SingleEntityRelatedToMappedEntityWithNestedMappedAttributes\" syncable=\"YES\">\n        <relationship name=\"mappedEntity\" optional=\"YES\" minCount=\"1\" maxCount=\"1\" deletionRule=\"Cascade\" destinationEntity=\"MappedEntity\" syncable=\"YES\"/>\n    </entity>\n    <entity name=\"SingleEntityRelatedToMappedEntityWithSecondaryMappings\" representedClassName=\"SingleEntityRelatedToMappedEntityWithSecondaryMappings\" syncable=\"YES\">\n        <attribute name=\"notImportedAttribute\" attributeType=\"Boolean\" defaultValueString=\"YES\" syncable=\"YES\"/>\n        <attribute name=\"secondaryMappedAttribute\" optional=\"YES\" attributeType=\"String\" syncable=\"YES\">\n            <userInfo>\n                <entry key=\"mappedKeyName\" value=\"no_in_use\"/>\n                <entry key=\"mappedKeyName.1\" value=\"getting_warmer\"/>\n                <entry key=\"mappedKeyName.2\" value=\"actualMappedKey\"/>\n            </userInfo>\n        </attribute>\n        <relationship name=\"mappedRelationship\" optional=\"YES\" minCount=\"1\" maxCount=\"1\" deletionRule=\"Cascade\" destinationEntity=\"MappedEntity\" syncable=\"YES\">\n            <userInfo>\n                <entry key=\"mappedKeyName\" value=\"not_in_use\"/>\n                <entry key=\"mappedKeyName.1\" value=\"almost_there\"/>\n                <entry key=\"mappedKeyName.2\" value=\"actualRelatedObject\"/>\n            </userInfo>\n        </relationship>\n    </entity>\n    <entity name=\"SingleEntityWithNoRelationships\" representedClassName=\"SingleEntityWithNoRelationships\" syncable=\"YES\">\n        <attribute name=\"booleanAsStringTestAttribute\" optional=\"YES\" attributeType=\"Boolean\" syncable=\"YES\"/>\n        <attribute name=\"booleanTestAttribute\" optional=\"YES\" attributeType=\"Boolean\" syncable=\"YES\"/>\n        <attribute name=\"colorTestAttribute\" optional=\"YES\" attributeType=\"Transformable\" syncable=\"YES\">\n            <userInfo>\n                <entry key=\"attributeValueClassName\" value=\"*Color\"/>\n            </userInfo>\n        </attribute>\n        <attribute name=\"dateTestAttribute\" optional=\"YES\" attributeType=\"Date\" syncable=\"YES\"/>\n        <attribute name=\"dateWithCustomFormat\" optional=\"YES\" attributeType=\"Date\" syncable=\"YES\">\n            <userInfo>\n                <entry key=\"dateFormat\" value=\"M/d/yyyy H-mm-ss\"/>\n            </userInfo>\n        </attribute>\n        <attribute name=\"decimalTestAttribute\" optional=\"YES\" attributeType=\"Decimal\" defaultValueString=\"0.0\" syncable=\"YES\"/>\n        <attribute name=\"doubleTestAttribute\" optional=\"YES\" attributeType=\"Double\" defaultValueString=\"0.0\" syncable=\"YES\"/>\n        <attribute name=\"floatTestAttribute\" optional=\"YES\" attributeType=\"Float\" defaultValueString=\"0\" syncable=\"YES\"/>\n        <attribute name=\"int16TestAttribute\" optional=\"YES\" attributeType=\"Integer 16\" defaultValueString=\"0\" syncable=\"YES\"/>\n        <attribute name=\"int32TestAttribute\" optional=\"YES\" attributeType=\"Integer 32\" defaultValueString=\"0\" syncable=\"YES\"/>\n        <attribute name=\"int64TestAttribute\" optional=\"YES\" attributeType=\"Integer 64\" defaultValueString=\"0\" syncable=\"YES\"/>\n        <attribute name=\"mappedStringAttribute\" optional=\"YES\" attributeType=\"String\" syncable=\"YES\">\n            <userInfo>\n                <entry key=\"mappedKeyName\" value=\"mappedAttributeWithStringValue\"/>\n            </userInfo>\n        </attribute>\n        <attribute name=\"notInJsonAttribute\" optional=\"YES\" attributeType=\"String\" defaultValueString=\"Set From Core Data Model Editor\" syncable=\"YES\"/>\n        <attribute name=\"nullTestAttribute\" optional=\"YES\" attributeType=\"Integer 64\" defaultValueString=\"100\" syncable=\"YES\"/>\n        <attribute name=\"numberAsStringTestAttribute\" optional=\"YES\" attributeType=\"String\" syncable=\"YES\"/>\n        <attribute name=\"stringTestAttribute\" optional=\"YES\" attributeType=\"String\" syncable=\"YES\"/>\n        <attribute name=\"unixTime13TestAttribute\" optional=\"YES\" attributeType=\"Date\" syncable=\"YES\">\n            <userInfo>\n                <entry key=\"dateFormat\" value=\"UnixTime\"/>\n            </userInfo>\n        </attribute>\n        <attribute name=\"unixTimeTestAttribute\" optional=\"YES\" attributeType=\"Date\" syncable=\"YES\"/>\n    </entity>\n    <entity name=\"SingleRelatedEntity\" representedClassName=\"SingleRelatedEntity\" syncable=\"YES\">\n        <attribute name=\"mappedStringAttribute\" optional=\"YES\" attributeType=\"String\" syncable=\"YES\"/>\n        <relationship name=\"testAbstractToManyRelationship\" optional=\"YES\" toMany=\"YES\" deletionRule=\"Cascade\" destinationEntity=\"AbstractRelatedEntity\" syncable=\"YES\">\n            <userInfo>\n                <entry key=\"relatedByAttribute\" value=\"sampleBaseAttribute\"/>\n            </userInfo>\n        </relationship>\n        <relationship name=\"testAbstractToOneRelationship\" optional=\"YES\" minCount=\"1\" maxCount=\"1\" deletionRule=\"Cascade\" destinationEntity=\"AbstractRelatedEntity\" syncable=\"YES\">\n            <userInfo>\n                <entry key=\"relatedByAttribute\" value=\"sampleBaseAttribute\"/>\n            </userInfo>\n        </relationship>\n        <relationship name=\"testConcreteToManyRelationship\" optional=\"YES\" toMany=\"YES\" deletionRule=\"Cascade\" destinationEntity=\"ConcreteRelatedEntity\" syncable=\"YES\">\n            <userInfo>\n                <entry key=\"relatedByAttribute\" value=\"sampleConcreteAttribute\"/>\n            </userInfo>\n        </relationship>\n        <relationship name=\"testConcreteToOneRelationship\" optional=\"YES\" minCount=\"1\" maxCount=\"1\" deletionRule=\"Cascade\" destinationEntity=\"ConcreteRelatedEntity\" syncable=\"YES\">\n            <userInfo>\n                <entry key=\"relatedByAttribute\" value=\"sampleConcreteAttribute\"/>\n            </userInfo>\n        </relationship>\n    </entity>\n    <elements>\n        <element name=\"AbstractRelatedEntity\" positionX=\"0\" positionY=\"0\" width=\"128\" height=\"60\"/>\n        <element name=\"ConcreteRelatedEntity\" positionX=\"0\" positionY=\"0\" width=\"128\" height=\"60\"/>\n        <element name=\"EntityWithDifferentClassName\" positionX=\"0\" positionY=\"0\" width=\"128\" height=\"45\"/>\n        <element name=\"EntityWithoutEntityNameMethodWithASuffix\" positionX=\"18\" positionY=\"144\" width=\"128\" height=\"45\"/>\n        <element name=\"MappedEntity\" positionX=\"0\" positionY=\"0\" width=\"128\" height=\"105\"/>\n        <element name=\"SingleEntityRelatedToManyMappedEntitiesUsingMappedPrimaryKey\" positionX=\"0\" positionY=\"0\" width=\"128\" height=\"75\"/>\n        <element name=\"SingleEntityRelatedToMappedEntityUsingDefaults\" positionX=\"0\" positionY=\"0\" width=\"128\" height=\"75\"/>\n        <element name=\"SingleEntityRelatedToMappedEntityUsingMappedPrimaryKey\" positionX=\"0\" positionY=\"0\" width=\"128\" height=\"60\"/>\n        <element name=\"SingleEntityRelatedToMappedEntityWithNestedMappedAttributes\" positionX=\"0\" positionY=\"0\" width=\"128\" height=\"60\"/>\n        <element name=\"SingleEntityRelatedToMappedEntityWithSecondaryMappings\" positionX=\"0\" positionY=\"0\" width=\"128\" height=\"90\"/>\n        <element name=\"SingleEntityWithNoRelationships\" positionX=\"0\" positionY=\"0\" width=\"128\" height=\"315\"/>\n        <element name=\"SingleRelatedEntity\" positionX=\"0\" positionY=\"0\" width=\"128\" height=\"118\"/>\n    </elements>\n</model>"
  },
  {
    "path": "Tests/Support/MagicalRecordTestHelpers.h",
    "content": "//\n//  Copyright (c) 2015 Magical Panda Software LLC. All rights reserved.\n\n#import <Foundation/Foundation.h>\n\n@interface MagicalRecordTestHelpers : NSObject\n\n+ (BOOL)removeStoreFilesForStoreAtURL:(NSURL *)storeURL;\n\n@end\n"
  },
  {
    "path": "Tests/Support/MagicalRecordTestHelpers.m",
    "content": "//\n//  Copyright (c) 2015 Magical Panda Software LLC. All rights reserved.\n\n#import \"MagicalRecordTestHelpers.h\"\n\n@implementation MagicalRecordTestHelpers\n\n+ (BOOL)removeStoreFilesForStoreAtURL:(NSURL *)storeURL\n{\n    NSString *rawURL = [storeURL absoluteString];\n    NSURL *shmSidecar = [NSURL URLWithString:[rawURL stringByAppendingString:@\"-shm\"]];\n    NSURL *walSidecar = [NSURL URLWithString:[rawURL stringByAppendingString:@\"-wal\"]];\n\n    BOOL success = YES;\n    success &= [[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil];\n    success &= [[NSFileManager defaultManager] removeItemAtURL:shmSidecar error:nil];\n    success &= [[NSFileManager defaultManager] removeItemAtURL:walSidecar error:nil];\n\n    return success;\n}\n\n\n@end\n"
  },
  {
    "path": "Tests/Support/MagicalRecordTests-OSX-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Tests/Support/MagicalRecordTests-OSX-Prefix.pch",
    "content": "//\n// Prefix header for all source files of the 'MagicalRecordTests' target in the 'MagicalRecordTests' project\n//\n\n#ifdef __OBJC__\n    #import <Cocoa/Cocoa.h>\n    #import \"MagicalRecord.h\"\n#endif\n"
  },
  {
    "path": "Tests/Support/MagicalRecordTests-iOS-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Tests/Support/MagicalRecordTests-iOS-Prefix.pch",
    "content": "//\n// Prefix header for all source files of the 'MagicalRecordTests' target in the 'MagicalRecordTests' project\n//\n\n#ifdef __OBJC__\n    #import <UIKit/UIKit.h>\n    #import <Foundation/Foundation.h>\n    #import <MagicalRecord/MagicalRecord.h>\n#endif\n"
  },
  {
    "path": "Tests/Support/MagicalRecordTests-tvOS-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>$(DEVELOPMENT_LANGUAGE)</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  }
]