DCModel 是核心数据 API 的轻量级简单抽象,同时适用于 iOS 和 Mac OS X,它是异步的。它从 active record(Ruby on Rails,你知道吗?)语法中借用,以使核心数据交互既有趣又简单。它还为您对象添加了主键验证以避免重复。我知道,你的大脑刚爆炸。看例子!
首先,我们像往常一样创建一个 NSManagedObject 的子类,但我们也导入了 DCModel。
#import "DCModel.h"
@interface User : NSManagedObject
@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *firstName;
@property(nonatomic,copy)NSString *lastName;
@property(nonatomic,strong)NSNumber *age;
@property(nonatomic,strong)NSNumber *employed;
@end
然后,对于命令
创建一个新对象并保存它
User *john = [User newObject];
john.name = @"John";
john.firstName = @"John";
john.lastName = @"Doe";
john.age = @22;
[john saveOrUpdate:^(id item){
NSLog(@"successfully saved %@",[item name]);
}failure:^(NSError* error){
NSLog(@"got an error, that is no good: %@",[error localizedDescription]);
}];
查找并删除所有 john
[User where:@"name == John" success:^(id items){
[User destroyObjects:items success:^{
NSLog(@"deleted all the John's!");
}failure:^(NSError* error){
NSLog(@"got an error, that is no good: %@",[error localizedDescription]);
}];
有几种搜索方法可以帮助您找到所需的内容
[User all:^(NSArray *items){
for(User* user in items)
NSLog(@"User name: %@ age: %@",user.name,user.age);
}];
我们确保所有这些操作都是完全异步和线程安全的。不再需要在后台线程中管理 coreData 对象上下文,并确保您不会在这个过程中死锁,只需用干净的语法进行操作。您只要专注于制作出色的应用。
好吧,那么我现在确信你想要了解我提到的主键验证。好吧,下面是
//add this to your implemention file of your NSManagedObject subclass (User.m in our example)
//return the property name of the key you want to be primary.
+(NSString*)primaryKey
{
return @"name";
}
完成。现在每当您保存对象时,它都会进行验证以确保在添加之前该对象不存在。
需要核心数据框架。
推荐使用 CocoaPods 包管理器安装 DCModel,因为它提供灵活的依赖关系管理和简单的安装。
通过 CocoaPods
如果您尚未安装 CocoaPods,请先安装它
$ [sudo] gem install cocoapods
$ pod setup
切换到您的 Xcode 项目的目录,并创建和编辑您的 Podfile,并添加 DCModel
$ cd /path/to/MyProject
$ touch Podfile
$ edit Podfile
platform :ios, '5.0'
# Or platform :osx, '10.7'
pod 'DCModel'
安装到您的项目中
$ pod install
从 .xcworkspace 文件(而不是通常的项目文件)打开您的项目
DCModel 在 Apache 许可证下发布。