Skip to content

Commit 3694424

Browse files
author
ChrisCai
committed
新增删除指定对象方法,执行自定义sql语句方法
1 parent d6d6c9b commit 3694424

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

GKDatabase/GKDatabase/GKDatabaseManager.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,14 @@ typedef NS_ENUM(NSInteger ,GKDatabaseSelectLocation){
126126

127127
#pragma mark -
128128
#pragma mark - =============== 删除数据 ===============
129+
/**
130+
* 移除指定对象
131+
*
132+
* @param object 模型对象
133+
*
134+
* @return 删除结果
135+
*/
136+
- (BOOL)deleteObject:(id)object;
129137
/**
130138
* 删除数据
131139
*
@@ -153,4 +161,12 @@ typedef NS_ENUM(NSInteger ,GKDatabaseSelectLocation){
153161
* @return 删除结果
154162
*/
155163
- (BOOL)deleteTableWithTableName:(id)className;
164+
/**
165+
* 执行自定义的sql语句
166+
*
167+
* @param sqlString 自定义的sql语句
168+
*
169+
* @return 执行结果
170+
*/
171+
- (BOOL)executeSqlString:(NSString *)sqlString;
156172
@end

GKDatabase/GKDatabase/GKDatabaseManager.m

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,24 @@ - (NSArray *)ConditionProcessingWithString:(NSString *)string {
398398

399399
#pragma mark -
400400
#pragma mark - =============== 数据删除 ===============
401+
/// 删除指定对象
402+
- (BOOL)deleteObject:(id)object {
403+
// 获取类的属性和sql类型
404+
NSDictionary * propertsDict = [GKObjcProperty getSQLProperties:[object class]];
405+
// 拼接字符串
406+
NSMutableString * sqlString = [NSMutableString stringWithFormat:@"delete from %@ where ",[object class]];
407+
[propertsDict enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull value, BOOL * _Nonnull stop) {
408+
if ([value isEqualToString:@"integer"] || [value isEqualToString:@"real"]) {
409+
[sqlString appendFormat:@"%@ = %@ and",key , [object valueForKey:key]];
410+
}else {
411+
[sqlString appendFormat:@"%@ = '%@' and ",key , [object valueForKey:key]];
412+
}
413+
}];
414+
// 删除最后多余的and
415+
NSRange rang = NSMakeRange(sqlString.length-@"and".length-1, @"and".length+1);
416+
[sqlString deleteCharactersInRange:rang];
417+
return [self executeSqlString:sqlString];
418+
}
401419
/// 数据删除
402420
- (BOOL)deleteObject:(Class)className withString:(NSString *)string {
403421
// 判断数据库有没有打开

0 commit comments

Comments
 (0)