Przeglądaj źródła

同步DB2分支内ClouldStorage相关模块

hxb 8 lat temu
rodzic
commit
4b95ac1e81

BIN
WSCloudStorage.xcworkspace/xcuserdata/jonathanh.xcuserdatad/UserInterfaceState.xcuserstate


+ 127 - 184
WSCloudStorage/CloudStorage/CSFileTransListController.m

@@ -12,7 +12,7 @@
 
 #import "CSTabBarController.h"
 
-//#import "NewMessageTransController.h"
+#import "NewMessageTransController.h"
 
 #import "CSFileDownUpCell.h"
 
@@ -145,6 +145,7 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
     
     //待取消.使用reload并判断文件状态,是否需要移动.
     [self initData];
+
     
 }
 
@@ -152,6 +153,9 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
 {
     [super viewWillAppear:animated];
     
+    //需要重新注册进度block
+    [self.mainTableView reloadData];
+    
     [self registeUploadCenter];
     
     [self registeDownloadCenter];
@@ -160,9 +164,13 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
         [self registerFileFolderDownloadNotoice];
     }
     
+}
 
-    //待取消.使用reload并判断文件状态,是否需要移动.
-//   [self initData];
+#warning 2017-08-04 bug之.如果退出进入一个未完成的文件夹,则上层进度不会再通知上上层,导致数据不会刷新.
+- (void)viewWillDisappear:(BOOL)animated
+{
+    [super viewWillDisappear:animated];
+    
 }
 
 - (void)muiltSelect
@@ -263,69 +271,89 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
 #warning 2017-06-30 获取doing和waiting的数据,加入center进行任务, pause的手动处理.
 - (void)initData
 {
-    [self.downloadProcessDataArray removeAllObjects];
-    [self.downloadFinishDataArray removeAllObjects];
-    [self.uploadProcessDataArray removeAllObjects];
-    [self.uploadFinishDataArray removeAllObjects];
-
+    [Utils showWaitingToView:self.view];
+    
     __weak typeof(self)weakSelf = self;
     
+    __weak typeof(self.view)weakView = self.view;
+    
     __weak typeof(self.mainTableView)weakTableView = self.mainTableView;
+    
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+
+        [weakSelf.downloadProcessDataArray removeAllObjects];
+        [weakSelf.downloadFinishDataArray removeAllObjects];
+        [weakSelf.uploadProcessDataArray removeAllObjects];
+        [weakSelf.uploadFinishDataArray removeAllObjects];
         
-    [kCloudStorageDB getSubFileFolderUpSuccessFileWithPid:self.pid ResultBlock:^(NSArray *result) {
-        
-        for (CSFileDownUpModel *csFileDownUpModel in result) {
-            CSFileDownUpFrameModel *frameModel = [[CSFileDownUpFrameModel alloc]initWithCSFileDownUpModel:csFileDownUpModel];
-            [weakSelf.uploadFinishDataArray addObject:frameModel];
+        [kCloudStorageDB getSubFileFolderUpSuccessFileWithPid:weakSelf.pid ResultBlock:^(NSArray *result) {
             
-        }
+            for (CSFileDownUpModel *csFileDownUpModel in result) {
+                CSFileDownUpFrameModel *frameModel = [[CSFileDownUpFrameModel alloc]initWithCSFileDownUpModel:csFileDownUpModel];
+                [weakSelf.uploadFinishDataArray addObject:frameModel];
+                
+            }
 
-        [weakTableView reloadData];
-    }];
-    
-#warning list根据cagegory =0 及 pid来.首次如果pid不存在, 则使用cagegory =0 , 然后点击后,pid赋值..
-    [kCloudStorageDB getSubFileFolderUpUnFinishedFileWithPid:self.pid ResultBlock:^(NSArray *result) {
+        }];
         
-        for (CSFileDownUpModel *csFileDownUpModel in result) {
+        [kCloudStorageDB getSubFileFolderUpUnFinishedFileWithPid:weakSelf.pid ResultBlock:^(NSArray *result) {
             
-            CSFileDownUpFrameModel *frameModel = [[CSFileDownUpFrameModel alloc]initWithCSFileDownUpModel:csFileDownUpModel];
-            [weakSelf.uploadProcessDataArray addObject:frameModel];
-            
-        }
-        
-        [weakTableView reloadData];
-    }];
-    
-    
-    //下载成功的条件: 符合条件pid的文件,以及文件夹且子文件都成功.
+            for (CSFileDownUpModel *csFileDownUpModel in result) {
+                
+                CSFileDownUpFrameModel *frameModel = [[CSFileDownUpFrameModel alloc]initWithCSFileDownUpModel:csFileDownUpModel];
+                [weakSelf.uploadProcessDataArray addObject:frameModel];
+                
+            }
 
-    [kCloudStorageDB getSubFileFolderDownSuccessFileWithPid:self.pid ResultBlock:^(NSArray *result) {
-       
-        for (CSFileDownUpModel *csFileDownUpModel in result) {
-            CSFileDownUpFrameModel *frameModel = [[CSFileDownUpFrameModel alloc]initWithCSFileDownUpModel:csFileDownUpModel];
-            [weakSelf.downloadFinishDataArray addObject:frameModel];
+        }];
+        
+        //下载成功的条件: 符合条件pid的文件,以及文件夹且子文件都成功.
+        
+        NSLog(@"Finished递归start-ge");
+        [kCloudStorageDB getSubFileFolderDownSuccessFileWithPid:weakSelf.pid ResultBlock:^(NSArray *result) {
+            NSLog(@"Finished递归end-ge,result数量%ld",result.count);
+            for (CSFileDownUpModel *csFileDownUpModel in result) {
+                CSFileDownUpFrameModel *frameModel = [[CSFileDownUpFrameModel alloc]initWithCSFileDownUpModel:csFileDownUpModel];
+                [weakSelf.downloadFinishDataArray addObject:frameModel];
+                
+            }
             
-        }
+        }];
         
-         [weakTableView reloadData];
-    }];
-    
-    //文件夹单独放出来进行判断.
-    
-    [kCloudStorageDB getSubFileFolderDownUnFinishedFileWithPid:self.pid ResultBlock:^(NSArray *result) {
+        //文件夹单独放出来进行判断.
+        NSLog(@"UnFinished递归start-ge");
         
-        for (CSFileDownUpModel *csFileDownUpModel in result) {
+        [kCloudStorageDB getSubFileFolderDownUnFinishedFileWithPid:weakSelf.pid ResultBlock:^(NSArray *result) {
+            NSLog(@"UnFinished递归end-ge,result数量%ld",result.count);
             
-            CSFileDownUpFrameModel *frameModel = [[CSFileDownUpFrameModel alloc]initWithCSFileDownUpModel:csFileDownUpModel];
             
-            [weakSelf.downloadProcessDataArray addObject:frameModel];
-           
-        }
-      
-         [weakTableView reloadData];
-    }];
+            for (CSFileDownUpModel *csFileDownUpModel in result) {
+                
+                CSFileDownUpFrameModel *frameModel = [[CSFileDownUpFrameModel alloc]initWithCSFileDownUpModel:csFileDownUpModel];
+                
+                [weakSelf.downloadProcessDataArray addObject:frameModel];
+                
+            }
+            
+            //内涵尺寸计算,数据多2000+耗时6s,分批加载.
+             NSLog(@"多framemode生成效率");
+
+        }];
+        
+        NSLog(@"结束");
+        dispatch_async(dispatch_get_main_queue(), ^{
+            
+            [Utils HiddenWaitingToView:weakView];
+            
+            [weakTableView reloadData];
+        });
+        
+        
+        
+    });
     
     
+   
 }
 
 
@@ -356,7 +384,8 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
                 
                 dispatch_async(dispatch_get_main_queue(), ^{
                     
-                     [weakTableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
+                    [weakTableView reloadData];
+//                     [weakTableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
                 });
                
             }
@@ -395,7 +424,10 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
                 NSInteger index = [weakself.downloadProcessDataArray indexOfObject:downloaddingFrameModel];
                 
                 dispatch_async(dispatch_get_main_queue(), ^{
-                    [weakTableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
+                    
+                    [weakTableView reloadData];
+                    
+//                    [weakTableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
                   
                 });
                 
@@ -424,8 +456,8 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
 
                         dispatch_async(dispatch_get_main_queue(), ^{
 
-//                            [weakTableView reloadData];
-                            [weakTableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
+                            [weakTableView reloadData];
+//                            [weakTableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
 
                         });
                         
@@ -447,14 +479,14 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
 - (void)registerFileFolderDownloadNotoice
 {
     __weak typeof(self)weakSelf = self;
+    __weak typeof(self.mainTableView)weakTableView = self.mainTableView;
     //新增文件夹下载
     CSTabBarController *tabBarController = (CSTabBarController *)self.tabBarController;
     
     tabBarController.cloudControlerFileDownloadBlock = ^(NSArray *dbModels){
         
         
-          [weakSelf initData];
-#warning 2017-08-01 待完善.以及后续主动更新
+        [weakSelf initData];
         
     };
     
@@ -538,9 +570,18 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
 
         csFileDownUpFrameModel.csFileDownUpModel.downUpStatus = downUpStatus;
 
+        NSInteger index = [weakself.processDataArray indexOfObject:csFileDownUpFrameModel];
+        
+        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:index inSection:0];
+        
+        [weakTableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
+        
+        [weakTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionNone animated:YES];
+        
         //db save
         [kCloudStorageDB updateCSDownUpFileStatusWithCSFileDownUpModel:csFileDownUpFrameModel.csFileDownUpModel];
         
+        
         //center notice.
         if (!csFileDownUpFrameModel.csFileDownUpModel.isdir) {
             
@@ -554,9 +595,7 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
             }
             
             //如果上层文件夹下所有文件都暂停,则上层文件夹状态也为暂停,反之如果文件夹初始暂停,其中某个文件开始,则设置文件夹状态为doing.
-            //取消判断,数据库viewwillapper时会判断.
-#warning 2017-08-02 bug 之:如果此时刷新,则会将同一model当前cell的block重新被父cell下的model抢注册。导致首个回调不体现。解决思路:通知上层只刷新ui,不注册block?
-            
+                   
             if (weakself.parentFileResponseSubFilesBlock) {
                 weakself.parentFileResponseSubFilesBlock(@[csFileDownUpFrameModel.csFileDownUpModel],weakself.parentCSFileDownUpModel,downUpStatus);
             }
@@ -571,10 +610,6 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
                     
                     csFileDownUpModel.downUpStatus = csFileDownUpFrameModel.csFileDownUpModel.downUpStatus;
                     
-                    //移至cengter
-//                    [kCloudStorageDB updateCSDownUpFileStatusWithCSFileDownUpModel:csFileDownUpModel];
-                    //需要先判断是否有同文件在进行,如果有,移除文件夹的callblock.
-                    
                     if (!csFileDownUpModel.isdir && (csFileDownUpModel.downUpStatus != DownUpStatusSuccess )) {
                         
                         [tempArray addObject:csFileDownUpModel];
@@ -593,27 +628,15 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
                 weakself.parentFileResponseSubFilesBlock(tempArray,weakself.parentCSFileDownUpModel,downUpStatus);
             }
          
-            //DB 或者 http 获取所有文件夹下的文件
-            
-            //这里还是需要获取所有文件信息,需要批量操作上传下载.
         }
         
-        NSInteger index = [weakself.processDataArray indexOfObject:csFileDownUpFrameModel];
-        
-        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:index inSection:0];
-        
-        [weakTableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
-        
-        [weakTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionNone animated:YES];
+     
     };
     
-#warning 2017-07-26 待修改为start next先,再1s后success first.
+
     csFileDownUpCell.fileDownUpSuccessBlock = ^(CSFileDownUpFrameModel *downUpFrameModel){
     
-        if (weakself.parentFileResponseSubFilesBlock) {
-            weakself.parentFileResponseSubFilesBlock(@[downUpFrameModel.csFileDownUpModel],weakself.parentCSFileDownUpModel,DownUpStatusSuccess);
-        }
-        
+       
         NSInteger index = 0;
      
         if (downUpFrameModel.csFileDownUpModel.downUpType == DownUpModelUp) {
@@ -635,17 +658,20 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
     
         //or 先next再sucess.
         dispatch_async(dispatch_get_main_queue(), ^{
-#warning section header不刷新,以及小文件成功的刷新不及时
-#warning willwillappear 刷新数据优化.
+
             if (downUpFrameModel.csFileDownUpModel.downUpType == weakself.downUpModel) {
-                [weakTableView reloadData];
-//                [weakTableView moveRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] toIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]];//无法更新num.
-//            
-//                [weakTableView reloadSectionIndexTitles];
                 
+                [weakTableView reloadData];
+
             }
             
         });
+#warning 2017-08-04
+        //等到文件夹成功不可取.(需每个成功,时时更新,解决方案:控制器block,(另开方法)注册down/up,center,每个success的block回调,遍历isdir/md5 file 进行判断.)
+        if (weakself.parentFileResponseSubFilesBlock) {
+            weakself.parentFileResponseSubFilesBlock(!downUpFrameModel.csFileDownUpModel.isdir?@[downUpFrameModel.csFileDownUpModel]:downUpFrameModel.csFileDownUpModel.subFileDownUpModels ,weakself.parentCSFileDownUpModel,DownUpStatusSuccess);
+        }
+        
 
     };
 //
@@ -899,18 +925,18 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
 
 - (void)shareFiles:(NSArray<CSFileDownUpFrameModel*> *)files
 {
-//    __block NSMutableArray *tempArray = [NSMutableArray array];
-//    
-//    [files enumerateObjectsUsingBlock:^(CSFileDownUpFrameModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
-//        [tempArray addObject:obj.csFileDownUpModel];
-//    }];
-//    
-//    NewMessageTransController *tanrsController = [NewMessageTransController new];
-//    tanrsController.csfilesArray = tempArray;
-//    tanrsController.isDisableMulitselect = YES;
-//    IWNavigationController *navCor = [[IWNavigationController alloc]initWithRootViewController:tanrsController];
-//    
-//    [self.navigationController presentViewController:navCor animated:YES completion:nil];
+    __block NSMutableArray *tempArray = [NSMutableArray array];
+    
+    [files enumerateObjectsUsingBlock:^(CSFileDownUpFrameModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
+        [tempArray addObject:obj.csFileDownUpModel];
+    }];
+    
+    NewMessageTransController *tanrsController = [NewMessageTransController new];
+    tanrsController.csfilesArray = tempArray;
+    tanrsController.isDisableMulitselect = YES;
+    IWNavigationController *navCor = [[IWNavigationController alloc]initWithRootViewController:tanrsController];
+    
+    [self.navigationController presentViewController:navCor animated:YES completion:nil];
 }
 
 - (void)shareFile:(CSFileDownUpFrameModel *)file
@@ -926,15 +952,12 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
  */
 - (void)subFileOperateWithSubFiles:(NSArray *)subFiles parentFolderFileModel:(CSFileDownUpModel *)parentFileDownUpModel downUpStutas:(DownUpStatus)downUpStatus
 {
-    
     __weak typeof(self)weakSelf = self;
     
-    __weak typeof(self.mainTableView)weakTableView = self.mainTableView;
-    
-#warning 2017-08-02 bug之首次点击二级页面未注册process - block.
     //先修改文件夹状态.
     NSArray *targetFileFolder = [weakSelf.downloadProcessDataArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"csFileDownUpModel.downUpUUID = %@",parentFileDownUpModel.downUpUUID]];
-    
+    //暂时不考虑同级下的文件
+//    NSArray *targetSameFiles = [weakSelf.downloadProcessDataArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"csFileDownUpModel.md5 = %@ and csFileDownUpModel.name = %@",selfFileDownUpModel.md5,selfFileDownUpModel.name]];//获取取消父节点?for递归文件夹subfiles及文件.
     if (targetFileFolder.count) {
         
         CSFileDownUpFrameModel *folerFileDownUpFrameModel = targetFileFolder[0];
@@ -954,22 +977,14 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
         
         if (newFolderStatus != folerFileDownUpFrameModel.csFileDownUpModel.downUpStatus) {
             
+            folerFileDownUpFrameModel.csFileDownUpModel.downUpStatus = newFolderStatus;
+            
             if (newFolderStatus == DownUpStatusSuccess) {
                 
                 [weakSelf.downloadProcessDataArray removeObject:folerFileDownUpFrameModel];
                 
-                [weakSelf.downloadFinishDataArray addObject:folerFileDownUpFrameModel];
+                [weakSelf.downloadFinishDataArray insertObject:folerFileDownUpFrameModel atIndex:0];
                 
-                [weakTableView reloadData];
-                
-            }else{
-                folerFileDownUpFrameModel.csFileDownUpModel.downUpStatus = newFolderStatus;
-                
-                NSInteger index = [weakSelf.downloadProcessDataArray indexOfObject:folerFileDownUpFrameModel];
-                
-                dispatch_async(dispatch_get_main_queue(), ^{
-                    [weakTableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
-                });
             }
             
             
@@ -978,78 +993,6 @@ typedef void (^ParentFileResponseSubFilesBlock)(NSArray <CSFileDownUpModel *> *s
     }
     
     
-    //如果成功,需要移动.
-//    if (downUpStatus == DownUpStatusSuccess) {
-//        
-//        
-//        CSFileDownUpModel *selfFileDownUpModel = subFiles[0];
-//        
-//        //同理,暂停,开始,都可以.
-//        NSMutableArray *needMoveframeModels = [NSMutableArray array];
-//        NSMutableArray *needMoveIndexs = [NSMutableArray array];
-//        
-//        NSArray *targetFileFolder = [weakSelf.downloadProcessDataArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"csFileDownUpModel.downUpUUID = %@",parentFileDownUpModel.downUpUUID]];
-//        
-//        NSArray *targetSameFiles = [weakSelf.downloadProcessDataArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"csFileDownUpModel.md5 = %@ and csFileDownUpModel.name = %@",selfFileDownUpModel.md5,selfFileDownUpModel.name]];//获取取消父节点?for递归文件夹subfiles及文件.
-//        
-//        if (targetFileFolder.count) {
-//            
-//            CSFileDownUpFrameModel *folerFileDownUpFrameModel = targetFileFolder[0];
-//            folerFileDownUpFrameModel.csFileDownUpModel.downUpStatus = DownUpStatusDoing;
-//            NSArray *targetParentFolderFiles = [folerFileDownUpFrameModel.csFileDownUpModel.subFileDownUpModels filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"md5 = %@ and name = %@",selfFileDownUpModel.md5,selfFileDownUpModel.name]];
-//            for (CSFileDownUpModel *subFilesInFolder in targetParentFolderFiles) {
-//                subFilesInFolder.downUpStatus = selfFileDownUpModel.downUpStatus;
-//                subFilesInFolder.downUpSize = selfFileDownUpModel.downUpSize;
-//            }
-//            
-//            if([weakSelf judgeFileFolderStatusWithFileFolderModel:folerFileDownUpFrameModel.csFileDownUpModel] == DownUpStatusSuccess){
-//                
-//                folerFileDownUpFrameModel.csFileDownUpModel.downUpStatus = DownUpStatusSuccess;
-//                
-//                [needMoveframeModels addObject:folerFileDownUpFrameModel];
-//                
-//                NSInteger index = [weakSelf.downloadProcessDataArray indexOfObject:folerFileDownUpFrameModel];
-//                
-//                [needMoveIndexs addObject:[NSIndexPath indexPathForRow:index inSection:0]];
-//            }
-//            
-//            //修改targetSubFolderFiles状态
-//            //判断subs是否都成功,如果成功,则修改folerFileDownUpModel位置.
-//        }
-//        
-//        if (targetSameFiles.count) {
-//            
-//            for (CSFileDownUpFrameModel *csFileDownUpFrameModel in targetSameFiles) {
-//                csFileDownUpFrameModel.csFileDownUpModel.downUpStatus = selfFileDownUpModel.downUpStatus;
-//                csFileDownUpFrameModel.csFileDownUpModel.downUpSize = selfFileDownUpModel.downUpSize;
-//                
-//                [needMoveframeModels addObjectsFromArray:targetSameFiles];
-//                
-//                NSInteger index = [weakSelf.downloadProcessDataArray indexOfObject:csFileDownUpFrameModel];
-//                
-//                [needMoveIndexs addObject:[NSIndexPath indexPathForRow:index inSection:0]];
-//            }
-//            
-//            
-//            
-//        }
-//        
-//        if (needMoveframeModels.count) {
-//            
-//            [weakSelf.downloadProcessDataArray removeObjectsInArray:needMoveframeModels];
-//            
-//            [weakSelf.downloadFinishDataArray addObjectsFromArray:needMoveframeModels];
-//            
-//            dispatch_async(dispatch_get_main_queue(), ^{
-//                 [weakSelf.mainTableView reloadData];
-//            });
-//           
-//            //                [weakSelf.mainTableView deleteRowsAtIndexPaths:needMoveIndexs withRowAnimation:UITableViewRowAnimationNone];
-//            //                weakSelf.mainTableView i
-//        }
-//        
-//    }
-    
     //递归.
     if (weakSelf.parentFileResponseSubFilesBlock) {
         weakSelf.parentFileResponseSubFilesBlock(subFiles,weakSelf.parentCSFileDownUpModel,downUpStatus);

+ 3 - 2
WSCloudStorage/CloudStorage/CSFirstPageController.m

@@ -184,8 +184,9 @@
     
     if ([self.pid isEqualToString:@"0"] && self.csFileSourceType == CSFileSourceTypeSelf) {
         
-        self.navigationItem.rightBarButtonItems = @[muiltSelectItem, fileClassItem];
-        
+        //self.navigationItem.rightBarButtonItems = @[muiltSelectItem, fileClassItem];
+        self.navigationItem.leftBarButtonItem = fileClassItem;
+        self.navigationItem.rightBarButtonItem = muiltSelectItem;
     }else self.navigationItem.rightBarButtonItems = @[muiltSelectItem];
     
     [self initSubViews];

+ 3 - 8
WSCloudStorage/CloudStorage/CSTabBarController.m

@@ -88,17 +88,12 @@
 {
     
     [kCloudStorageDB getAllProcessOrWaitFileWithResultBlock:^(NSArray *downModels,NSArray *upModels) {
-        
-        for (CSFileDownUpModel *downFileDownUpModel in downModels ) {
-
-            [[CloudStorageDownloadCenter sharedInstance]addOneDownloadWithFileDownUpModel:downFileDownUpModel];
-        }
-        
+        [[CloudStorageDownloadCenter sharedInstance]addOneDownloadWithFileDownUpModels:downModels];
         for (CSFileDownUpModel *upFileDownUpModel in upModels ) {
-            
+    
             [[CloudStorageUploadCenter sharedInstance]addOneFileToUpdateWithCSFileDownUpModel:upFileDownUpModel];
         }
-
+        
         
     }];
     

+ 7 - 5
WSCloudStorage/CloudStorage/DB/CloudStorageDB.m

@@ -42,11 +42,13 @@ static CloudStorageDB *cloudStorageDB;
         BOOL isDirectory_appSuportPath = YES;
         NSError *error;
         NSString *localPath = [appSuportPath stringByAppendingPathComponent:app_Name];
-        BOOL existsDirectory = [[NSFileManager defaultManager]fileExistsAtPath:localPath isDirectory:&isDirectory_appSuportPath];
-        if  (!existsDirectory) {
-            [[NSFileManager defaultManager]createDirectoryAtPath:localPath withIntermediateDirectories:YES attributes:nil error:&error];
-            
-        }
+        [DBConfigureCenter createCacheDirectory:localPath];
+//查无则创建文件夹 已移入 DBConfigureCenter createCacheDirctory
+//        BOOL existsDirectory = [[NSFileManager defaultManager]fileExistsAtPath:localPath isDirectory:&isDirectory_appSuportPath];
+//        if  (!existsDirectory) {
+//            [[NSFileManager defaultManager]createDirectoryAtPath:localPath withIntermediateDirectories:YES attributes:nil error:&error];
+//            
+//        }
         NSString *path = [NSString stringWithFormat:@"%@/%@_cloudStorageDisk.sqlite",localPath,Login_Name];
         //BOOL existsDBfile = [[NSFileManager defaultManager]fileExistsAtPath:appSuportPath isDirectory:(BOOL*)NO];
         

+ 54 - 23
WSCloudStorage/CloudStorage/cloudStorageDown_UpCenter/download/CloudStorageDownloadCenter.m

@@ -153,8 +153,45 @@ static CloudStorageDownloadCenter *cloudStorageDownloadCenter;
 
 - (void)addOneDownloadWithFileDownUpModels:(NSArray *)fileDownUpModels
 {
-    for (CSFileDownUpModel *csFileDownUpModel in fileDownUpModels) {
-        [self addOneDownloadWithFileDownUpModel:csFileDownUpModel];
+   
+    for (CSFileDownUpModel *fileDownUpModel in fileDownUpModels) {
+        
+        //判断是否重复
+        if ([self.totalDownloadTasks objectForKey:fileDownUpModel.downUpUUID]||[self.maxConcurrenceDownloadTasks objectForKey:[self getTrueFileNmae_Md5:fileDownUpModel]] ||fileDownUpModel.isdir) {
+            continue;
+        }
+        
+        //无论成功还是失败还是暂停,都要对队列进行重新排序
+        
+        //进行队列初始化.,如果其中排队的某个暂停,则对其进行重新排队. a->b->c ,if b pause, a.next = b.next
+        
+        
+        if (_lastOneDowunUpModel != fileDownUpModel && _lastOneDowunUpModel) {
+            
+            _lastOneDowunUpModel.nextFileDownUpModel = fileDownUpModel;
+            fileDownUpModel.lastFileDownUpModel = _lastOneDowunUpModel;
+        }
+        
+        if (!_firstOneDowunUpModel) {
+            _firstOneDowunUpModel = fileDownUpModel;
+        }
+        
+        _lastOneDowunUpModel = fileDownUpModel;
+        
+        DownUpStatus oldStatus = fileDownUpModel.downUpStatus;
+        //待存储.并通知translistcontroller.
+        fileDownUpModel.downUpStatus = DownUpStatusWait;
+        
+        [self.totalDownloadTasks setObject:fileDownUpModel forKey:fileDownUpModel.downUpUUID];
+        
+        if (oldStatus != fileDownUpModel.downUpStatus) {
+            [kCloudStorageDB updateCSDownUpFileStatusWithCSFileDownUpModel:fileDownUpModel];
+        }
+        
+    }
+    
+    if (self.maxConcurrenceDownloadTasks.allKeys.count < self.maxConcurrenceDownloadCount) {
+        [self startOneDownloadWithDownUpFileModel:self.firstOneDowunUpModel];
     }
 }
 
@@ -213,14 +250,17 @@ static CloudStorageDownloadCenter *cloudStorageDownloadCenter;
             //待移步至二层operation,且设置时间1s存储一次.
     //        [CloudStorageDB updateCSDownUpFileStatusWithCSFileDownUpModel:fileDownUpModel];
             
+            
             [weakself.maxConcurrenceDownloadTasks removeObjectForKey:[self getTrueFileNmae_Md5:fileDownUpModel]];
+            
             [weakself.totalDownloadTasks removeObjectForKey:fileDownUpModel.downUpUUID];
             
-            if ([_firstOneDowunUpModel.downUpUUID isEqualToString:fileDownUpModel.downUpUUID]) {
+            //&& total.count =0
+            if ([_firstOneDowunUpModel.downUpUUID isEqualToString:fileDownUpModel.downUpUUID] && !weakself.totalDownloadTasks.count) {
                 _firstOneDowunUpModel = nil;
             }
             
-            if ([_lastOneDowunUpModel.downUpUUID isEqualToString:fileDownUpModel.downUpUUID]) {
+            if ([_lastOneDowunUpModel.downUpUUID isEqualToString:fileDownUpModel.downUpUUID] && !weakself.totalDownloadTasks.count) {
                 _lastOneDowunUpModel = nil;
             }
             
@@ -236,7 +276,6 @@ static CloudStorageDownloadCenter *cloudStorageDownloadCenter;
         csDownUpSession.downloadFailedDBBlock = ^(NSString* errMessage,CSFileDownUpModel *fileDownUpModel,NSString *uuid){
             
 
-            
             //重新排队
             if (fileDownUpModel.lastFileDownUpModel && fileDownUpModel.nextFileDownUpModel) {
                 
@@ -254,18 +293,14 @@ static CloudStorageDownloadCenter *cloudStorageDownloadCenter;
                 
             }
             
-            
-            
-    //         [CloudStorageDB updateCSDownUpFileStatusWithCSFileDownUpModel:fileDownUpModel];
-        
-             [weakself.maxConcurrenceDownloadTasks removeObjectForKey:[self getTrueFileNmae_Md5:fileDownUpModel]];
-             [weakself.totalDownloadTasks removeObjectForKey:fileDownUpModel.downUpUUID];
-            
-            if ([_firstOneDowunUpModel.downUpUUID isEqualToString:fileDownUpModel.downUpUUID]) {
+            [weakself.maxConcurrenceDownloadTasks removeObjectForKey:[self getTrueFileNmae_Md5:fileDownUpModel]];
+            [weakself.totalDownloadTasks removeObjectForKey:fileDownUpModel.downUpUUID];
+    
+            if ([_firstOneDowunUpModel.downUpUUID isEqualToString:fileDownUpModel.downUpUUID] && !weakself.totalDownloadTasks.count) {
                 _firstOneDowunUpModel = nil;
             }
             
-            if ([_lastOneDowunUpModel.downUpUUID isEqualToString:fileDownUpModel.downUpUUID]) {
+            if ([_lastOneDowunUpModel.downUpUUID isEqualToString:fileDownUpModel.downUpUUID] && !weakself.totalDownloadTasks.count) {
                 _lastOneDowunUpModel = nil;
             }
             //下一个.
@@ -436,11 +471,11 @@ static CloudStorageDownloadCenter *cloudStorageDownloadCenter;
             
             [self.totalDownloadTasks removeObjectForKey:csfileDownUpModel.downUpUUID];
             
-            if ([_firstOneDowunUpModel.downUpUUID isEqualToString:csfileDownUpModel.downUpUUID]) {
+            if ([_firstOneDowunUpModel.downUpUUID isEqualToString:csfileDownUpModel.downUpUUID] && !self.totalDownloadTasks.count) {
                 _firstOneDowunUpModel = nil;
             }
             
-            if ([_lastOneDowunUpModel.downUpUUID isEqualToString:csfileDownUpModel.downUpUUID]) {
+            if ([_lastOneDowunUpModel.downUpUUID isEqualToString:csfileDownUpModel.downUpUUID] && !self.totalDownloadTasks.count) {
                 _lastOneDowunUpModel = nil;
             }
         }
@@ -460,11 +495,7 @@ static CloudStorageDownloadCenter *cloudStorageDownloadCenter;
     //2.全部开始的,则直接addin队列
     if (downUpStatus == DownUpStatusWait) {
         
-        for (CSFileDownUpModel *csfileDownUpModel in csfileDownUpModels){
-
-            [self addOneDownloadWithFileDownUpModel:csfileDownUpModel];
-            
-        }
+        [self addOneDownloadWithFileDownUpModels:csfileDownUpModels];
         
     }else{
     
@@ -505,11 +536,11 @@ static CloudStorageDownloadCenter *cloudStorageDownloadCenter;
                 //待使用category.反之key=nil的情况.
                 [self.totalDownloadTasks removeObjectForKey:csfileDownUpModel.downUpUUID];
                 
-                if ([_firstOneDowunUpModel.downUpUUID isEqualToString:csfileDownUpModel.downUpUUID]) {
+                if ([_firstOneDowunUpModel.downUpUUID isEqualToString:csfileDownUpModel.downUpUUID] && !self.totalDownloadTasks.count) {
                     _firstOneDowunUpModel = nil;
                 }
                 
-                if ([_lastOneDowunUpModel.downUpUUID isEqualToString:csfileDownUpModel.downUpUUID]) {
+                if ([_lastOneDowunUpModel.downUpUUID isEqualToString:csfileDownUpModel.downUpUUID] && !self.totalDownloadTasks.count) {
                     _lastOneDowunUpModel = nil;
                 }
             }

+ 0 - 2
WSCloudStorage/CloudStorage/model/CSFileDownUpFrameModel.h

@@ -47,6 +47,4 @@
 @property (nonatomic , assign) BOOL isFileExtensionOP;
 @property (nonatomic , assign) BOOL isSelected;
 
-
-
 @end

+ 64 - 64
WSCloudStorage/CloudStorage/view/CSCloudFileDownloadView/CSFileDownUpCell.m

@@ -95,7 +95,7 @@
         speedLabel.font = FileCreateTimeFont;
         [self.contentView addSubview:speedLabel];
         self.speedLabel = speedLabel;
-        
+       
         
         UIButton *fileExtensionSwitchImageView = [[UIButton alloc]init];
         [fileExtensionSwitchImageView addTarget:self action:@selector(extensionSwithOnOff) forControlEvents:UIControlEventTouchUpInside];
@@ -130,7 +130,7 @@
         [self.contentView addSubview:fileExtensionView];
         self.fileExtensionView = fileExtensionView;
         
-        
+      
         
     }
     
@@ -148,7 +148,7 @@
         self.csFileDownUpFrameModel.csFileDownUpModel.downloadSuccessBlock = nil;
         self.csFileDownUpFrameModel.csFileDownUpModel.downloadFailedBlock = nil;
     }else{
-        
+    
         for (CSFileDownUpModel *csFileDownUpModel in self.csFileDownUpFrameModel.csFileDownUpModel.subFileDownUpModels) {
             
             csFileDownUpModel.uploadProgressBlock = nil;
@@ -184,8 +184,8 @@
     if (!self.csFileDownUpFrameModel.csFileDownUpModel.isdir) {
         
         
-        self.csFileDownUpFrameModel.csFileDownUpModel.downloadProgressBlock = ^(NSInteger receivedSize, NSInteger expectedSize, CGFloat progress, NSString *router, CSFileDownUpModel *csfileDownUpModel,NSString *uuid) {
-            
+       self.csFileDownUpFrameModel.csFileDownUpModel.downloadProgressBlock = ^(NSInteger receivedSize, NSInteger expectedSize, CGFloat progress, NSString *router, CSFileDownUpModel *csfileDownUpModel,NSString *uuid) {
+           
             if ([uuid isEqualToString:weakSelf.csFileDownUpFrameModel.csFileDownUpModel.downUpUUID]) {
                 
                 
@@ -256,9 +256,9 @@
             }
             
         };
-        
+
     }else{
-        
+    
         //文件夹
         for (CSFileDownUpModel *csFileDownUpModel in self.csFileDownUpFrameModel.csFileDownUpModel.subFileDownUpModels) {
             
@@ -276,24 +276,24 @@
                     NSDate *now = [NSDate date];
                     //
                     if (!weakSelf.lastRecordTime || [now timeIntervalSinceDate:weakSelf.lastRecordTime] >= 1) {
-                        
+        
                         weakSelf.lastRecordTime = now;
-                        
+        
                         [weakSelf getFolderSizeAndPorcessSizeWithResultBlock:^(NSInteger progressSize, NSInteger totalSize) {
-                            
+        
                             NSInteger speed = progressSize - weakSelf.lastProcessedDataLength;
-                            
+        
                             weakSelf.lastProcessedDataLength = progressSize;
-                            
+        
                             dispatch_async(dispatch_get_main_queue(), ^{
-                                
+        
                                 weakSpeedLabel.text = [NSString stringWithFormat:@"%@/s",[weakSelf bitToKb_MbWithBit:speed]];
-                                
+        
                                 weakDowunLoadControllerView.percent = progressSize*1.0f/totalSize*1.0f;
-                                
+        
                                 weakProcessSizeLabel.text = [NSString stringWithFormat:@"%@/%@",[weakSelf bitToKb_MbWithBit:progressSize],[weakSelf bitToKb_MbWithBit:totalSize]];
                             });
-                            
+        
                             
                             
                             
@@ -311,7 +311,7 @@
             csFileDownUpModel.downloadSuccessBlock = ^(NSInteger receivedSize, NSString *localFullFileRouter, CSFileDownUpModel *callBackFileDownUpModel,NSString *uuid) {
                 //operation 将完整的key传出.
                 NSArray *targetFileModelArray = [weakSelf.csFileDownUpFrameModel.csFileDownUpModel.subFileDownUpModels filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"downUpUUID = %@",uuid]];
-                
+              
                 if (targetFileModelArray.count) {
                     
                     CSFileDownUpModel *subCSFileDownUpModel = targetFileModelArray[0];
@@ -321,38 +321,38 @@
                     [weakSelf getFolderSizeAndPorcessSizeWithResultBlock:^(NSInteger progressSize, NSInteger totalSize) {
                         
                         if (progressSize == totalSize) {
-                            
+                
                             weakSelf.csFileDownUpFrameModel.csFileDownUpModel.downUpStatus = DownUpStatusSuccess;
-                            
+        
                             dispatch_async(dispatch_get_main_queue(), ^{
-                                
+        
                                 [weakSelf initData];
-                                
+        
                                 if (weakSelf.fileDownUpSuccessBlock) {
                                     weakSelf.fileDownUpSuccessBlock(weakSelf.csFileDownUpFrameModel);
                                 }
                             });
                         }
                         
-                    }];
-                }
+                        }];
+                    }
             };
             
             csFileDownUpModel.downloadFailedBlock = ^(NSString *errMessage, CSFileDownUpModel *callBackFileDownUpModel,NSString *uuid) {
                 
                 NSArray *targetFileModelArray = [weakSelf.csFileDownUpFrameModel.csFileDownUpModel.subFileDownUpModels filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"downUpUUID = %@",uuid]];
-                
+ 
                 if (targetFileModelArray.count){
                     
                     CSFileDownUpModel *subCSFileDownUpModel = targetFileModelArray[0];
-                    
+             
                     //都失败的话才赋值文件夹状态为error.待新增
-                    
-                    
+                   
+                   
                 }
                 
             };
-            
+
         }
         
     }
@@ -367,15 +367,15 @@
 - (void)initUpCallBlock
 {
     __weak typeof(self)weakSelf = self;
-    
+
     __weak typeof(self.csFileDownLoadControllerView)weakDowunLoadControllerView = self.csFileDownLoadControllerView;
-    
+
     __weak typeof(self.fileProcessSizeLabel)weakProcessSizeLabel = self.fileProcessSizeLabel;
-    
+
     __weak typeof(self.fileSizeLabel)weakFileSizeLabel = self.fileSizeLabel;
-    
+
     __weak typeof(self.speedLabel)weakSpeedLabel = self.speedLabel;
-    
+
     //up
     if (!weakSelf.csFileDownUpFrameModel.csFileDownUpModel.isdir) {
         self.csFileDownUpFrameModel.csFileDownUpModel.uploadProgressBlock = ^(double progress, NSInteger sendedSize, CSFileDownUpModel *csFileDownUpModel,NSString *uuid) {
@@ -448,12 +448,12 @@
             
             
         };
-        
+
     }else{
-        
+    
         //上传文件夹暂不处理.
     }
-    
+   
 }
 
 
@@ -508,7 +508,7 @@
         
         self.csFileDownLoadControllerView.downUpStatus = self.csFileDownUpFrameModel.csFileDownUpModel.downUpStatus;
     }
-    
+
     //header iamge
     if (self.csFileDownUpFrameModel.csFileDownUpModel.isdir) {
         
@@ -548,7 +548,7 @@
         self.lastProcessedDataLength = self.csFileDownUpFrameModel.csFileDownUpModel.downUpSize;
         self.lastRecordTime = [NSDate date];
         
-        
+
         //部分计算可以移到frammodel.
         
         if (self.csFileDownUpFrameModel.csFileDownUpModel.downUpStatus == DownUpStatusWait) {
@@ -570,13 +570,13 @@
         self.lastRecordTime = [NSDate date];
         
         self.fileSizeLabel.hidden = YES;
-        //TEXT  重新计算
+      //TEXT  重新计算
         __weak typeof(self.fileProcessSizeLabel)weakProcessSizeLabel = self.fileProcessSizeLabel;
         __weak typeof(self.csFileDownLoadControllerView)weakControllerView = self.csFileDownLoadControllerView;
         __weak typeof(self)weakself = self;
-        
+  
         [self getFolderSizeAndPorcessSizeWithResultBlock:^(NSInteger progressSize, NSInteger totalSize) {
-            
+           
             weakProcessSizeLabel.text = [NSString stringWithFormat:@"%@/%@",[self bitToKb_MbWithBit:progressSize],[self bitToKb_MbWithBit:totalSize]];
             weakControllerView.percent = progressSize * 1.0f/totalSize * 1.0f;
             weakself.lastProcessedDataLength = progressSize;
@@ -585,15 +585,15 @@
         self.speedLabel.text = nil;
         
     }
-    
-    
+   
+
 }
 
 - (void)registerDownUpBlock
 {
-    
+  
     __weak typeof(self)weakself = self;
-    
+
     if (!self.csFileDownUpFrameModel.csFileDownUpModel.isdir) {
         if (self.csFileDownUpFrameModel.csFileDownUpModel.downUpType == DownUpModelUp && self.csFileDownUpFrameModel.csFileDownUpModel.downUpStatus != DownUpStatusSuccess) {
             
@@ -603,15 +603,15 @@
             
         }else if(self.csFileDownUpFrameModel.csFileDownUpModel.downUpType == DownUpModelDown && self.csFileDownUpFrameModel.csFileDownUpModel.downUpStatus != DownUpStatusSuccess)
         {
-            
+           
             [[CloudStorageDownloadCenter sharedInstance]registeDownloadBlockForUIWithcsFileDownUpModel:self.csFileDownUpFrameModel.csFileDownUpModel ProcessBlock:self.csFileDownUpFrameModel.csFileDownUpModel.downloadProgressBlock successBlock:self.csFileDownUpFrameModel.csFileDownUpModel.downloadSuccessBlock failBlock:self.csFileDownUpFrameModel.csFileDownUpModel.downloadFailedBlock];
             
         }
     }else{
-        
+    
         NSMutableArray *processModelArray = [NSMutableArray array];
         //应该获取所有子文件
-        
+ 
         for (CSFileDownUpModel *downUpModel in self.csFileDownUpFrameModel.csFileDownUpModel.subFileDownUpModels) {
             if (downUpModel.downUpStatus != DownUpStatusSuccess && downUpModel.downUpSize != downUpModel.size) {
                 
@@ -622,14 +622,14 @@
         
         if (weakself.csFileDownUpFrameModel.csFileDownUpModel.downUpType == DownUpModelUp && weakself.csFileDownUpFrameModel.csFileDownUpModel.downUpStatus != DownUpStatusSuccess) {
             
-            if (processModelArray.count)
-            {
-                for (CSFileDownUpModel *downUpModel in processModelArray) {
-                    
-                    [[CloudStorageUploadCenter sharedInstance]registeUploadForUIWithcsFileDownUpModel:downUpModel ProcessBlock:downUpModel.uploadProgressBlock successBlock:downUpModel.uploadSuccessBlock failBlock:downUpModel.uploadFailedBlock];
-                    
-                }
-            }
+          if (processModelArray.count)
+          {
+              for (CSFileDownUpModel *downUpModel in processModelArray) {
+                  
+                  [[CloudStorageUploadCenter sharedInstance]registeUploadForUIWithcsFileDownUpModel:downUpModel ProcessBlock:downUpModel.uploadProgressBlock successBlock:downUpModel.uploadSuccessBlock failBlock:downUpModel.uploadFailedBlock];
+                  
+              }
+          }
             
             
             //需要initDownUpCallBlock.并且区分..down和up模式
@@ -638,17 +638,17 @@
         {
             
             if (processModelArray.count){
-                
+            
                 for (CSFileDownUpModel *downUpModel in processModelArray) {
                     
                     [[CloudStorageDownloadCenter sharedInstance]registeDownloadBlockForUIWithcsFileDownUpModel:downUpModel ProcessBlock:downUpModel.downloadProgressBlock successBlock:downUpModel.downloadSuccessBlock failBlock:downUpModel.downloadFailedBlock];
-                    
+
                 }
                 
             }
             
         }
-        
+
     }
     
     
@@ -659,7 +659,7 @@
 - (void)getFolderSizeAndPorcessSizeWithResultBlock:(void(^)(NSInteger progressSize, NSInteger totalSize))resultBlock
 {
     
-    
+
     NSInteger totalSize = 0;
     NSInteger progressSize = 0;
     for (CSFileDownUpModel *downUpModel in self.csFileDownUpFrameModel.csFileDownUpModel.subFileDownUpModels) {
@@ -672,8 +672,8 @@
     if (resultBlock) {
         resultBlock(progressSize,totalSize);
     }
-    
-    
+        
+  
 }
 
 - (NSString *)bitToKb_MbWithBit:(NSInteger)bit
@@ -742,7 +742,7 @@
         self.csFileDownUpFrameModel.csFileDownUpModel.downloadProgressBlock = nil;
         self.csFileDownUpFrameModel.csFileDownUpModel.downloadSuccessBlock = nil;
         self.csFileDownUpFrameModel.csFileDownUpModel.downloadFailedBlock = nil;
-        
+                
     }else{
         
         for (CSFileDownUpModel *csFileDownUpModel in self.csFileDownUpFrameModel.csFileDownUpModel.subFileDownUpModels) {
@@ -757,7 +757,7 @@
         }
         
     }
-    
+
 }
 
 

+ 3 - 0
WSCloudStorage/DBManager/DBConfigureCenter.h

@@ -22,4 +22,7 @@
 
 //自动升级
 + (NSArray<DBStructModel *> *)sqlCloumnCheckWithClassName:(Class )className;
+//创建路径
++ (void)createCacheDirectory:(NSString *)path;
+
 @end

+ 13 - 0
WSCloudStorage/DBManager/DBConfigureCenter.m

@@ -205,4 +205,17 @@ static const char  *getPropertyType(objc_property_t property) {
     }
     return "";
 }
+
+/**
+ *  创建缓存目录文件
+ */
++ (void)createCacheDirectory:(NSString *)path
+{
+    
+    NSFileManager *fileManager = [NSFileManager defaultManager];
+    if (![fileManager fileExistsAtPath:path]) {
+        [fileManager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:NULL];
+    }
+}
+
 @end