Latest 0.0.5
Homepage https://github.com/gushengya/SYFMDBModel
License MIT
Platforms ios 8.0
Dependencies FMDB
Frameworks UIKit
Authors

SYFMDBModel CocoaPods

对FMDB扩展了对象的存储与获取, 设计采用分类的方式便于OC对象广泛应用, 本扩展实现了[1.OC对象存储到数据库、2.从数据库中取出OC对象、3.直接嵌套的对象存取、多重嵌套的对象存取]

使用SYFMDBModel

在Podfile中加入下面代码, 然后在终端执行pod install

platform :ios, '8.0'

target 'TargetName' do
pod 'SYFMDBModel', '~> 0.0.5'
end

支持数据类型

基础数据类型 结构体类型 OC对象类型 嵌套类型
实测过类型: int NSInteger NSUInteger long long int64_t CGFloat float double CGPoint CGSize CGRect NSString NSArray NSNumber NSDate NSData 直接嵌套对象 集合中嵌套对象
SQL存储类型: INTEGER INTEGER INTEGER INTEGER INTEGER REAL REAL REAL TEXT TEXT TEXT TEXT BLOB REAL REAL BLOB 另开表存储 另开表存储
存储结果举例: 1 1 1 1 1 1.1 1.1 1.1 {4, 4} {4, 4} {{4, 4}, {4, 4}} 文本 二进制 浮点型 时间戳 二进制 另开表存储 另开表存储

另外:存储到数据库之前属性声明是可变的, 从数据库中取值时得到的对象该属性仍然是可变的。

准备

pod好后在需要的模型类中导入#import <SYFMDBModel/NSObject+SY_FMDBExtension.h>, 需要在.m中重写

// 设置需保存到数据库中的属性名, 如都保存可直接返回YES
+ (BOOL)sy_savedPropertyName:(NSString *)name
{
    return YES;
}

如果存在嵌套类, 可在.m中重写

+ (NSDictionary<NSString *,NSString *> *)sy_nestPropertyMapList
{
    return @{@"属性名": @"嵌套的类名"};
}

不要忘记在嵌套类中也要执行与该步骤一样的操作

使用方式

插入数据

OC模型对象直接调用该实例方法可传入NSError的指针观察执行状况

First *first = [[First alloc] init];
NSError *error = nil;
BOOL result = [first sy_InsertWithError:&error];

查询数据

查询数据可查询整张表的所有数据、按条件查询某条数据、按条件查询某个字段

  • 查询所有数据: 返回搜寻的结果集合, 已内部处理转化为调用类的对象集合, 如有嵌套数据, 也一并转化处理好

    NSError *error;
    NSArray *arr = [First sy_FindAllWithError:&error];
  • 按条件查询某条数据 此处需要注意, 如果条件字段为TEXT类型, 别忘记加上”符号

    NSError *error;
    NSArray *arr = [First sy_FindByCondition:@"where name = 'SYFMDBModel'" error:&error];
  • 按条件查询某个字段 查询到的结果为一个集合
    NSError *error;
    NSArray *array = [First sy_FindName:@"SYFMDBModel" condition:@"" error:&error];

删除数据

  • 按条件删除

    NSError *error = nil;
    BOOL result = [First sy_RemoveByCondition:@"where name = 'SYFMDBModel'" andError:&error];
  • 实例对象删除 – 需是查询到数据对象才能使用实例方法删除
    NSError *error = nil;
    BOOL result = [first sy_RemoveWithError:&error];

更新数据

  • 实例对象更新 – 需是查询到数据对象才能使用实例方法
    NSError *error = nil;
    BOOL result = [first sy_UpdateWithError:&error];
  • 按条件更新某个字段
    NSError *error = nil;
    BOOL result = [Third sy_UpdateName:@"dateValue" newValue:nil condition:@"" error:&error];

注: 暂未支持字典进行嵌套,且集合嵌套只支持嵌套一个类

Latest podspec

{
    "name": "SYFMDBModel",
    "version": "0.0.5",
    "summary": "u5bf9FMDBu8fdbu884cu6269u5c55",
    "description": "u5bf9FMDBu8fdbu884cu6269u5c55, u6548u679cu662fu53efu4ee5u5bf9u5bf9u8c61u8fdbu884cu5b58u50a8u5e76u4eceu6570u636eu5e93u4e2du5f97u5230u5bf9u8c61",
    "platforms": {
        "ios": "8.0"
    },
    "homepage": "https://github.com/gushengya/SYFMDBModel",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "gushengya": "[email protected]"
    },
    "source": {
        "git": "https://github.com/gushengya/SYFMDBModel.git",
        "tag": "0.0.5"
    },
    "source_files": "SYFMDBModel/**/*.{h,m}",
    "frameworks": "UIKit",
    "libraries": "objc",
    "dependencies": {
        "FMDB": [
            "2.7.2"
        ]
    }
}

Pin It on Pinterest

Share This