构建核心数据全栈的最简单方法。
该项目堆栈由两个独立的托管对象上下文组成,它们都连接到同一持久存储协调器。
所使用的核心数据堆栈遵循此文章中Florian Kugler的第三个示例此。
Florian Kugler的调查显示这种核心数据堆栈是最快的。
与FRC一起使用核心数据很有意义。项目提供了适用于表格和集合视图的基本FRC实现。
待办事项:项目将有一套访问对象的完整套件。
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的问题、有功能请求或想要分享意见,请在此处创建一个新问题。