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框架的高级分支以获取对where和orWhere查询构建函数以及update、remove和get辅助函数的访问权限,以便执行查询。
除了获取特定表的全部记录外,您还可以获取单个记录。与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类为例。
使用count、truncate、save和all函数完成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'
Android/iOS项目管理员
复制仓库,首先在添加pull request到我们的高级分支。
DataStore可在MIT许可证下使用。更多信息请参阅LICENSE文件。