美文网首页
iOS 数据库 传入模型就行

iOS 数据库 传入模型就行

作者: 开局四带二 | 来源:发表于2019-01-18 16:18 被阅读0次

    https://github.com/qxuewei/XWDatabase    拿走

    1.github 上搜索  XWDatabase 下载多的那个应该就是了

    2.好好看 人家写的 就会用了

    使用

    一、增

    1.保存一个模型 (Save One Model)

    - (void)saveOnePerson

        {  XWPerson *person = [XWPerson testPerson:2];

            [XWDatabase saveModel:person completion:^(BOOLisSuccess) {

            }];

        }

    实例化一个对象, 调用 saveModel 方法。

    2.保存多个模型 (Save Many Models)

        - (void)saveModels

        {  NSMutableArray *persons = [[NSMutableArray alloc] init];

            for(inti =0; i <1000; i++) {

                [persons addObject:[XWPerson testPerson:i]];

            }

            [XWDatabase saveModels:persons completion:^(BOOLisSuccess) {

            }];

        }

    实例化一堆对象, 调用 saveModels 方法。

    二、删

    1.删除一个模型 (Delete One Model)

        - (void)deleteModel

        {

            XWPerson *person = [XWPerson new];

            person.cardID =@"1";/// 指定想删除的主键(或联合主键)

            [XWDatabase deleteModel:person completion:^(BOOLisSuccess) {

            }];

        }

    实例化一个对象,为主键赋值(得知道删的是哪个,让她猜,臣妾做不到), 调用 deleteModel 方法。

    2.删除此模型存储的所有数据 (Delete All Models)

        - (void)clearModel   

     {        [XWDatabase clearModel:XWPerson.class completion:^(BOOLisSuccess) {       

     }];    }

    调用 clearModel 方法,传入想删除的模型类

    3.选择性删除此模型存储的数据 (Delete Models With Condition)

        - (void)clearModel

        {

            [XWDatabase clearModel:XWPerson.class condition:@"age > '50'"completion:^(BOOLisSuccess) {

            }];

        }

    调用 clearModel 方法,传入想删除的模型类和条件

    三、改

    1.更新某模型某个成员变量 (选择性更新) (Update some properties in Model)

        /// 改名

        - (void)updateModel

        {

            XWPerson *person = [XWPerson new];

            person.cardID =@"2";

            person.name =@"新名字";

            /// 自定义成员变量更新

            [XWDatabase updateModel:person updatePropertys:@[@"name"]completion:^(BOOLisSuccess) {

            }];

        }

    实例化一个对象,为主键和有变化的成员变量赋值, 调用 updateModel 方法,传入想更新的成员变量名称。

    2.更新某模型所有数据 (全量更新) (Update all properties in Model)

        /// 根据传入的模型整体更新

        - (void)updateModel

        {

            XWPerson *person = [XWPerson new];

            person.cardID =@"2";

            person.name =@"新名字";

            person.girls =@[@"小妹",@"校花",@"小baby"];

            /// 整个模型更新

            [XWDatabase saveModel:person completion:^(BOOLisSuccess) {

            }];

        }

    实例化一个对象, 调用 updateModel 方法,传入想更新的模型。

    四、查

    1.根据主键查询模型 (Search One Model with primary Key)

        - (void)getOnePerson

        {

            XWPerson *person = [XWPerson new];

            person.cardID =@"81";

            [XWDatabase getModel:person completion:^(XWPerson * obj) {

            }];

        }

    实例化一个对象,为主键赋值, 调用 getModel 方法。

    2.查询数据库中所有该模型存储的数据 (Search all Models in the database)

        - (void)getModels

        {

            [XWDatabase getModels:XWPerson.class completion:^(NSArray *_Nullableobjs) {

            }];

        }

    调用 getModels 方法,传入模型类

    3.查询数据库中所有该模型存储的数据 - 按某成员变量排序 (Search all the Models in the database to sort the model)

        /// 获取数据库中所有该模型存储的数据 - 按 age 字段降序排列

        - (void)getModelsSortAge

        {

            [XWDatabase getModels:XWPerson.class sortColumn:@"age"isOrderDesc:YEScompletion:^(NSArray *_Nullableobjs) {

            }];

        }

    调用 getModels 方法,传入模型类和要排序的字段

    4.查询数据库中所有该模型存储的数据 - 自定义查询条件 (Search all the Models with condition)

        /// 获取数据库中所有该模型存储的数据 - 自定义查找条件 (例如模糊查询 name 含 学伟 的数据)

        - (void)getModelsCondition

        {

            [XWDatabase getModels:XWPerson.class condition:@"name like '%学伟'"completion:^(NSArray *_Nullableobjs) {

            }];

        }

    调用 getModels 方法,传入模型类和查询的条件

    5.查询数据库中所有该模型存储的数据 - 自定义查询条件并且可按照某字段排序 (Search all the Models in the database to sort the model)

        /// 获取数据库中所有该模型存储的数据 - 自定义查找条件可排序 (例如模糊查询 name 含 学伟 的数据, 并且按 age 升序排序)

        - (void)getModelsConditionSort

        {

            [XWDatabase getModels:XWPerson.class sortColumn:@"age"isOrderDesc:NOcondition:@"name like '%学伟'"completion:^(NSArray *_Nullableobjs) {

            }];

        }

    调用 getModels 方法,传入模型类和查询的条件和排序的成员变量名称

    五、数据迁移 (Data Migration)

    模型中成员变量发生变化,动态进行数据迁移

        + (void)initialize

        + {

            [XWDatabase updateTable:selfcompletion:^(BOOLisSuccess) {

            }]

    在模型对象的 initialize 方法中 调用 updateTable 方法。之所以在 initialize 方法中调用是保证用户无感知的情况下在操作此模型进行数据操作时自动更新。

    以上就是 XWDatabase V1.0 版本的所有功能示例。谢谢!

    下面介绍一些使用规范和功能扩展。

    六 、XWDatabaseModelProtocol 协议

     /**

         主键 不可更改/唯一性

         @return 主键的属性名

         */

        + (NSString *)xw_primaryKey;

        /**

         联合主键成员变量数组 (多个属性共同定义主键) - 优先级大于 'xw_primaryKey'

         @return 联合主键成员变量数组

         */

        + (NSArray < NSString * > *)xw_unionPrimaryKey;

        /**

         自定义对象映射  (key: 成员变量名称 value: 对象类)

         @return 自定义对象映射

         */

        + (NSDictionary *)xw_customModelMapping;

        /**

         忽略不保存数据库的属性

         @return 忽略的属性名数组

         */

        + (NSSet *)xw_ignoreColumnNames;

        /**

         自定义字段名映射表 (默认成员变量即变量名, 可自定义字段名 key: 成员变量(属性)名称  value: 自定义数据库表字段名)

         @return 自定义字段名映射表

         */

        + (NSDictionary *)xw_customColumnMapping;

        /**

         自定义表名 (默认属性类名)

         @return 自定义表名

         */

        + (NSString *)xw_customTableName;

    相关文章

      网友评论

          本文标题:iOS 数据库 传入模型就行

          本文链接:https://www.haomeiwen.com/subject/nzbndqtx.html