CoreData 堆栈管理和快速查询语言库。
使用 CocoaPods
touch a Podfile 和添加
pod 'RHParrotData'
或克隆此仓库
将 "RHParrotData" 文件夹拖入您的项目,并导入 "RHParrotData.h"。
NSURL *momdURL = [[NSBundle mainBundle] URLForResource:$YOUR_MOMDFILENAME withExtension:@"momd"];
NSURL *appDocumentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *storeURL = [appDocumentsDirectory URLByAppendingPathComponent:$YOUR_DBNAME];
[RHDataAgent setupAgentWithMomdFile:momdURL andStoreURL:storeURL];
然后可以通过类方法 'agent' 获取 RHDataAgent 的实例。
RHQuery *query = [RHQuery queryWithEntity:@"Person"];
[query queryKey:@"name" op:RHEqual value:@"Kobe"];
id result = [query execute];
结果将为名字等于 "Kobe" 的人的数组。
RHQuery *sortQuery = [RHQuery queryWithEntity:@"Person"];
[sortQuery sort:@"age" ascending:NO];
id result = [sortQuery execute];
年龄将按降序排列。
RHQuery *queryAverageAge = [query same];
[queryAverageAge queryKey:@"age" function:RHAverage];
id result = [queryAverageAge execute];
same 表示查询同一实体。结果将是关于年龄的平均值;
RHQuery 也支持复合查询。
- (RHQuery *)OR:(RHQuery *)anoQuery;
- (RHQuery *)AND:(RHQuery *)anoQuery;
- (RHQuery *)NOT;
示例
RHQuery *orQuery = [queryStart OR:query]; //"name == Kobe" query above
id result = [orQuery execute];
结果将为包含 "$QUERY_START_CONDITION" 或 "name == Kobe" 对象的列表。
需要创建一个新的 RHDataImportor 实例,并使用
- (void)importEntity:(NSString *)entity
primaryKey:(NSString *)primaryKey
data:(NSArray *)data
insertHandler:(RHObjectSerializeHandler)insertHandler
updateHandler:(RHObjectSerializeHandler)updateHandler;
它将在后台 managedObjectContext 中导入数据,并将更改合并到主 managedObjectContext。
'RHQueryResultController' 类是 'NSFetchedResultController' 的子类。
使用 RHQuery 一起使用
RHQuery *query = ...
RHQueryResultController *qrc = [RHQueryResultController queryResultControllerWithQuery:query];
[qrc performQuery];
或使用 queryResultControllerWithQuery:sectionNameKeyPath:cacheName: 方法来支持部分或缓存。
代理是单例。其特性包括:
插入和更新
[[RHDataAgent agent] commit];
删除对象或对象
[[RHDataAgent agent] deleteObject:objToDelete];
[[RHDataAgent agent] deleteObjects:(NSArray *)objsToDelete];
执行 RHQuery
[[RHDataAgent agent] executeQuery:query];
撤销管理
- (void)undo;
- (void)redo;
- (void)rollback;
- (void)reset;
减少内存
- (void)reduceMemory;
算子枚举 | 比较 | 示例 |
---|---|---|
RHEqual | == | "name == Hanran" |
RHGreaterThan | > | "age > 20" |
RHLessThan | < | "年龄 < 40" |
RHGreaterOrEqual | >= | "价格 >= 100" |
RHLessOrEqual | <= | "价格 <= 1000" |
RHNot | != | "性别 != 女性" |
RHBetween | < lhs < | "价格 IN 100, 1000" |
RHBeginsWith | lhs 以 rhs 开头 | "Terry BEGINSWITH T" |
RHEndsWith | lhs 以 rhs 结尾 | "Terry ENDSWITH y" |
RHContains | lhs 包含 rhs | "Terry CONTAINS rr" |
RHLike | lhs 类似 rhs | "name LIKE[c] next" |
RHMatches | lhs 与 rhs 匹配 | "name MATCHES ^A.+e$". 正则表达式 |
RHIn | lhs 在 rhs 中 | "name IN Ben, Melissa, Nick" |
函数枚举 | 含义 |
---|---|
RHMax | 列的最大值 |
RHMin | 列的最小值 |
RHAverage | 平均值 |
RHSum | 总和 |
RHCount | 行数 |
Podspec 文件
文档
NSFetchResultController
日志工具
Swift 版本 (CoreDataParrot)
测试
完整示例
FMDB 版本
基本托管对象 (序列化)
MIT 许可协议 (MIT)
版权所有 (c) 2015 Hanran Liu
在此特此允许,免费提供给任何获得此软件和相关文档副本(以下简称"软件")的人士,在任何限制下(包括但不限于)处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供者提供软件的人士从事前述活动,前提是必须遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或大部分软件中。
软件按"原样"提供,没有任何形式的保证,明示或暗示的保证,包括但不限于对适销性、对特定目的的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何因合同行为、侵权或其他行为而产生的索赔、损害或其他责任承担责任,这些索赔、损害或其他责任是由于软件、软件的使用或其他处理引起的。