FMDB向けオブジェクトパッケージ

4518 ワード

LKFMDB
DemoダウンロードアドレスgitHubはgithubで詳しく紹介されているのを見て、修正問題を更新し続けるのが望ましい.FMDBオブジェクト向けパッケージに対して、任意のタイプのプライマリ・キーをサポートし、各フィールドを修飾し、バカな操作を行い、1つのキーで更新を保存することができます.
使用方法
  • まずプログラムがFMDB
  • にインポートされたことを確認します.
  • インポートファイルLKFMDB
  • が暗号化する必要があるかどうか、SQLCipherをインポートする必要はありません.次に、暗号化方法について説明します.
  • データベースを作成する必要があるクラスに対してLKDBModel
  • を継承する.SQLCipher暗号化をサポート
    具体的には、FMDB暗号化-SQLCipherのデフォルト暗号化モードの使用方法を参照してください.必要に応じて、FMDBファイルの下でFMDatabase.mファイルの下でキャンセルします.
    //    150  177   
    else{
    [self setKey:DB_SECRETKEY];
    }
    

    基本モジュールの紹介
  • LKDBToolデータベース操作
  • の一例を作成する.
  • LKDBModelコアビジネスモジュール対FMDBパッケージ.コアモジュールruntimeのプロパティの取得については、コアコードについて説明します.
  • LKDBColumnDesフィールド修飾モジュール対フィールド修飾
  • LKDBSQLState sql文パッケージモジュール----------このモジュールパッケージ中......

  • 一般的な方法の説明-詳細についてはDemoを参照してくださいLKDBTool
    /**             */
    + (instancetype)shareInstance;
    /**       */
    + (NSString *)dbPath;
    /**       */
    - (BOOL)changeDBWithDirectoryName:(NSString *)directoryName;
    
    LKDBModel
    #pragma mark     
    /**      
     *        ,  ,
     *    ,   
     */
    - (BOOL)saveOrUpdate;
    /**        */
    - (BOOL)save;
    /**        */
    + (BOOL)saveObjects:(NSArray *)array;
    /**         */
    +(BOOL)saveOrUpdateObjects:(NSArray *)array;
    /**        */
    - (BOOL)update;
    /**       */
    + (BOOL)updateObjects:(NSArray *)array;
    /**        */
    - (BOOL)deleteObject;
    /**        */
    + (BOOL)deleteObjects:(NSArray *)array;
    /**          */
    + (BOOL)deleteObjectsByCriteria:(NSString *)criteria;
    /**         */
    + (BOOL)deleteObjectsWithFormat:(NSString *)format, ...;
    /**     */
    + (BOOL)clearTable;
    /**        */
    + (NSArray *)findAll;
    /**        */
    + (instancetype)findFirstByCriteria:(NSString *)criteria;
    /**         */
    + (NSArray *)findByCriteria:(NSString *)criteria;
    
    //        
    /**         property          ,                LKDBColumnDes */
    + (NSDictionary *)describeColumnDict;
    
    LKDBColumnDes
    /**    */
    @property (nonatomic, copy)  NSString *columnName;
    /**    */
    @property (nonatomic, copy)  NSString *check;
    /**    */
    @property (nonatomic, copy)  NSString *defaultValue;
    /**    */
    @property (nonatomic, copy)  NSString *foreignKey;
    /**       */
    @property (nonatomic, assign, getter=isPrimaryKey)  BOOL      primaryKey;
    /**       */
    @property (nonatomic, assign, getter=isUnique)  BOOL      unique;
    /**        */
    @property (nonatomic, assign, getter=isNotNull)  BOOL      notNull;
    /**            text        */
    @property (nonatomic, assign, getter=isAutoincrement)  BOOL      autoincrement;
    /**              */
    @property (nonatomic, assign, getter=isUseless) BOOL useless;
    /**
     *         
     */
    - (instancetype)initWithAuto:(BOOL)isAutoincrement isNotNull:(BOOL)notNull check:(NSString *)check defaultVa:(NSString *)defaultValue;
    /**
     *           
     */
    - (instancetype)initWithgeneralFieldWithAuto:(BOOL)isAutoincrement  unique:(BOOL)isUnique isNotNull:(BOOL)notNull check:(NSString *)check defaultVa:(NSString *)defaultValue;
    /**
     *       
     */
    - (instancetype)initWithFKFiekdUnique:(BOOL)isUnique isNotNull:(BOOL)notNull check:(NSString *)check default:(NSString *)defaultValue foreignKey:(NSString *)foreignKey;
    /**
     *         
     */
    - (BOOL)isCustomColumnName:(NSString *)attribiteName;
    /**
     *        
     */
    - (NSString *)finishModify;
    
    LKDBSQLState
    /**
     *      
     *
     *  @param obj   model 
     *  @param type      
     *  @param key   key
     *  @param opt     
     *  @param value  
     */
    - (LKDBSQLState *)object:(Class)obj
                           type:(QueryType)type
                            key:(id)key
                            opt:(NSString *)opt
                          value:(id)value;
    /**
     *        
     */
    -(NSString *)sqlOptionStr;
    

    コアコード
    クラスのプロパティ名とタイプをruntimeで取得し、名前とタイプに基づいてテーブル文を生成します.
    //             
      objc_property_t * properties = class_copyPropertyList([self class], &outCount);
      for (int i = 0; i < outCount; i++) {
          objc_property_t property = properties[i];
          //      
           NSString *propertyName = [NSString stringWithCString:property_getName(property) encoding:NSUTF8StringEncoding];
          //      
           NSString *propertyType = [NSString stringWithCString: property_getAttributes(property) encoding:NSUTF8StringEncoding];
      }
    
    

    DemoダウンロードアドレスgitHub