RHParrotData 0.1.5

RHParrotData 0.1.5

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后发布2015年3月

CocoaRannie 维护。



  • 作者:
  • 刘汉然

CoreData 堆栈管理和快速查询语言库。

Swift 版本

使用方法


安装

使用 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。

NSFetchedResultController

'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

在此特此允许,免费提供给任何获得此软件和相关文档副本(以下简称"软件")的人士,在任何限制下(包括但不限于)处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供者提供软件的人士从事前述活动,前提是必须遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或大部分软件中。

软件按"原样"提供,没有任何形式的保证,明示或暗示的保证,包括但不限于对适销性、对特定目的的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何因合同行为、侵权或其他行为而产生的索赔、损害或其他责任承担责任,这些索赔、损害或其他责任是由于软件、软件的使用或其他处理引起的。