Super Awesome Easy Fetching for Core Data!

Last update: Jun 21, 2022

Awesome MagicalRecord

Circle CI

In 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.

Active 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 wrapper class implements accessor methods or properties for each column in the table or view.

- Wikipedia

MagicalRecord was inspired by the ease of Ruby on Rails' Active Record fetching. The goals of this code are:

  • Clean up my Core Data related code
  • Allow for clear, simple, one-line fetches
  • Still allow the modification of the NSFetchRequest when request optimizations are needed

Status of the project

This project's activity has stopped, superseded by Core Data itself. Our latest versions available are:

  • MagicalRecord 2.4.0, a stable version, available from tag '2.4.0' or pod 'MagicalRecord', :git => 'https://github.com/magicalpanda/MagicalRecord'.
  • 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.

Documentation

Support

This project's activity has stopped. MagicalRecord is provided as-is, free of charge. For support, you have a few choices:

  • Ask your support question on Stack Overflow, and tag your question with MagicalRecord.
  • If you believe you have found a bug in MagicalRecord, please submit a support ticket on the GitHub Issues page for MagicalRecord or a pull request. Please do NOT ask general questions on the issue tracker. Support questions will be closed unanswered.
  • For more personal or immediate support, MagicalPanda is available for hire to consult on your project.

GitHub

https://github.com/magicalpanda/MagicalRecord
Comments
  • 1. Importing Data

    I'm getting a strange error (EXC_BAD_ACCESS by CFStringGetLength within NSManagedObject(MagicalRecord)MR_executeFetchRequest:inContext:) I can't make sense of when attempting to import data from a JSON file...

    NSManagedObjectContext *opContext = [NSManagedObjectContext MR_contextForCurrentThread];
    
        NSString *jsonPath = [[NSBundle mainBundle] pathForResource:@"DefaultData"
                                                             ofType:@"json"];
        NSData *data = [NSData dataWithContentsOfFile:jsonPath];
    
        NSError *parseError;
        NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&parseError];
    
        NSArray *dataTypes = [json objectForKey:@"dataTypes"];
    
        [MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext) {
            for (NSDictionary *obj in dataTypes) {
                DLog(@"%@", obj);
                [BTDataType MR_importFromObject:obj inContext:localContext];
            }
        }];
    
        NSError *saveError;
        [opContext save:&saveError];
    

    The entity is very simple, just two properties: importKey (int16) and name (String)...

    The JSON is like...

    { "dataTypes":[ { "importKey":1000, "name":"DataType A" }, { "importKey":1001, "name":"DataType B" }, { "importKey":1002, "name":"DataType C" }, { "importKey":1003, "name":"DataType D" } ] }

    Reviewed by emadd at 2013-08-08 19:19
  • 2. Referenced non-public APIs which caused AppStore rejection.

    First of all, great work on MagicalRecord. Coming from a ruby background, it made CoreData a whole lot easier.

    I had issues submitting my application this weekend and Apple's ApplicationLoader (the new one which scans private APIs) flagged the methods in this commit as issues (which caused rejection of binary). The error from Apple was:

    The app references non-public selectors in PocketSalsa.app/ PocketSalsa: entityInManagedObjectContext:, insertInManagedObjectContext.

    After editing my fork and making sure my edits worked, I resubmitted it and the binary it was finally accepted. There is probably a better fix for this, but I'm not an expert on MagicalRecord as you are.

    Thanks.

    Reviewed by apersaud at 2011-10-10 15:28
  • 3. Cocoapods 0.36 CocoaLumberjack error

    I upgraded my project to use Cocoapods 0.36 and I started to fix the errors that causes. One of the errors I was getting is the following:

    Undefined symbols for architecture x86_64:
      "_OBJC_CLASS_$_DDLog", referenced from:
          objc-class-ref in MagicalRecord+ErrorHandling.o
          objc-class-ref in NSManagedObject+MagicalDataImport.o
          objc-class-ref in NSManagedObject+MagicalRecord.o
          objc-class-ref in NSManagedObjectContext+MagicalObserving.o
          objc-class-ref in NSManagedObjectContext+MagicalRecord.o
          objc-class-ref in NSManagedObjectContext+MagicalSaves.o
          objc-class-ref in NSObject+MagicalDataImport.o
          ...
    

    In my project I have both CocoaLumberjack as MagicalRecord in my Podfile. I solved it by adding CocoaLumberjack.framework to the Link Binary With Libraries in the Pods-MagicalRecord target my Pods project has, but I am not sure that is the way to go.

    Reviewed by depl0y at 2015-03-25 05:57
  • 4. Starting MagicalRecord hangs, unrecognized selector "swizzleShorthandMethods".

    In a Mac OS application running on 10.8, I call [MagicalRecord setupCoreDataStack] in my applicationDidFinishLaunching: method.

    There are no errors or warnings in Xcode, I've got MR_SHORTHAND defined in my PCH file, and I've done a clean build.

    With a breakpoint on that line I'm unable to go down into the method call, which would imply that the problem is happening in the initialization of the class MagicalRecord, which from looking around issues here seems to be where the method swizzling is performed.

    If I disable MR_SHORTHAND it seems to work, but I'm not sure why this is the case. I'm importing MagicalRecord in each implementation file I want to use it in rather than putting it in the PCH, but even if it's put in the PCH after MR_SHORTHAND, it makes no difference.

    Why is it not finding the method? A breakpoint on [self swizzleShorthandMethods] in MagicalRecord.m is hit, so it's definitely defined.

    Why would this problem cause MagicalRecord to just hang? Surely it should just not swizzle the methods, or at the worst, crash because the selector wasn't recognised?

    Other info: using version 2.1 from CocoaPods.

    Reviewed by danpalmer at 2013-01-31 16:17
  • 5. ARC Memory Leak

    I have just joined a project with uses MagicRecord. I have run the app through instruments and get repeated leaks on the following code on the executeFetchRequest method:

    + (NSArray *)MR_executeFetchRequest:(NSFetchRequest *)request inContext:(NSManagedObjectContext *)context
    {
        __block NSArray *results = nil;
        [context performBlockAndWait:^
        {
            NSError *error = nil;
    
            results = [context executeFetchRequest:request error:&error];
    
            if (results == nil)
            {
                [MagicalRecord handleErrors:error];
            }
    
        }];
        return results;
    }
    

    I am new to MagicalRecord but any help you can give would be greatly appreciated.

    Thanks,

    Dean

    Reviewed by zenuviDev at 2014-09-04 12:52
  • 6. EXC_BAD_ACCESS when app is updated from App Store

    when an app is updated from the app store, it crashes at first launch (after the update) with the crash log below. This happens at the first attempt to save to the persistent store. deleting and re-installing the app fixes the issue - potentially related to Core Data migration issues?

    Remark: the core data stack is setup via setupCoreDataStackWithAutoMigratingSqliteStoreNamed:

    thanks for any hints!

    Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x00000008 Crashed Thread: 0

    Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 libsystem_kernel.dylib 0x3935f838 __kill + 8 1 APPNAME-TEST 0x001797dc CLSSignalHandler + 188 2 libsystem_c.dylib 0x392e0d38 _sigtramp + 40 3 Foundation 0x319e5b2c -[NSError dealloc] + 56 4 libobjc.A.dylib 0x38e69490 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 164 5 CoreFoundation 0x310b482c _CFAutoreleasePoolPop + 12 6 Foundation 0x319e6d86 -[NSAutoreleasePool drain] + 118 7 CoreData 0x30f6a6ac -[NSManagedObjectContext save:] + 1204 8 APPNAME-TEST 0x000f38f4 __70-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:]_block_invoke3 + 136 9 CoreData 0x30f6ddb6 developerSubmittedBlockToNSManagedObjectContextPerform + 86 10 CoreData 0x30f6dee6 -[NSManagedObjectContext performBlockAndWait:] + 90 11 APPNAME-TEST 0x000f3828 -[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:] + 248 12 APPNAME-TEST 0x00051c22 -BBModel storeInfo: 13 APPNAME-TEST 0x0004720a __29-[BBModel loadInfoWithBlock:]_block_invoke (BBModel.m:1608) 14 APPNAME-TEST 0x00094cb4 __74+[AFJSONRequestOperation JSONRequestOperationWithRequest:success:failure:]_block_invoke + 96 15 libdispatch.dylib 0x39286790 _dispatch_call_block_and_release + 8 16 libdispatch.dylib 0x392865d8 _dispatch_client_callout + 20 17 libdispatch.dylib 0x39289e40 _dispatch_main_queue_callback_4CF + 224 18 CoreFoundation 0x311451ac __CFRunLoopRun + 1284 19 CoreFoundation 0x310b8238 CFRunLoopRunSpecific + 352 20 CoreFoundation 0x310b80c4 CFRunLoopRunInMode + 100 21 GraphicsServices 0x34c97336 GSEventRunModal + 70 22 UIKit 0x32fd42b4 UIApplicationMain + 1116 23 APPNAME-TEST 0x0003cf0e main (main.m:16) 24 APPNAME-TEST 0x0003cec4 start + 36

    Reviewed by roland9 at 2013-04-14 20:32
  • 7. No shorthand in unit test

    I use magicalRecord in my project and i use it even inside UnitTest. But inside unit test shorthands are not recognized.

    I use cocoapod to manage dipendencies.

    Reviewed by ignazioc at 2013-01-05 11:39
  • 8. App Crashed - updating the older one which doesnot have coredata model to New ios Build which has Core data Model

    Using MagicalRecord for Coredata

    Please find the below crash logs

    Thread 0 Crashed: 0 libobjc.A.dylib 0x3b3e7626 objc_msgSend + 6 1 Foundation 0x31223028 -[NSError dealloc] + 56 2 libobjc.A.dylib 0x3b3ecb66 objc_object::sidetable_release(bool) + 170 3 libobjc.A.dylib 0x3b3ed0ce (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 354 4 CoreFoundation 0x308344bc _CFAutoreleasePoolPop + 12 5 Foundation 0x3122d8de -[NSAutoreleasePool drain] + 118 6 CoreData 0x30674fba -[NSManagedObjectContext save:] + 938 7 tibbr 0x002c7e16 0x5e000 + 2530838 8 CoreData 0x306d89ca developerSubmittedBlockToNSManagedObjectContextPerform + 86 9 CoreData 0x306d8b0e -[NSManagedObjectContext performBlockAndWait:] + 110 10 tibbr 0x002c7d66 0x5e000 + 2530662 11 CoreData 0x306d89ca developerSubmittedBlockToNSManagedObjectContextPerform + 86 12 CoreData 0x306d8b0e -[NSManagedObjectContext performBlockAndWait:] + 110

    I am Utilizing - saveUsingCurrentThreadContextWithBlockAndWait for saving the data synchronously

    Reviewed by sundarsan at 2014-05-16 11:22
  • 9. Odd behavior while managing multiple data stores

    I'm trying to convert multiple databases (made of plist files), into multiple core data databases, and am experiencing some odd behavior. (especially after the commit on Oct 2nd).

    I'm converting the databases with a loop preforming in a background thread and in the main thread;

    • I start in the background thread, creating a stack with setupCoreDataStackWithStoreNamed:.
    • Then I add all of my entities and save in the background thread.
    • Calling back to the main thread I preform [MagicalRecord cleanUp]; and release the background thread.
    • If I need to convert another database, I recreate the background thread, and preform these actions again.

    First, [MagicalRecord cleanUp] is not tearing down and deallocating the entire data stack. The same NSPersistentStoreCoordinator is reused each loop, and one the same three NSManagedObjectContexts that are created are reused each time. If I use NSLogs to check the values of these objects in MagicalRecord.h, they are set to nil after cleanUp, but during the start of the next loop they are recovered, and used again. Causing each separate database being saved to be saved to the first store that is created, and ignoring the last created store.

    Second, [NSManagedObjectContext MR_resetContextForCurrentThread]; or any similar reset method is not "forgetting" all of its NSManagedObjects. And when the context gets reused, all of the data from the previous database still exists.

    Third, before the October 2nd update, directly after calling [managedObjectContext MR_saveNestedContexts]; I was able to preform [NSManagedObjectContext MR_resetContextForCurrentThread]; immediately afterward without error. After October 2nd, If I reformed this method, on the next loop I would get an assertion failure *** Assertion failure in +[NSManagedObjectContext MR_defaultContext]

    Before this update it was my understanding that when MagicalRecord saves on a background thread, it copies the NSManagedObjectContext being saved. So I can edit the context after saving, and nothing would happen to the saving context. Has this changed?

    I tried to make this issue as non-application specific as I could. If you want to see what I'm doing specifically, I have a stackOverflow question with my code: http://stackoverflow.com/questions/12700590/switching-between-core-data-stores

    Reviewed by Marxon13 at 2012-10-03 20:58
  • 10. Provide a way to disable SQLite journalling mode

    Currently MagicalRecord uses the WAL journal_mode when creating an auto migrating store. Since I don't want to use that kind of journal_mode an option for disabling the WAL journal mode would be useful.

    Reviewed by sebromero at 2013-02-12 12:17
  • 11. Use MagicalRecord with another existing context in RestKit

    This is a question not an issue.

    I want to keep using my current RestKit while use MagicRecord for rest of fetches and updates. After I reading issue #156, I want to double check if I am doing correctly.

    NSManagedObjectContext* context = [[RKObjectManager sharedManager].objectStore managedObjectContextForCurrentThread];
    [MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:[XDBStore storeName]];
    [context setParentContext:[NSManagedObjectContext MR_defaultContext]];
    
    Reviewed by angeloh at 2012-07-16 08:08
  • 12. Causing crash when i run my project in Xcode 13

    It was all working fine till Xcode 12.5. But when i run my project on Xcode 13 ending up with the crash. Below is the crash log. Please help me out. Thanks in advance.

    2022-05-05 11:34:03.230149+0530 XXXXX[26651:2999865] -[NSKnownKeysDictionary1 objectID]: unrecognized selector sent to instance 0x600002cdbd00 2022-05-05 11:34:03.247575+0530 XXXXX[26651:2999865] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSKnownKeysDictionary1 objectID]: unrecognized selector sent to instance 0x600002cdbd00' *** First throw call stack: ( 0 CoreFoundation 0x00007fff203fbbb4 __exceptionPreprocess + 242 1 libobjc.A.dylib 0x00007fff2019ebe7 objc_exception_throw + 48 2 CoreFoundation 0x00007fff2040a821 +[NSObject(NSObject) instanceMethodSignatureForSelector:] + 0 3 CoreFoundation 0x00007fff204000bc forwarding + 1433 4 CoreFoundation 0x00007fff204021e8 _CF_forwarding_prep_0 + 120 5 CoreData 0x00007fff25b5f5d4 __82-[NSManagedObjectContext(_NestedContextSupport) executeRequest:withContext:error:]_block_invoke + 2820 6 CoreData 0x00007fff25b61a0d internalBlockToNSManagedObjectContextPerform + 89 7 libdispatch.dylib 0x00000001089cdc0c _dispatch_client_callout + 8 8 libdispatch.dylib 0x00000001089dd1f7 _dispatch_lane_barrier_sync_invoke_and_complete + 132 9 CoreData 0x00007fff25b48f4b _perform + 196 10 CoreData 0x00007fff25b5e999 -[NSManagedObjectContext(_NestedContextSupport) executeRequest:withContext:error:] + 175 11 CoreData 0x00007fff25b4bf04 -[NSManagedObjectContext executeFetchRequest:error:] + 898 12 XXXXX 0x0000000108053f33 __67+[NSManagedObject(MagicalRecord) MR_executeFetchRequest:inContext:]_block_invoke + 67 13 CoreData 0x00007fff25b52426 developerSubmittedBlockToNSManagedObjectContextPerform + 151 14 CoreData 0x00007fff25b52310 -[NSManagedObjectContext performBlockAndWait:] + 197 15 XXXXX 0x0000000108053d9f +[NSManagedObject(MagicalRecord) MR_executeFetchRequest:inContext:] + 319 16 XXXXX 0x000000010805402f +[NSManagedObject(MagicalRecord) MR_executeFetchRequest:] + 127 17 XXXXX 0x0000000107ddb73c -[function] + 2380 18 XXXXX 0x0000000107dd9943 -[function] + 355 19 XXXXX 0x0000000107dd9114 __49-[function]_block_invoke + 324 20 XXXXX 0x0000000107cba301 __111-[NetworkAPIManager(function)response:]_block_invoke.76 + 1249 21 XXXXX 0x000000010805ab9d __70-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:]_block_invoke_2 + 45 22 libdispatch.dylib 0x00000001089cca28 _dispatch_call_block_and_release + 12 23 libdispatch.dylib 0x00000001089cdc0c _dispatch_client_callout + 8 24 libdispatch.dylib 0x00000001089dc376 _dispatch_main_queue_callback_4CF + 1195 25 CoreFoundation 0x00007fff2036985d CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE + 9 26 CoreFoundation 0x00007fff203640ba __CFRunLoopRun + 2772 27 CoreFoundation 0x00007fff20363103 CFRunLoopRunSpecific + 567 28 GraphicsServices 0x00007fff2c851cd3 GSEventRunModal + 139 29 UIKitCore 0x00007fff24ffbe63 -[UIApplication _run] + 928 30 UIKitCore 0x00007fff25000a53 UIApplicationMain + 101 31 XXXXX 0x0000000107e6a098 main + 104 32 dyld 0x000000010884ae1e start_sim + 10 33 ??? 0x0000000000000001 0x0 + 1 ) libc++abi: terminating with uncaught exception of type NSException

    Crash is happening in below code part

    • (NSArray *) MR_executeFetchRequest:(NSFetchRequest *)request inContext:(NSManagedObjectContext *)context { __block NSArray *results = nil; [context performBlockAndWait:^{

        NSError *error = nil;
      
        results = [context executeFetchRequest:request error:&error];
      
        if (results == nil) 
        {
            [MagicalRecord handleErrors:error];
        }
      

      }]; return results; }

    Reviewed by Kiran-3172 at 2022-05-05 06:14
  • 13. version diff crash

    2022-04-27 17:23:06.088014+0800 demo[34168:2674622] → Saving <NSManagedObjectContext (0x282e2c750): MagicalRecord Default Context> on the main thread 2022-04-27 17:23:13.445435+0800 demo[34168:2674622] Error: Can't resolve how to assign objects to stores; Coordinator does not have any stores 2022-04-27 17:23:13.445983+0800 demo[34168:2674622] Error Message: 用来打开储存的型号配置与用来创建该储存的型号配置不兼容。 2022-04-27 17:23:13.446324+0800 demo[34168:2674622] Error Domain: NSCocoaErrorDomain 2022-04-27 17:23:13.447010+0800 demo[34168:2674622] Recovery Suggestion: (null) 2022-04-27 17:23:13.451494+0800 demo[34168:2674622] → Saving <NSManagedObjectContext (0x282e2c750): MagicalRecord Default Context> on the main thread 2022-04-27 17:23:13.451510+0800 demo[34168:2674847] → Saving <NSManagedObjectContext (0x282e2c410): MagicalRecord Root Saving Context> on a background thread

    crash

    Reviewed by korea1501541730 at 2022-04-27 09:27
  • 14. Invalid value for key 'relatedByAttribute'

    Invalid value for key 'relatedByAttribute' in 'ACFloor' entity. Remove this key or add attribute 'aCFloorID' Invalid value for key 'relatedByAttribute' in 'ACFloor' entity. Remove this key or add attribute 'aCFloorID' Invalid value for key 'relatedByAttribute' in 'ACFloor' entity. Remove this key or add attribute 'aCFloorID' image

    Reviewed by korea1501541730 at 2022-04-09 06:25
  • 15. How to get rid of “-Warc-performSelector-leaks” warning for Xcode12.5 with SEL IMP

    How to get rid of "-Warc-performSelector-leaks" warning with a argument based selector

    Old code resulting in deprecation error with Xcode12.5

    From the Magical Record repo.

    #pragma clang diagnostic push
    #pragma clang diagnostic ignored \
        "-Warc-performSelector-leaks"
            if (implementsShouldImport && !(BOOL)[self performSelector:shouldImportSelector withObject:relatedObjectData])
            {
                continue;
            }
    #pragma clang diagnostic pop
    

    Note: Ignoring the warning with #pragma clang diagnostic push isn't working.

    Updated Logic

            if (implementsShouldImport) {
                IMP shouldImportImplementation = [self methodForSelector:shouldImportSelector];
                BOOL (*func)(id, shouldImportSelector, id) = (void *)shouldImportImplementation;
                if (!func(id, shouldImportSelector, relatedObjectData)) {
                    continue;
                }
            }
    

    Resulting in two errors:

    • Type specifier missing, defaults to 'int' for BOOL (*func)(id, shouldImportSelector, id) = (void *)shouldImportImplementation;
    • Unexpected type name 'id': expected expression for line if (!func(id, shouldImportSelector, relatedObjectData)) {

    Adopting the answer here

    How to get rid of "Warc-performSelector-leaks" warning.

    Magical Record is unmaintained open source library that is resulting in error with Xcode12.5 compilation.

    Reviewed by angelaTen at 2021-06-02 20:26
  • 16. Use only numbers from git tags when creating CFBundleShortVersionString

    In the company I work with we use MagicalRecord and Carthage as a dependency manager. Due to this problem, we had to fork the repository with the modification described because we used tags in git in the following format: beta/202010111458 and when compiling MagicalRecord, this text was like CFBundleShortVersionString and resulted in the issue "This bundle is The value for key CFBundleShortVersionString 'beta/202010111458' in the Info.plist file must be a period-separated list of at most three non-negative integers.".

    So this modification in the set_version_information.sh script solves the problem and I think it might be interesting for other projects that use lib, as described in the issue #1259.

    Anyway, this PR is one of my contributions for Hacktoberfest 2020, so even if it's not merged, I would love it if a maintainer could add the hacktoberfest-accepted tag in PR if it is an interesting contribution. 😄

    Reviewed by mathocosta at 2020-10-11 18:08
A minimalistic, thread safe, non-boilerplate and super easy to use version of Active Record on Core Data.
A minimalistic, thread safe, non-boilerplate and super easy to use version of Active Record on Core Data.

Skopelos A minimalistic, thread-safe, non-boilerplate and super easy to use version of Active Record on Core Data. Simply all you need for doing Core

May 11, 2022
JSON to Core Data and back. Swift Core Data Sync.
JSON to Core Data and back. Swift Core Data Sync.

Notice: Sync was supported from it's creation back in 2014 until March 2021 Moving forward I won't be able to support this project since I'm no longer

Jun 8, 2022
Core Data Generator (CDG for short) is a framework for generation (using Sourcery) of Core Data entities from plain structs/classes/enums.
Core Data Generator (CDG for short) is a framework for generation (using Sourcery) of Core Data entities from plain structs/classes/enums.

Core Data Generator Introduction Features Supported platforms Installation CDG Setup RepositoryType ModelType DataStoreVersion MigrationPolicy Basic U

Feb 7, 2022
A powerful and elegant Core Data framework for Swift.
A powerful and elegant Core Data framework for Swift.

A powerful and elegant Core Data framework for Swift. Usage Beta version. New docs soon... Simple do that: let query = persistentContainer.viewContext

May 23, 2022
CloudCore is a framework that manages syncing between iCloud (CloudKit) and Core Data written on native Swift.
CloudCore is a framework that manages syncing between iCloud (CloudKit) and Core Data written on native Swift.

CloudCore CloudCore is a framework that manages syncing between iCloud (CloudKit) and Core Data written on native Swift. Features Leveraging NSPersist

Jun 23, 2022
Unleashing the real power of Core Data with the elegance and safety of Swift
 Unleashing the real power of Core Data with the elegance and safety of Swift

Unleashing the real power of Core Data with the elegance and safety of Swift Dependency managers Contact Swift 5.4: iOS 11+ / macOS 10.13+ / watchOS 4

Jun 25, 2022
JSQCoreDataKit - A swifter Core Data stack

JSQCoreDataKit A swifter Core Data stack About This library aims to do the following: Encode Core Data best practices, so you don't have to think "is

Jun 17, 2022
JustPersist is the easiest and safest way to do persistence on iOS with Core Data support out of the box.
JustPersist is the easiest and safest way to do persistence on iOS with Core Data support out of the box.

JustPersist JustPersist is the easiest and safest way to do persistence on iOS with Core Data support out of the box. It also allows you to migrate to

Mar 13, 2022
QueryKit, a simple type-safe Core Data query language.
QueryKit, a simple type-safe Core Data query language.

QueryKit QueryKit, a simple type-safe Core Data query language. Usage QuerySet<Person>(context, "Person")

Jun 16, 2022
HitList is a Swift App shows the implementation of Core Data.
HitList is a Swift App shows the implementation of Core Data.

HitList HitList is a Swift App shows the implementation of Core Data. It is the demo app of Ray Wenderlich's tech blog. For details please reference G

Dec 17, 2021
A synchronization framework for Core Data.

Core Data Ensembles Author: Drew McCormack Created: 29th September, 2013 Last Updated: 15th February, 2017 Ensembles 2 is now available for purchase a

Jun 12, 2022
Core Data code generation

mogenerator Visit the project's pretty homepage. Here's mogenerator's elevator pitch: mogenerator is a command-line tool that, given an .xcdatamodel f

Jun 21, 2022
A type-safe, fluent Swift library for working with Core Data
A type-safe, fluent Swift library for working with Core Data

Core Data Query Interface (CDQI) is a type-safe, fluent, intuitive library for working with Core Data in Swift. CDQI tremendously reduces the amount o

Jun 27, 2020
A feature-light wrapper around Core Data that simplifies common database operations.
A feature-light wrapper around Core Data that simplifies common database operations.

Introduction Core Data Dandy is a feature-light wrapper around Core Data that simplifies common database operations. Feature summary Initializes and m

May 11, 2022
The Big Nerd Ranch Core Data Stack
The Big Nerd Ranch Core Data Stack

BNR Core Data Stack The BNR Core Data Stack is a small Swift framework that makes it both easier and safer to use Core Data. A better fetched results

Jun 6, 2022
100% Swift Simple Boilerplate Free Core Data Stack. NSPersistentContainer
100% Swift Simple Boilerplate Free Core Data Stack. NSPersistentContainer

DATAStack helps you to alleviate the Core Data boilerplate. Now you can go to your AppDelegate remove all the Core Data related code and replace it wi

Jun 7, 2022
Example repo of working with Core Data in a SwiftUI application

CoreData in SwiftUI This repository serves many purpose. But mostly so I can experiment with Core Data in SwiftUI, and also so I can use it show my ap

Jan 30, 2022
This project server as a demo for anyone who wishes to learn Core Data in Swift.

CoreDataDemo This project server as a demo for anyone who wishes to learn Core Data in Swift. The purpose of this project is to help someone new to Co

May 3, 2022
SwiftUI - iOS notes App that integrates Core Data with SwiftUI App Life Cycle
SwiftUI - iOS notes App that integrates Core Data with SwiftUI App Life Cycle

Devote (Notes App) SwiftUI Masterclass project Integration between Core Data and SwiftUI App Life Cycle Custom Toggle style and checkbox Read, Update

Mar 16, 2022