Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Additions and utilities to make it concurrency easier with the Core Data framework.

branch: master
README
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.
Something went wrong with that request. Please try again.