Giter Site home page Giter Site logo

andrebraga / mrfetchedresultscontroller Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hectr/mrfetchedresultscontroller

0.0 2.0 0.0 81 KB

Extensible drop-in replacement for NSFetchedResultsController.

License: MIT License

Objective-C 98.78% Ruby 1.22%

mrfetchedresultscontroller's Introduction

Version License Platform

MRFetchedResultsController

MRFetchedResultsController is a drop-in replacement for NSFetchedResultsController that works on Mac and iOS.

Its purpose is to provide an alternative that makes it possible to extend NSFetchedResultsController functionallity without having to deal with private APIs.

In apps ported to Mac OS X using Chameleon, MRFetchedResultsController addresses the lack of an implementation of NSFetchedResultsController for the platform by providing an alternative that can be used in both iOS and Mac versions of the apps.

Installation

CocoaPods

MRFetchedResultsController is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "MRFetchedResultsController"

Manually

Copy MRFetchedResultsController directory into your project.

Usage

After adding files under the MRFetchedResultsController folder to your project, you can use it as you would do with NSFetchedResultsController.

When extending MRFetchedResultsController, you can expose its private methods to categories and/or subclasses by importing MRFetchedResultsController+Internal.h.

When using the fetched results controller with UICollectionView you can handle content changes by implementing the method - (void)controller:(MRFetchedResultsController *)controller didChangeSections:(NSArray *)sectionChanges andObjects:(NSArray *)objectChanges in the delegate:

- (void)controller:(MRFetchedResultsController *)controller didChangeSections:(NSArray *)sectionChanges andObjects:(NSArray *)objectChanges
{
    [self.collectionView performBatchUpdates:^{
        for (id<MRFetchedResultsSectionChangeInfo> change in sectionChanges) {
            [change performUpdateInCollectionView:self.collectionView];
        }
        for (id<MRFetchedResultsObjectChangeInfo> change in objectChanges) {
            [change performUpdateInCollectionView:self.collectionView];
        }
    } completion:nil];
}

Extras

Besides the new delegate method that provides support for - [UICollectionView performBatchUpdates:completion:]; MRFetchedResultsController.h contains 3 extra properties -not present in NSFetchedResultsController.h- for fine-tuning the behaviour of the fetched results controller's change tracking:

// Changes in the context are not applied to the fetchedObjects array until applyFetchedObjectsChanges is set.
@property (nonatomic, assign) BOOL applyFetchedObjectsChanges;
// If set, changes in the context are not applied until the context is successfully saved.
@property (nonatomic, assign) BOOL changesAppliedOnSave;
// If set, it is used for notifying changes asynchronously.
@property (nonatomic, assign) dispatch_queue_t notifyChangesQueue;

License

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

Alternatives

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.