CoreDataFullStack 0.4.3

CoreDataFullStack 0.4.3

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2016年4月

Gabriel Massana维护。



  • Gabriel Massana

CoreDataFullStack-iOS

是什么?

构建核心数据全栈的最简单方法。

堆栈

该项目堆栈由两个独立的托管对象上下文组成,它们都连接到同一持久存储协调器。

alt tag

所使用的核心数据堆栈遵循此文章中Florian Kugler的第三个示例

Florian Kugler的调查显示这种核心数据堆栈是最快的。

FetchedResultsController

与FRC一起使用核心数据很有意义。项目提供了适用于表格和集合视图的基本FRC实现。

访问核心数据

待办事项:项目将有一套访问对象的完整套件。

安装

Podfile

platform :ios, '8.0'
pod 'CoreDataFullStack', '~> 0.4'

然后,运行以下命令

$ pod install

老式方法

将文件夹/CoreDataFullStack-iOS拖入项目中。就这么简单。

如何

一般规则

要修改数据库(插入新对象、删除、更新),通过后台backgroundManagedObjectContext访问。

要检索数据以显示在UI中,通过主线程的managedObjectContext访问

重要

为了避免跨线程,使用performBlockAndWait:配合backgroundManagedObjectContext

    [[CDFCoreDataManager sharedInstance].backgroundManagedObjectContext performBlockAndWait:^
    {
        // Insert
        // Delete
        // Update
    }

转到“编辑方案.../ 参数/启动时传递的参数”并添加:-com.apple.CoreData.ConcurrencyDebug 1

该行将告诉您您的应用程序中是否存在跨线程情况。

为了避免问题,务必确保您的应用程序没有跨线程。

堆栈设置

//  AppDelegate.m

#import "CoreDataFullStack.h"

@interface AppDelegate () <CDFCoreDataManagerDelegate>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [CDFCoreDataManager sharedInstance].delegate = self;

    return YES;
}

#pragma mark - CDFCoreDataManagerDelegate

- (NSString *)coreDataModelName
{
    return @"ModelName";
}

插入

使用CoreData系统。这非常简单。

[[CDFCoreDataManager sharedInstance].backgroundManagedObjectContext performBlockAndWait:^
    {
        CDFHouse *firstHouse = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([CDFHouse class])
                                                             inManagedObjectContext:[CDFCoreDataManager sharedInstance].backgroundManagedObjectContext];

        firstHouse.houseID = @"0";
        firstHouse.town = @"London";

        CDFPerson *firstPerson = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([CDFPerson class])
                                                               inManagedObjectContext:[CDFCoreDataManager sharedInstance].backgroundManagedObjectContext];

        firstPerson.personID = @"0";
        firstPerson.name = @"John";
        firstPerson.house = firstHouse;

        [[CDFCoreDataManager sharedInstance].backgroundManagedObjectContext save:nil];
    }];

检索

    NSArray *entries = [CDFRetrievalService retrieveEntriesForEntityClass:[CDFHouse class] managedObjectContext:[CDFCoreDataManager sharedInstance].managedObjectContext];

删除

    [[CDFCoreDataManager sharedInstance].backgroundManagedObjectContext performBlockAndWait:^
     {
         [CDFDeletionService deleteEntriesForEntityClass:[CDFHouse class]
                                       saveAfterDeletion:YES
                                    managedObjectContext:[CDFCoreDataManager sharedInstance].backgroundManagedObjectContext];
     }];

计数

    NSArray *entries = [CDFRetrievalService retrieveEntriesForEntityClass:[CDFHouse class]
                                                     managedObjectContext:[CDFCoreDataManager sharedInstance].managedObjectContext];

许可证

CoreDataFullStack-iOS采用MIT许可证发布。请查阅名为LICENSE的文件。

版本

$ git tag -a 0.4.0 -m 'Version 0.4.0'

$ git push --tags

作者

Gabriel Massana

发现一个问题?

如果您遇到专门针对CoreDataFullStack-iOS的问题、有功能请求或想要分享意见,请在此处创建一个新问题