Additions and utilities to make it concurrency easier with the Core Data framework.
|CWCoreData.xcodeproj||Updated project to new Xcode|
|Classes||Updated project settings and commented away an unused variable.|
|Sample Classes||Updated to use new relative dependencies|
|Scripts||Updated to use new relative dependencies|
|README||Updated README to new relative subproject setup|
CWCoreData ========== Contains convinience additions to classes in CoreData in order to lazily create a managed object model, persistent store cordinator, and thread local managed object contexts when requested. Also have additions to NSInvocation to support calling with NSManagedObject instances over thread boundries. This project is created with the intent to be used as a sub-project for other Xcode project. Additionaly this project can be used as a git sub module. This project has a dependency to CWFoundation. This dependency in added as a relative sub-project at ../CWFoundation. You can clone this repo yourself or it will be cloned for you when building through the CWCoreDataEnsureDeps target. CWCoreData is weakly linked agains CWFoundation in order to avoid duplicate symbols if CWCoreData is used with other project that also have dependencies to CWFoundation. The result of this is that any project that links against CWCoreData must also link against CWFoundation explicitly. You add this project as a sub project in Xcode like this: 1. Add this project as a sub project to your project. 2. Make sure this project product (libCWCoreData.a) is a target member. 3. Make sure the subprojects product (libCWFoundation.a) is a target member. 4. Add the CWCoreData target as direct dependency. 5. Add ../** to user header search paths. 6. Add -all_load to other linker flags. The target PersistedXMLTranslator contains a modified version of the XMLTranslation sample app from CWFoundation. This version: * Use RSSItem, a NSManagedObject subclass, for RSS items. * Fetches RSS items to a second managed object context on a background thread. * Fetch logic is moved into the model layer, using Sync-Async Pair pattern. * Use a NSFetchedResultsController to back a table view. Functionality ============= The public headerfiles are the official source of documentation. This section only describes a subset of the main funcationality. * Lazy creation of shared NSManagedObjectModel and NSPersistenceStoreCordinator. * Lazy creation of thread local NSManagedObjectContext instances. - Saves propages to all contexts. - Contexts are properly removed when threads exits. * Convinience methods for fetching and creating NSManagedObjects. * Convinience methods for transfering NSManagedObjects across thread contexts. Licence ======= CWCoreData is open source licensed under New BSD Licence. The intent and purpose for this licence is that you are free to use CWCoreData for any purpose as long as you give attribution. Copyright (c) 2011, Jayway AB, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Jayway AB nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JAYWAY AB BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.