DataStore 2.1.3

DataStore 2.1.3

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2016年5月

Christopher Miller 维护。



DataStore 2.1.3

  • 作者:
  • Christopher Miller

Data Store iOS

DataStore 是一个基于 Laravel 5.2 的 Eloquent ORM (适用于 iOS),同时也提供了一套美观、简单的 ActiveRecord 实现来处理您的数据存储。每个数据库表都对应一个 Model 对象,用于与同名表进行交互。Model 类允许我们在表中插入新记录、查询表中的数据,以及更新(或从表中删除)记录。

更多信息请参阅 Eloquent Model

设置

安装

DataStore 通过 CocoaPods 可用。安装它,只需将以下行添加到您的 Podfile 中

pod "DataStore"

定义模型

您可以将任何类更新为在 Objective-C 中实现 Model

@interface Flight : Model
@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSString *destination;
@end

@implementation Flight
@end

还可以在 Swift 中定义 Model 子类

class Flight : Model {
    var name: String?
    var destination: String?
}

基本插入/更新

要在数据库中创建新记录,只需创建一个您的 Model 子类的新实例,在该模型上设置属性,然后调用模型实例的 save 方法。

- (IBAction)bookFlight {

    Flight *flight = [[Flight alloc] init];
    flight.name = self.flightNumberLabel.text;
    flight.destination = self.flightDestinationLabel.text;

    [flight save];

    [self.navigationController popViewControllerAnimated:YES];
}

在上面的示例中,我们仅将航班的模型实例的名称和目的地属性赋值。当我们调用 save 方法时,将在数据库中插入一条记录。如果您对 Model 实例进行了另一次更改并再次保存它,它将更新数据库记录。

检索多条记录

现在我们已经看到了如何使用 save 方法来处理 Model,我们就可以开始从数据库中检索数据了。

接下来,我们将使用all函数查询与模型关联的数据库表中的所有记录。

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    NSArray * all = [Flight all];
    for (Flight* flight in all) {
        ...
    }
}

在这个示例中,我们简单地将飞行类的all函数返回的NSArray赋值。如您所见,通过单个函数调用,我们可以获取到特定数据库表的所有记录。

或者,如果您想查询子集,您将需要使用DataStore框架的高级分支以获取对whereorWhere查询构建函数以及updateremoveget辅助函数的访问权限,以便执行查询。

获取单个记录

除了获取特定表的全部记录外,您还可以获取单个记录。与all函数返回记录集合不同,find函数返回单个Model实例

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    Flight *flight = (Flight *)[Flight find:1];
    self.flightLabel.text = flight.name;
}

一旦您有了Model实例,您可以通过访问相应的属性来使用表中的列值。例如,上述示例中,我们从find函数获取了Flight实例,并开始访问Flight数据库表的name列。

获取聚合信息

您还可以访问由Model类提供的count函数。此函数返回适当的标量值,而不是完整的模型实例(或实例集合)

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    NSInteger count = [Flight count];
    self.flightCountLabel.text = [NSString stringWithFormat:@"%d Flight(s) Booked", count];
}

在本示例中,我们简单地将Flight模型类的count函数的count变量赋值,并将其报告给UI组件。

删除记录

要删除记录,请在模型实例上调用remove方法

- (IBAction)cancelFlight {

    Flight *flight = (Flight *)[Flight find:1];
    [flight remove];
}

或者,要删除数据库表中的所有记录,调用truncate函数

- (IBAction)cancelAllFlights {

    [Flight truncate];
}

示例项目

示例项目包含3个屏幕,显示基本的Model CRUD操作,以Flight类为例。

launch bookflight showflights

使用counttruncatesaveall函数完成CRUD操作。

如果您需要更多基本操作,高级分支包含更深入的Laravel Eloquent实现和示例项目。

要运行示例项目,请先克隆仓库,然后从示例目录运行pod install

git clone https://github.com/the-mac/data-store-ios.git
cd Example
pod install

要求

这个Pod使用的是FMDB框架,并且已经包含在示例项目的Podfile中。对于您自己的项目(和Podfile),我们的DataStore引用可能如下所示

platform :ios, '8.0'
target 'MyApp'
pod 'FMDB'
pod 'DataStore'

作者:Christopher Miller

Android/iOS项目管理员

贡献

当前贡献者

复制仓库,首先在添加pull request到我们的高级分支

许可证

DataStore可在MIT许可证下使用。更多信息请参阅LICENSE文件。