测试已测试 | ✓ |
语言语言 | 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文件。