FMDB向けオブジェクトパッケージ
4518 ワード
LKFMDB
DemoダウンロードアドレスgitHubはgithubで詳しく紹介されているのを見て、修正問題を更新し続けるのが望ましい.
使用方法まずプログラムが にインポートされたことを確認します.インポートファイル が暗号化する必要があるかどうか、 データベースを作成する必要があるクラスに対して を継承する.
具体的には、FMDB暗号化-SQLCipherのデフォルト暗号化モードの使用方法を参照してください.必要に応じて、
基本モジュールの紹介 の一例を作成する.
一般的な方法の説明-詳細についてはDemoを参照してください
コアコード
クラスのプロパティ名とタイプを
DemoダウンロードアドレスgitHub
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