iOS开发一行代码系列:一行搞定数据库

原理

iOS 和 SQL的对应关系

Model类结构      =>    SQL表结构

Model实例       =>  SQL表中的一行

Model实例的属性   =>   SQL表中的一列

Model和Table的对应

@interface TestModel :NSObject

@property (assign, nonatomic) NSInteger age;
@property (assign, nonatomic) CGFloat height;
@property (assign, nonatomic) long distance;
@property (assign, nonatomic) double maxDistance;
@property (assign, nonatomic) BOOL isOK;
@property (assign, nonatomic) char mChar;

@property (assign, nonatomic) CGRect rect;
@property (assign, nonatomic) CGPoint point;
@property (assign, nonatomic) CGSize size;
@property (assign, nonatomic) NSRange range;

@property (strong, nonatomic) NSNumber *number;
@property (strong, nonatomic) NSString *string;
@property (strong, nonatomic) UIColor *color;
@property (strong, nonatomic) NSDate *date;

@property (strong, nonatomic) NSData *data;// convert to data
@property (strong, nonatomic) NSValue *value;
@property (strong, nonatomic) UIImage *image;

@end

对应的表结构就是 TABLE TestModel (age type,height type,distance type,isOK type,mChar type,...)

方法

下面是一些可用的方法,还在完善中。。。

+(ModelToTableMap*)getModelToTableMap;

+(NSString*)getDBPath;
+(NSString*)getTableName;
+(NSArray*)getPrimaryKeys;

+(NSDictionary *)getPropertyToColumnMap;
+(NSDictionary *)getDefaultValueDictionary;
+(NSDictionary *)getLengthDictionary;
+(NSDictionary *)getCheckValueDictionary;
+(NSDictionary *)getIsUniqueDictionary;
+(NSDictionary *)getIsNotNullDictionary;

+(BOOL)shouldModelToTableMapContainParentProperties;
+(BOOL)shouldModelToTableMapContainSelfProperties;

+(NSString *)getDateFormatterString;
+(NSString *)getDBImagePathWithImageName:(NSString *)imgName ;
+(NSString *)getDBDataPathWithDataName:(NSString *)dataName;

+(BOOL)createTable;

+(BOOL)dropTable;

+(id)firstModelWhere:(NSObject *)where;
+(id)firstModelWhere:(NSObject *)where orderBy:(NSString*)orderBy ;

+(NSArray *)allModels;
+(NSArray *)findModelsWhere:(NSObject *)where;
+(NSArray *)findModelsWhere:(NSObject *)where orderBy:(NSString*)orderBy offset:(int)offset count:(int)count;

+(BOOL)insertModel:(NSObject *)model;
+(BOOL)insertModelWhenNotExists:(NSObject *)model;

+(BOOL)deleteModel:(NSObject *)model;
+(BOOL)deleteModelsWhere:(NSObject *)where;

+(BOOL)updateModelsWithModel:(NSObject *)model where:(NSObject *)where;
+(BOOL)updateModelsWithDictionary:(NSDictionary *)dic where:(NSObject *)where;

+(BOOL)isModelExists:(NSObject *)model;

- (BOOL)saveModel;
- (BOOL)deleteModel;
- (BOOL)updateModel:(NSObject *)theNewModel;
- (BOOL)updateModelWithDictionary:(NSDictionary *)dic;

使用

TestModel *model = [[TestModel alloc] init];
model.age = 20;
model.image = [UIImage imageNamed:@"img.jpg"];
//增加
[model saveModel]
//删除
[model deleteModel]
//修改
[model updateModelWithDictionary:@{@"age":@(21)}]
//查找
[TestModel allModels]

下载地址:点这里

时间: 2024-10-18 21:50:16

iOS开发一行代码系列:一行搞定数据库的相关文章

“你的这个只要一行代码就能搞定”

帮舍友代写了一个程序,中期检查的时候和他一起去见老师.老师看了说我们的工作量太少.这个几分钟就搞定.最后他居然说:"这个工作量太少了,就调用一行代码的事,几分钟就可以搞定".去之前我知道这个临时做出来的东西,肯定没跟上进度.但好歹有几天的工作量吧.他居然说只要几分钟,一行调用代码.难道用http协议从网上获取天气数据,再解析xml格式的数据,再转换字符串编码,再根据天气选择要绘制的图片和文字,只需要一行代码?难道我不需要查资料,不需要设计界面吗?为了用mfc做出这个界面,我确实费了一番

iOS开发一行代码系列:一行搞定输入框

最近总结了下开发过程中常用的功能,发现有时候我在做重复性的劳动.于是决定把常用的功能抽出来,方便下次使用. 我的想法是:用最少的代码来解决问题.于是写了一些常用的工具类,名字就叫一行代码系列吧...好像挺挫的.. 大致内容有: 1.一行搞定输入框 2.一行搞定网络请求 3.一行搞定上下拉刷新(会自动判断是上拉还是下拉还是两者并存) 4.一行搞定数据库(最近还在写,功能已经基本实现) 5.一行搞定图片保存 6.一行搞定定位 7.一行搞定网络状况变化 8.一行搞定X(功能小集合) 一行搞定输入框 输

“你的这个仅仅要一行代码就能搞定”

帮舍友代写了一个程序,中期检查的时候和他一起去见老师.老师看了说我们的工作量太少.这个几分钟就搞定.最后他竟然说:"这个工作量太少了,就调用一行代码的事,几分钟就能够搞定".去之前我知道这个暂时做出来的东西,肯定没跟上进度.但好歹有几天的工作量吧.他竟然说仅仅要几分钟,一行调用代码.难道用http协议从网上获取天气数据,再解析xml格式的数据,再转换字符串编码,再依据天气选择要绘制的图片和文字,仅仅须要一行代码?难道我不须要查资料,不须要设计界面吗?为了用mfc做出这个界面,我确实费了

python实战===一行代码就能搞定的事情!

打印9*9乘法表: >>> print( '\n'.join([' '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)])) 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6

iOS开发一行代码系列:一行搞定输入框优化

iOS8以前,我们设置键盘为UIKeyboardTypeNumberPad类型的,我们就不太容易输入字母或者其他的.iOS8以后,由于支持了第三方输入法,就算设置键盘为UIKeyboardTypeNumberPad类型的,我们随便切换下就很容易输入其他字母啦.为了解决这样的问题,我们对InputHelper进行优化,这样以后我们就不用为这样的小问题浪费时间了.常见的小问题还有,评论字数的限制,如果超过120字可能会做截取或者弹出提示框:或者不能输入空格:或者只能输入英文. 源码下载地址:inpu

ios 8行代码教你搞定导航控制器全屏滑动返回效果

一.自定义导航控制器 目的:以后需要使用全屏滑动返回功能,就使用自己定义的导航控制器. 二.分析导航控制器侧滑功能 效果:导航控制器默认自带了侧滑功能,当用户在界面的左边滑动的时候,就会有侧滑功能. 系统自带的侧滑效果: 分析: 1.导航控制器的view自带了滑动手势,只不过手势的触发范围只能在左边. 2.当用户在界面左边拖动,就会触发滑动手势方法,并且有滑动返回功能,说明系统手势触发的方法已经实现了滑动返回功能. 3.为什么说系统手势触发的方法已经实现了滑动返回功能? 原因: 创建滑动手势对象

iOS开发——实用技术OC篇&8行代码教你搞定导航控制器全屏滑动返回效果

8行代码教你搞定导航控制器全屏滑动返回效果 前言 此次文章,讲述的是导航控制器全屏滑动返回效果,而且代码量非常少,10行内搞定. 效果如图: 如果喜欢我的文章,可以关注我,也可以来小码哥,了解下我们的iOS培训课程.陆续还会有更新ing.... 一.自定义导航控制器 目的:以后需要使用全屏滑动返回功能,就使用自己定义的导航控制器. 二.分析导航控制器侧滑功能 效果:导航控制器默认自带了侧滑功能,当用户在界面的左边滑动的时候,就会有侧滑功能. 系统自带的侧滑效果: 分析: 1.导航控制器的view

iOS开发技巧(系列十七:使用Xcode DEBUG模式和RELEASE模式)

在开发过程中,我们经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程.但是一个发布的程序,里面带有太多的NSLog输出,肯定对于App性能有所影响,这时候我们可以使用一个宏定义来处理,在开发的时候使用DEBUG模式,在发布的时候使用RELEASE模式.这样,发布的App就不会在程序内部做大量的NSLog输出了. 简单的代码如下, #if defined(DEBUG)||defined(_DEBUG)     NS

iOS开发 纯代码创建UICollectionView

转:http://jingyan.baidu.com/article/eb9f7b6d8a81a5869364e8a6.html iOS开发 纯代码创建UICollectionView 习惯了使用xib和StoryBoard创建UICollectionView项目工程的伙伴,需要转换使用纯代码来实现,想避免碰更多的壁,就需要认真了解创建UICollectionView过程了.创建UICollectionView比创建UITableView更加复杂,初始化方式也是相对奇特.以下是使用纯代码创建UI