Skip to content

Commit e714e6d

Browse files
committed
v2.1.0
1 parent 6e4f8e5 commit e714e6d

File tree

14 files changed

+433
-64
lines changed

14 files changed

+433
-64
lines changed

Paintinglite/Paintinglite.xcodeproj/project.pbxproj

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
68EB381C249083FD00DFC0CA /* PaintingliteUUID.m in Sources */ = {isa = PBXBuildFile; fileRef = 68EB381B249083FD00DFC0CA /* PaintingliteUUID.m */; };
6464
68EDCA84248747E200031B41 /* PaintingliteIntellegenceSelect.m in Sources */ = {isa = PBXBuildFile; fileRef = 68EDCA83248747E200031B41 /* PaintingliteIntellegenceSelect.m */; };
6565
68F260B224D1209700652C03 /* PaintingliteJSContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 68F260B124D1209700652C03 /* PaintingliteJSContext.m */; };
66+
EEFE2E1C25EF32A1005990B9 /* PaintingliteWarningHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = EEFE2E1B25EF32A1005990B9 /* PaintingliteWarningHelper.m */; };
6667
/* End PBXBuildFile section */
6768

6869
/* Begin PBXContainerItemProxy section */
@@ -200,6 +201,8 @@
200201
68EDCA852487A57700031B41 /* PaintingliteExecHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PaintingliteExecHeader.h; sourceTree = "<group>"; };
201202
68F260B024D1209700652C03 /* PaintingliteJSContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PaintingliteJSContext.h; sourceTree = "<group>"; };
202203
68F260B124D1209700652C03 /* PaintingliteJSContext.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PaintingliteJSContext.m; sourceTree = "<group>"; };
204+
EEFE2E1A25EF32A1005990B9 /* PaintingliteWarningHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PaintingliteWarningHelper.h; sourceTree = "<group>"; };
205+
EEFE2E1B25EF32A1005990B9 /* PaintingliteWarningHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PaintingliteWarningHelper.m; sourceTree = "<group>"; };
203206
/* End PBXFileReference section */
204207

205208
/* Begin PBXFrameworksBuildPhase section */
@@ -336,6 +339,8 @@
336339
68DE9956247C9B9F0078EDD5 /* Paintinglite */ = {
337340
isa = PBXGroup;
338341
children = (
342+
EEFE2E2025EF7339005990B9 /* Cache */,
343+
EEFE2E1925EF3274005990B9 /* Helper */,
339344
68DCAAFE2533579400D67C86 /* aes */,
340345
68DCAAF02533578900D67C86 /* minizip */,
341346
68DCAAEE2533577100D67C86 /* SSZipArchive.h */,
@@ -347,8 +352,6 @@
347352
68DE9958247C9C260078EDD5 /* PaintingliteSessionManager.m */,
348353
6888B26A24B9BF61003345D9 /* PaintingliteFileManager.h */,
349354
6888B26B24B9BF61003345D9 /* PaintingliteFileManager.m */,
350-
6888B26D24B9DBFA003345D9 /* PaintingliteCache.h */,
351-
6888B26E24B9DBFA003345D9 /* PaintingliteCache.m */,
352355
68DE9960247CA1140078EDD5 /* PaintingliteSessionFactory.h */,
353356
68DE9961247CA1140078EDD5 /* PaintingliteSessionFactory.m */,
354357
68DE9963247CA2490078EDD5 /* PaintingliteConfiguration.h */,
@@ -415,6 +418,24 @@
415418
name = Frameworks;
416419
sourceTree = "<group>";
417420
};
421+
EEFE2E1925EF3274005990B9 /* Helper */ = {
422+
isa = PBXGroup;
423+
children = (
424+
EEFE2E1A25EF32A1005990B9 /* PaintingliteWarningHelper.h */,
425+
EEFE2E1B25EF32A1005990B9 /* PaintingliteWarningHelper.m */,
426+
);
427+
path = Helper;
428+
sourceTree = "<group>";
429+
};
430+
EEFE2E2025EF7339005990B9 /* Cache */ = {
431+
isa = PBXGroup;
432+
children = (
433+
6888B26D24B9DBFA003345D9 /* PaintingliteCache.h */,
434+
6888B26E24B9DBFA003345D9 /* PaintingliteCache.m */,
435+
);
436+
path = Cache;
437+
sourceTree = "<group>";
438+
};
418439
/* End PBXGroup section */
419440

420441
/* Begin PBXNativeTarget section */
@@ -569,6 +590,7 @@
569590
68DE9959247C9C260078EDD5 /* PaintingliteSessionManager.m in Sources */,
570591
68DCAB1A2533579400D67C86 /* pwd2key.m in Sources */,
571592
6883B28A24CC2E0500BAA3C2 /* XMLReader.m in Sources */,
593+
EEFE2E1C25EF32A1005990B9 /* PaintingliteWarningHelper.m in Sources */,
572594
6879F980248E66F300E66ABB /* PaintingliteCascadeShowerIUD.m in Sources */,
573595
6800074E2488D19000FF75DE /* PaintingliteCUDOptions.m in Sources */,
574596
68DE9926247C9B6A0078EDD5 /* AppDelegate.m in Sources */,
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Bucket
3+
uuid = "E4B88C6F-06F9-4D47-ABC8-616245B2B7B9"
4+
type = "1"
5+
version = "2.0">
6+
</Bucket>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>SchemeUserState</key>
6+
<dict>
7+
<key>Paintinglite.xcscheme_^#shared#^_</key>
8+
<dict>
9+
<key>orderHint</key>
10+
<integer>0</integer>
11+
</dict>
12+
</dict>
13+
</dict>
14+
</plist>

Paintinglite/Paintinglite/Paintinglite/PaintingliteCache.h renamed to Paintinglite/Paintinglite/Paintinglite/Cache/PaintingliteCache.h

File renamed without changes.

Paintinglite/Paintinglite/Paintinglite/PaintingliteCache.m renamed to Paintinglite/Paintinglite/Paintinglite/Cache/PaintingliteCache.m

Lines changed: 57 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
#define STRONG_SELF __strong typeof(weakSelf) self = weakSelf;
1515

1616
@interface PaintingliteCache()<UIApplicationDelegate>
17-
17+
@property (nonatomic,assign)NSTimeInterval lauchTime; /// 启动时间
18+
@property (nonatomic,strong)CADisplayLink *displayLink;
1819
@end
1920

2021
@implementation PaintingliteCache
@@ -35,25 +36,48 @@ - (instancetype)init
3536
if (self) {
3637
//注册通知写日志
3738
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pushCacheToLogFile) name:@"PaintingliteWriteTableLogNotification" object:self];
38-
#if SD_UIKIT
39-
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil];
40-
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillTerminate:) name:UIApplicationWillTerminateNotification object:nil];
41-
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning) name:UIApplicationDidReceiveMemoryWarningNotification object:nil];
42-
#endif
39+
//#if SD_UIKIT
40+
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidFinishLaunching:) name:UIApplicationDidFinishLaunchingNotification object:nil];
41+
// [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil];
42+
// [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillTerminate:) name:UIApplicationWillTerminateNotification object:nil];
43+
/**
44+
v1.3.3 开启退出写入缓存
45+
*/
46+
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillResignActive:) name:UIApplicationWillResignActiveNotification object:nil];
47+
// [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification object:nil];
48+
//#endif
4349
}
4450
return self;
4551
}
4652

53+
#pragma mark - Life Cricle
54+
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
55+
/// 记录登陆时间
56+
self.lauchTime = [[NSDate date] timeIntervalSince1970];
57+
}
58+
59+
- (void)applicationWillResignActive:(NSNotification *)notification {
60+
/// 程序退出写入缓存
61+
__weak typeof(self) weakself = self;
62+
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
63+
[weakself pushCacheToLogFile];
64+
});
65+
}
66+
4767
#pragma mark - 添加表名称缓存
4868
- (void)addSnapTableNameCache:(NSString *__nonnull)tableName{
69+
70+
if (tableName == NULL || tableName == (id)[NSNull null] || tableName.length == 0) {
71+
return ;
72+
}
73+
4974
NSUInteger tableCount = self.tableCount;
5075

5176
[self setObject:tableName forKey:[NSString stringWithFormat:@"snap_tableName_%zd",tableCount]];
5277

5378
tableCount++;
5479
self.tableCount = tableCount;
5580
}
56-
5781
#pragma mark - 添加表结构缓存
5882
- (void)addSnapTableInfoNameCache:(NSArray *)infoArray tableName:(NSString *)tableName{
5983
[self setObject:infoArray forKey:[NSString stringWithFormat:@"snap_%@_info",tableName]];
@@ -72,13 +96,32 @@ - (void)addDatabaseOptionsCache:(NSString *)optStr{
7296

7397
[self setObject:optStr forKey:[NSString stringWithFormat:@"database_opt_%d",count]];
7498

99+
/**
100+
v1.3.3 添加程序运行超过10分钟写一次缓存
101+
*/
102+
CADisplayLink *displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(sendTimeByPushCache)];
103+
[displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
104+
self.displayLink = displayLink;
105+
106+
75107
if(count >= self.baseReleaseLine){
76108
/* 发送通知,写入缓存文件 */
77109
[[NSNotificationCenter defaultCenter] postNotificationName:@"PaintingliteWriteTableLogNotification" object:self];
78110
count = 0;
79111
}
80112
}
81113

114+
- (void)sendTimeByPushCache {
115+
/// 获得当前时间
116+
long long int currentTime = (long long int)[[NSDate date] timeIntervalSince1970];
117+
118+
/// 十分钟上传一次
119+
if (currentTime - (long long int)self.lauchTime >= 60 * 10) {
120+
/// 写入日志
121+
[self pushCacheToLogFile];
122+
}
123+
}
124+
82125
#pragma mark - 缓存写入日志文件
83126
- (void)pushCacheToLogFile{
84127
for (NSUInteger i = 1; i <= self.optCount; i++) {
@@ -90,7 +133,13 @@ - (void)pushCacheToLogFile{
90133
NSArray<NSString *> *strArray = [optAndStatus componentsSeparatedByString:@" | "];
91134

92135
//写入文件
93-
[[PaintingliteLog sharePaintingliteLog] writeLogFileOptions:[strArray firstObject] status:([[strArray lastObject] isEqualToString:@"success"]) ? PaintingliteLogSuccess : PaintingliteLogError completeHandler:nil];
136+
@synchronized ([PaintingliteLog sharePaintingliteLog]) {
137+
if ([strArray firstObject] == NULL) {
138+
return ;
139+
}
140+
[[PaintingliteLog sharePaintingliteLog] writeLogFileOptions:[strArray firstObject] status:([[strArray lastObject] isEqualToString:@"success"]) ? PaintingliteLogSuccess : PaintingliteLogError completeHandler:nil];
141+
}
142+
94143
/* 清除缓存 */
95144
[self removeObjectForKey:cacheKey];
96145
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
//
2+
// PaintingliteWarningHelper.h
3+
// Paintinglite
4+
//
5+
// Created by CreaterOS on 2021/3/3.
6+
// Copyright © 2021 Bryant Reyn. All rights reserved.
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
11+
NS_ASSUME_NONNULL_BEGIN
12+
13+
@interface PaintingliteWarningHelper : NSObject
14+
15+
/// 警告
16+
/// @param reason 原因
17+
/// @param time 触发时间
18+
/// @param solve 解决方案
19+
/// @param args 其他参数
20+
+ (void)warningReason:(NSString *)reason time:(NSDate *)time solve:(NSString *)solve args:(id __nullable)args;
21+
22+
/// 警告
23+
/// @param reason 原因
24+
/// @param session 会话
25+
/// @param time 触发时间
26+
/// @param solve 解决方案
27+
/// @param args 其他参数
28+
+ (void)warningReason:(NSString *)reason session:(NSString *)session time:(NSDate *)time solve:(NSString *)solve args:(id)args;
29+
30+
@end
31+
32+
NS_ASSUME_NONNULL_END
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
//
2+
// PaintingliteWarningHelper.m
3+
// Paintinglite
4+
//
5+
// Created by CreaterOS on 2021/3/3.
6+
// Copyright © 2021 Bryant Reyn. All rights reserved.
7+
//
8+
9+
#import "PaintingliteWarningHelper.h"
10+
11+
@implementation PaintingliteWarningHelper
12+
13+
+ (void)warningReason:(NSString *)reason time:(NSDate *)time solve:(NSString *)solve args:(id)args {
14+
#if DEBUG
15+
/// 调试状态下进行输出
16+
NSLog(@"Reson: %@",NSLocalizedString(reason, nil));
17+
NSLog(@"Time: %@",time);
18+
NSLog(@"Solve: %@",NSLocalizedString(solve, nil));
19+
20+
if (args != NULL && args != (id)[NSNull null]) {
21+
NSError *error = nil;
22+
NSData *data = [NSJSONSerialization dataWithJSONObject:args options:NSJSONWritingSortedKeys error:&error];
23+
NSString *argStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
24+
NSLog(@"Args: %@",argStr);
25+
}
26+
#endif
27+
}
28+
29+
+ (void)warningReason:(NSString *)reason session:(NSString *)session time:(NSDate *)time solve:(NSString *)solve args:(id)args {
30+
#if DEBUG
31+
/// 调试状态下进行输出
32+
NSLog(@"Reson: %@",NSLocalizedString(reason, nil));
33+
NSLog(@"Session: %@",NSLocalizedString(session, nil));
34+
NSLog(@"Time: %@",time);
35+
NSLog(@"Solve: %@",NSLocalizedString(solve, nil));
36+
37+
if (args != NULL && args != (id)[NSNull null]) {
38+
NSError *error = nil;
39+
NSData *data = [NSJSONSerialization dataWithJSONObject:args options:NSJSONWritingSortedKeys error:&error];
40+
NSString *argStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
41+
NSLog(@"Args: %@",argStr);
42+
}
43+
#endif
44+
}
45+
46+
@end

Paintinglite/Paintinglite/Paintinglite/PaintingliteDataBaseOptions.m

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#import "PaintingliteSessionFactory.h"
1111
#import "PaintingliteExec.h"
1212
#import "PaintingliteLog.h"
13+
#import "PaintingliteWarningHelper.h"
1314

1415
@interface PaintingliteDataBaseOptions()
1516
@property (nonatomic,strong)PaintingliteExec *exec; //执行语句
@@ -45,6 +46,10 @@ - (Boolean)execTableOptForSQL:(sqlite3 *)ppDb sql:(NSString *)sql{
4546
}
4647

4748
- (Boolean)execTableOptForSQL:(sqlite3 *)ppDb sql:(NSString *)sql completeHandler:(void (^)(PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
49+
if (sql == NULL || sql == (id)[NSNull null] || sql.length == 0) {
50+
return NO;
51+
}
52+
4853
Boolean flag = [self.exec sqlite3Exec:ppDb sql:sql];
4954

5055
if (completeHandler != nil) {
@@ -60,7 +65,11 @@ - (Boolean)createTableForName:(sqlite3 *)ppDb tableName:(NSString *)tableName co
6065
}
6166

6267
- (Boolean)createTableForName:(sqlite3 *)ppDb tableName:(NSString *)tableName content:(NSString *)content completeHandler:(void (^)(PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
63-
NSAssert(tableName != NULL, @"Table Name IS Not Empty");
68+
/// 表名称为空
69+
if (tableName == NULL || tableName == (id)[NSNull null] || tableName.length == 0) {
70+
[PaintingliteWarningHelper warningReason:@"TableName IS NULL OR TableName Len IS 0" time:[NSDate date] solve:@"Reset The TableName" args:nil];
71+
return NO;
72+
}
6473

6574
Boolean flag = [self.exec sqlite3Exec:ppDb tableName:tableName content:content];
6675

@@ -78,6 +87,11 @@ - (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(Paintingli
7887
}
7988

8089
- (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(PaintingliteDataBaseOptionsPrimaryKeyStyle)createStyle completeHandler:(void (^)(PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
90+
/// 对象为空
91+
if (obj == NULL || obj == (id)[NSNull null]) {
92+
[PaintingliteWarningHelper warningReason:@"Object IS NULL OR Object IS [NSNull null]" time:[NSDate date] solve:@"Reset The Object" args:nil];
93+
return NO;
94+
}
8195

8296
Boolean success = [self.exec sqlite3Exec:ppDb obj:obj status:PaintingliteExecCreate createStyle:createStyle];
8397

@@ -96,6 +110,18 @@ - (BOOL)alterTableForName:(sqlite3 *)ppDb oldName:(NSString *__nonnull)oldName n
96110
}
97111

98112
- (BOOL)alterTableForName:(sqlite3 *)ppDb oldName:(NSString *__nonnull)oldName newName:(NSString *__nonnull)newName completeHandler:(void (^)(PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
113+
/// 旧表名称
114+
if (oldName == NULL || oldName == (id)[NSNull null] || oldName.length == 0) {
115+
[PaintingliteWarningHelper warningReason:@"TableName IS NULL OR TableName Len IS 0" time:[NSDate date] solve:@"Reset The TableName" args:nil];
116+
return NO;
117+
}
118+
119+
/// 新表名称
120+
if (newName == NULL || newName == (id)[NSNull null] || newName.length == 0) {
121+
[PaintingliteWarningHelper warningReason:@"New TableName IS NULL OR New TableName Len IS 0" time:[NSDate date] solve:@"Reset The New TableName" args:nil];
122+
return NO;
123+
}
124+
99125
Boolean success = [self.exec sqlite3Exec:ppDb obj:@[oldName,newName] status:PaintingliteExecAlterRename createStyle:PaintingliteDataBaseOptionsDefault];
100126

101127
if (completeHandler != nil) {
@@ -110,6 +136,17 @@ - (BOOL)alterTableAddColumn:(sqlite3 *)ppDb tableName:(NSString *)tableName colu
110136
}
111137

112138
- (BOOL)alterTableAddColumn:(sqlite3 *)ppDb tableName:(NSString *)tableName columnName:(NSString *)columnName columnType:(NSString *)columnType completeHandler:(void (^)(PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
139+
140+
if (tableName == NULL || tableName == (id)[NSNull null] || tableName.length == 0) {
141+
[PaintingliteWarningHelper warningReason:@"TableName IS NULL OR TableName Len IS 0" time:[NSDate date] solve:@"Reset The TableName" args:nil];
142+
return NO;
143+
}
144+
145+
if (columnName == NULL || columnName == (id)[NSNull null] || columnName.length == 0) {
146+
[PaintingliteWarningHelper warningReason:@"ColumnName IS NULL OR ColumnName Len IS 0" time:[NSDate date] solve:@"Reset The ColumnName" args:nil];
147+
return NO;
148+
}
149+
113150
Boolean success = [self.exec sqlite3Exec:ppDb obj:@[tableName,columnName,columnType] status:PaintingliteExecAlterAddColumn createStyle:PaintingliteDataBaseOptionsDefault];
114151

115152
if (completeHandler != nil) {
@@ -128,6 +165,11 @@ - (BOOL)alterTableForObj:(sqlite3 *)ppDb obj:(id)obj{
128165
}
129166

130167
- (BOOL)alterTableForObj:(sqlite3 *)ppDb obj:(id)obj completeHandler:(void (^)(PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
168+
if (obj == NULL || obj == (id)[NSNull null]) {
169+
[PaintingliteWarningHelper warningReason:@"Object IS NULL OR Object IS [NSNull null]" time:[NSDate date] solve:@"Reset The Object" args:nil];
170+
return NO;
171+
}
172+
131173
Boolean success = [self.exec sqlite3Exec:ppDb obj:obj status:PaintingliteExecAlterObj createStyle:PaintingliteDataBaseOptionsDefault];
132174

133175
if (completeHandler != nil) {
@@ -143,7 +185,10 @@ - (Boolean)dropTableForTableName:(sqlite3 *)ppDb tableName:(NSString *)tableName
143185
}
144186

145187
- (Boolean)dropTableForTableName:(sqlite3 *)ppDb tableName:(NSString *)tableName completeHandler:(void (^)(PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
146-
NSAssert(tableName != NULL, @"Table Name IS Not Empty");
188+
if (tableName == NULL || tableName == (id)[NSNull null] || tableName.length == 0) {
189+
[PaintingliteWarningHelper warningReason:@"TableName IS NULL OR TableName Len IS 0" time:[NSDate date] solve:@"Reset The TableName" args:nil];
190+
return NO;
191+
}
147192

148193
Boolean success = [self.exec sqlite3Exec:ppDb tableName:tableName];
149194

@@ -160,6 +205,11 @@ - (Boolean)dropTableForObj:(sqlite3 *)ppDb obj:(id)obj{
160205
}
161206

162207
- (Boolean)dropTableForObj:(sqlite3 *)ppDb obj:(id)obj completeHandler:(void (^)(PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
208+
if (obj == NULL || obj == (id)[NSNull null]) {
209+
[PaintingliteWarningHelper warningReason:@"Object IS NULL OR Object IS [NSNull null]" time:[NSDate date] solve:@"Reset The Object" args:nil];
210+
return NO;
211+
}
212+
163213
Boolean success = [self.exec sqlite3Exec:ppDb obj:obj status:PaintingliteExecDrop createStyle:PaintingliteDataBaseOptionsDefault];
164214

165215
if (completeHandler != nil) {

0 commit comments

Comments
 (0)