ActiveTouch 1.0.4

ActiveTouch 1.0.4

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2014年12月

Lucas Medeiros Leite维护。



 
依赖关系
CouchCocoa~> 1.0
TouchDB= 1.0
Mantle~> 1.0
Kiwi~> 2.0.6
 

  • Lucas Medeiros

ActiveTouch是使用TouchDB-iOS(适用于iOS的CouchDB实现)实现的ActiveRecord。

  • 为什么不使用CoreData?只是因为它是一个复杂的工具(与CoreData相比,TouchDB更简单)。

联系

Lucas Medeiros 开发

开发要求

安装Cocoapods

安装Cocoapods需要Ruby。

gem install cocoapods

有关Cocoapods的更多信息

Cocoapods

在您的Podfile中添加依赖项

platform :ios

...

pod 'ActiveTouch'

...

运行pod install以安装依赖项。

使用方法

  • 首先您需要在AppDelegate中设置数据库
#import "ATDatabaseContainer.h"

@implementation ATAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[ATDatabaseContainer sharedInstance] openDatabaseWithName:@"your_database_name"];
    return YES;
}
  • 创建一个继承自ATModel的类
#import <Foundation/Foundation.h>
#import "ATModel.h"

@interface Car : ATModel

@property (nonatomic, copy) NSString *model;
@property (nonatomic, copy) NSString *year;

@end
  • 获取所有车辆
[Car allWithSuccessBlock:^(NSArray *collection) {
    self.cars = [NSMutableArray arrayWithArray:collection];
    [self.tableView reloadData];
} withErrorBlock:^(NSError *error) {
    NSLog(@"Error: %@", error);
}];
  • 使用分页获取所有车辆
[Car allWithLimit:10 skipping:5 withSuccessBlock:^(NSArray *collection) {

} withErrorBlock:^(NSError *error) {

}];
  • 按_id查找
Car *car = [Car findById:@"12312-ASADSD"];
  • 验证模型

    ATModel有一个名为isValid的方法,它返回一个BOOL,默认返回YES。如果您想进行某种验证,您可以覆盖它并按您希望的验证模型。

  • 创建一辆车

Car *car = [[Car alloc] init];
car.model = @"aModel";
car.year = @"aYear";

[car createWithSuccessBlock:^{

} withErrorBlock:^(NSError *error) {

}];
  • 更新一辆车
[car updateWithSuccessBlock:^{

} withErrorBlock:^(NSError *error) {

}];
  • 销毁一辆车
[car destroyWithSuccessBlock:^{

} withErrorBlock:^(NSError *error) {

}];
  • 添加更多couch db视图

如果您想添加另一个couchdb视图,您可以像这样覆盖ATModel的+(void)registerViews方法

+ (void)registerViews
{
    [super registerViews];

    //Add another view here
}
  • 更改默认视图顺序

当您调用all方法时,它将按照_id对您的文档进行排序,如果您想改变排序顺序,可以这样操作

+ (NSArray *)sortOrder
{
    return @[ @"name", @"age" ];
}

测试

  • ActiveTouch支持运行集成测试。您需要设置您的kiwi规格如下
#import "ATDatabaseTestRunner.h"
#import "ATDatabaseContainer.h"
#import "Kiwi.h"

SPEC_BEGIN(ATModelIntegrationSpec)

beforeAll(^{
    [ATDatabaseTestRunner openTestDatabaseNamed:@"your_test_database"];
});

beforeEach(^{
    [ATDatabaseContainer stub:@selector(sharedInstance) andReturn:[ATDatabaseTestRunner databaseContainer]];
    [ATDatabaseTestRunner cleanDatabase];
});

afterAll(^{
    [ATDatabaseTestRunner removeDatabase];
});

SPEC_END
  • ActiveTouch还内置了一个kiwi验证器,用于验证目的
specify(^{
  [[model should] beValid];
});

一些注意事项

ATModel类继承自Git的Mantle中的MTLModel类,该类可以用来解析来自web服务调用返回的JSON,这使得与网络框架(如AFNetworking)的集成变得更容易。

需求

ActiveTouch 需要 iOS 5.x 或更高版本。

感谢

Eduardo Gurgel 提供了这个项目名称。

许可证

使用受MIT 许可协议规定,详情见 LICENSE 文件。