| 测试已测试 | ✓ |
| 语言语言 | Obj-CObjective C |
| 许可证 | MIT |
| 发布最后发布 | 2015年12月 |
由 Oliver Letterer 维护。
| 取决于 | |
| AFNetworking | ~> 3.0 |
| CloudBridge | ~> 1.4 |
CloudBridge 帮助同步您的 CoreData 管理对象与各种云后端,并带有对 RESTful JSON 后端和 CloudKit 的原生支持。
CloudBridge 在 NSManagedObject 上暴露以下便捷方法
+ (void)fetchObjectsMatchingPredicate:(NSPredicate *)predicate
withCompletionHandler:(void(^)(NSArray *fetchedObjects, NSError *error))completionHandler;
- (void)fetchObjectsForRelationship:(NSString *)relationship withCompletionHandler:(void(^)(NSArray *objects, NSError *error))completionHandler;
- (void)createWithCompletionHandler:(void(^)(id managedObject, NSError *error))completionHandler;
- (void)reloadWithCompletionHandler:(void(^)(id managedObject, NSError *error))completionHandler;
- (void)saveWithCompletionHandler:(void(^)(id managedObject, NSError *error))completionHandler;
- (void)deleteWithCompletionHandler:(void(^)(NSError *error))completionHandler;
这些方法可以从任何 NSManagedObjectContext 线程中进行调用,并通过管理对象的 CBRCloudBridge 进行路由。回调始终保证在主线程上交付。
要开始使用 NSManagedObject 上的便捷方法,您需要配置一个 CBRCloudBridge 实例。一个 CBRCloudBridge 实例负责在 CoreDataStack 与您的后端之间进行桥接。
因为设置正确并负责的 CoreData stack 可能具有挑战性,所以 CloudBridge 依赖于 SLCoreDataStack,它可以为您处理所有繁重的工作和边缘情况。将您的应用程序特定 CoreData stack 实现为一个 SLCoreDataStack 的子类。
@interface MyCoreDataStack : SLCoreDataStack
@end
@implementation MyCoreDataStack
- (NSString *)managedObjectModelName
{
return @"MyManagedObjectModel";
}
@end
与每个云后端的实际通信封装在一个符合 CBRCloudConnection 协议的对象中,并作为它自己的 CocoaPod 依赖项提供。
如果您想连接到 CloudKit 后端,请在 Podfile 中添加 pod 'CBRCloudKitConnection'。如果您想连接到 RESTful JSON 后端,请在 Podfile 中添加 pod 'CBRRESTConnection'。
更多相关信息可参阅 CBRRESTConnection 或 CBRCloudKitConnection 文档。
作为最后一步,按照以下方式设置 CloudBridge 栈:
CKDatabase *database = [CKContainer defaultContainer].privateCloudDatabase;
MyCoreDataStack *stack = [MyCoreDataStack sharedInstance];
CBRCloudKitConnection *connection = [[CBRCloudKitConnection alloc] initWithDatabase:database];
CBRCloudBridge *cloudBridge = [[CBRCloudBridge alloc] initWithCloudConnection:connection coreDataStack:stack];
[NSManagedObject setCloudBridge:cloudBridge];
NSURL *serverURL = ...;
MyCoreDataStack *stack = [MyCoreDataStack sharedInstance];
id<CBRPropertyMapping> propertyMapping = [[CBRUnderscoredPropertyMapping alloc] init];
CBRRESTConnection *connection = [[CBRRESTConnection alloc] initWithBaseURL:serverURL propertyMapping:propertyMapping];
CBRCloudBridge *cloudBridge = [[CBRCloudBridge alloc] initWithCloudConnection:connection coreDataStack:stack];
[NSManagedObject setCloudBridge:cloudBridge];
| 组件 | 状态 | 版本 | 许可证 | 平台 |
|---|---|---|---|---|
| CloudBridge | ||||
| CBRRESTConnection | ||||
| CBRCloudKitConnection | ||||
| CBRManagedObjectCache | ||||
| CBRManagedObjectFormViewController | ||||
| CBRRelationshipResolver |
Oliver Letterer, [email protected]
CloudBridge遵循MIT许可协议。更多信息请参阅LICENSE文件。