Skip to content

LFSCoreData is an iOS and MacOSX open-source library to help the developer to start Core Data Framework based applications easily.

License

Notifications You must be signed in to change notification settings

lafosca/LFSCoreData

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1aec5e4 · Jul 20, 2015

History

63 Commits
Mar 17, 2014
Jul 20, 2015
Jan 16, 2015
Jan 16, 2015
Feb 7, 2014
Jun 26, 2014
Jul 7, 2014
Jun 26, 2014
Jun 27, 2014
Jul 20, 2015
Feb 7, 2014
Jun 27, 2014
Feb 7, 2014

Repository files navigation

LFSCoreData

Version Platform Build Status

Description

LFSCoreData is an iOS and MacOSX open-source library to help the developer to start Core Data Framework based applications easily. Manage your application database bootstraping, saving in background and mapping from an API easily.

To run the example project; clone the repo, and run pod install from the Project directory first.

Features

  • Easy setup and clean AppDelegate
  • Easily import API data from JSON data
  • Custom field naming
  • Save in main context without affecting UI
  • Save in background in a NSOperationQueue

Get Started

Install LFSCoreData using Cocoapods

Podfile

platform :ios, '7.0'
pod 'LFSCoreData', '~> 1.0'

Setup

Before starting using LFSCoreData you should read this patterns, and create your entities in xcdatamodel:

Setup your project using LFCoreDataPatterns

Usage

Import one object

NSDictionary *object = @{ name: @"Son", surname: @"Goku" };
User *user = [User importObject:object inContext:[[LFDataModel sharedModel] mainContext]]; 

// Save context to be persistent
[[LFDataModel sharedModel] saveContext];

Basic import array using AFNetworking

...

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request 
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    
    [Tweet importFromArray:JSON[@"results"] inContext:[[LFDataModel sharedModel]mainContext]];
    
    // Save context to be persistent
	[[LFDataModel sharedModel] saveContext];
	
    [self updateTweetsInUI];
    
} failure:nil];

...

Import array in background

...

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request 
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

    [LFSaveInBackgroundOperation saveInBackgroundWithBlock:^(NSManagedObjectContext *backgroundContext) {
	    	[Tweet importFromArray:JSON[@"results"] inContext:backgroundContext];   
	    	
	    	//Save in background already executes save method, so here is not necessary 
    } completion:^{
            [self updateTweetsInUI];
    }];
    
    [self updateTweetsInUI];
    
} failure:nil];

…

Complex imports in background

...

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request 
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

    [LFSaveInBackgroundOperation saveInBackgroundWithBlock:^(NSManagedObjectContext *backgroundContext) {
    
	    Tweet *tweet = [Event objectForIdentifier:JSON[@"id"] 
				 		   inManagedObjectContext:backgroundContext
		  						    forEntityName:[Tweet entityName]];
	    
	    if (!tweet){
	        tweet = [Tweet insertInManagedObjectContext:backgroundContext];
	    }
	    tweet.tweetID = JSON[@"id"];
	    tweet.name =  [JSON[@"name"] uppercaseString];
	    
	    
    } completion:^{
            [self updateTweetsInUI];
    }];
    
    [self updateTweetsInUI];
    
} failure:nil];

…

Sync objects from array

This way you can delete all the elements in the database of the importing entity, except the ones you are importing now.

Can be useful when using LFSCoreData as a cache of your data and this data is volatile.

The usage is like this:

[Tweet importFromArray:yourArrayOfNewObjects
             inContext:[[LFSDataModel sharedModel] mainContext]
    deleteOtherObjects:YES];

Delete all objects of an entity

Now you can delete all objects for an specific entity like this:

[Tweet deleteAllObjects];

Author

LAFOSCA STUDIO S.L.

License

LFSCoreData is available under the MIT license. See the LICENSE file for more info.

About

LFSCoreData is an iOS and MacOSX open-source library to help the developer to start Core Data Framework based applications easily.

Resources

License

Stars

Watchers

Forks

Packages

No packages published