Skip to content

Commit f281836

Browse files
committed
Added [Update arrDeletedMethods]
1 parent 4c8bd4f commit f281836

File tree

3 files changed

+33
-14
lines changed

3 files changed

+33
-14
lines changed

SJDBMap.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Pod::Spec.new do |s|
33
s.name = "SJDBMap"
4-
s.version = "1.0.18"
4+
s.version = "1.0.19"
55
s.summary = "Automatically create tables based on the model."
66
s.description = "https://github.com/changsanjiang/SJDBMap/blob/master/README.md"
77
s.homepage = "https://github.com/changsanjiang/SJDBMap"

SJDBMap/SJDatabaseMap.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,14 @@ NS_ASSUME_NONNULL_BEGIN
8686
*/
8787
- (void)update:(id<SJDBMapUseProtocol>)model insertedOrUpdatedValues:(NSDictionary<NSString *, id> * __nullable)insertedOrUpdatedValues callBlock:(void (^)(BOOL))block;
8888

89+
/*!
90+
* 此接口针对数组字段使用.
91+
* 如果数据库没有这个模型, 将不会保存
92+
*
93+
* deletedValues : key 更新的这个模型对应的属性(字段为数组). value 数组中删除掉的模型.
94+
*/
95+
- (void)update:(id<SJDBMapUseProtocol>)model deletedValues:(NSDictionary<NSString *, id> *__nullable)deletedValues callBlock:(void (^)(BOOL))block;
96+
8997
@end
9098

9199

SJDBMap/SJDatabaseMap.m

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -173,15 +173,11 @@ - (void)update:(id<SJDBMapUseProtocol>)model property:(NSArray<NSString *> *)fie
173173
[self addOperationWithBlock:^{
174174
[self queryDataWithClass:[model class] primaryValue:[[self sjGetPrimaryOrAutoPrimaryValue:model] integerValue] completeCallBlock:^(id<SJDBMapUseProtocol> _Nullable m) {
175175
if ( nil == m ) {
176-
dispatch_async(dispatch_get_main_queue(), ^{
177-
if ( block ) block(NO);
178-
});
176+
if ( block ) block(NO);
179177
return;
180178
}
181179
BOOL result = [self sjUpdate:model property:fields];
182-
dispatch_async(dispatch_get_main_queue(), ^{
183-
if ( block ) block(result);
184-
});
180+
if ( block ) block(result);
185181
}];
186182
}];
187183
}
@@ -197,17 +193,32 @@ - (void)update:(id<SJDBMapUseProtocol>)model insertedOrUpdatedValues:(NSDictiona
197193
[self addOperationWithBlock:^{
198194
[self queryDataWithClass:[model class] primaryValue:[[self sjGetPrimaryOrAutoPrimaryValue:model] integerValue] completeCallBlock:^(id<SJDBMapUseProtocol> _Nullable m) {
199195
if ( nil == m ) {
200-
dispatch_async(dispatch_get_main_queue(), ^{
201-
if ( block ) block(NO);
202-
});
196+
if ( block ) block(NO);
203197
return ;
204198
}
205199

206200
BOOL result = [self sjUpdate:model insertedOrUpdatedValues:insertedOrUpdatedValues];
207-
dispatch_async(dispatch_get_main_queue(), ^{
208-
if ( block ) block(result);
209-
});
210-
201+
if ( block ) block(result);
202+
}];
203+
}];
204+
}
205+
206+
/*!
207+
* 此接口针对数组字段使用.
208+
* 如果数据库没有这个模型, 将不会保存
209+
*
210+
* deletedValues : key 更新的这个模型对应的属性(字段为数组). value 数组中删除掉的模型.
211+
*/
212+
- (void)update:(id<SJDBMapUseProtocol>)model deletedValues:(NSDictionary<NSString *, id> *__nullable)deletedValues callBlock:(void (^)(BOOL))block {
213+
if ( 0 == deletedValues.allKeys ) { if ( block ) block(NO); return;}
214+
[self addOperationWithBlock:^{
215+
[self queryDataWithClass:[model class] primaryValue:[[self sjGetPrimaryOrAutoPrimaryValue:model] integerValue] completeCallBlock:^(id<SJDBMapUseProtocol> _Nullable m) {
216+
if ( nil == m ) {
217+
if ( block ) block(NO);
218+
return ;
219+
}
220+
BOOL result = [self sjInsertOrUpdateDataWithModel:model uM:[self sjGetUnderstandingWithClass:[model class]]];
221+
if ( block ) block(result);
211222
}];
212223
}];
213224
}

0 commit comments

Comments
 (0)