From 695783bd7203f5a1cec7c877c0b8c82001926f36 Mon Sep 17 00:00:00 2001 From: lovemo <928627819@qq.com> Date: Fri, 8 Apr 2016 17:12:43 +0800 Subject: [PATCH] update kit --- .DS_Store | Bin 6148 -> 6148 bytes SUIMVVMDemo/.DS_Store | Bin 6148 -> 6148 bytes SUIMVVMDemo/Podfile | 4 +- SUIMVVMDemo/Podfile.lock | 74 +- .../AFNetworking/AFHTTPSessionManager.h | 14 +- .../AFNetworking/AFHTTPSessionManager.m | 2 +- .../AFNetworkReachabilityManager.h | 4 +- .../AFNetworkReachabilityManager.m | 27 +- .../AFNetworking/AFSecurityPolicy.h | 2 +- .../AFNetworking/AFSecurityPolicy.m | 2 +- .../AFNetworking/AFURLRequestSerialization.h | 27 +- .../AFNetworking/AFURLRequestSerialization.m | 8 +- .../AFNetworking/AFURLResponseSerialization.h | 2 +- .../AFNetworking/AFURLResponseSerialization.m | 45 +- .../AFNetworking/AFURLSessionManager.h | 31 +- .../AFNetworking/AFURLSessionManager.m | 16 +- SUIMVVMDemo/Pods/AFNetworking/LICENSE | 2 +- SUIMVVMDemo/Pods/AFNetworking/README.md | 8 +- .../AFAutoPurgingImageCache.h | 4 +- .../AFAutoPurgingImageCache.m | 6 +- .../UIKit+AFNetworking/AFImageDownloader.h | 4 +- .../UIKit+AFNetworking/AFImageDownloader.m | 86 +- .../AFNetworkActivityIndicatorManager.h | 2 +- .../AFNetworkActivityIndicatorManager.m | 2 +- .../UIActivityIndicatorView+AFNetworking.h | 2 +- .../UIActivityIndicatorView+AFNetworking.m | 2 +- .../UIButton+AFNetworking.h | 2 +- .../UIButton+AFNetworking.m | 6 +- .../UIImageView+AFNetworking.h | 2 +- .../UIImageView+AFNetworking.m | 2 +- .../UIKit+AFNetworking/UIKit+AFNetworking.h | 2 +- .../UIProgressView+AFNetworking.h | 2 +- .../UIProgressView+AFNetworking.m | 2 +- .../UIRefreshControl+AFNetworking.h | 2 +- .../UIRefreshControl+AFNetworking.m | 2 +- .../UIWebView+AFNetworking.h | 2 +- .../UIWebView+AFNetworking.m | 6 +- SUIMVVMDemo/Pods/FMDB/README.markdown | 2 +- SUIMVVMDemo/Pods/FMDB/src/fmdb/FMDatabase.m | 128 +- .../Private/SUIMVVMNetwork/SMKDataService.h | 1 - .../Headers/Private/SUIMVVMNetwork/SMKHttp.h | 1 - .../Private/SUIMVVMNetwork/SMKHttpConfig.h | 1 - .../Private/SUIMVVMNetwork/SMKNetworkPublic.h | 1 - .../Private/SUIMVVMNetwork/SMKSingleton.h | 1 - .../Headers/Private/SUIMVVMStore/SMKStore.h | 1 - .../Private/SUIMVVMStore/SMKStorePublic.h | 1 - .../Private/SUIMVVMStore/YTKKeyValueStore.h | 1 - .../Public/SUIMVVMNetwork/SMKDataService.h | 1 - .../Headers/Public/SUIMVVMNetwork/SMKHttp.h | 1 - .../Public/SUIMVVMNetwork/SMKHttpConfig.h | 1 - .../Public/SUIMVVMNetwork/SMKNetworkPublic.h | 1 - .../Public/SUIMVVMNetwork/SMKSingleton.h | 1 - .../Headers/Public/SUIMVVMStore/SMKStore.h | 1 - .../Public/SUIMVVMStore/SMKStorePublic.h | 1 - .../Public/SUIMVVMStore/YTKKeyValueStore.h | 1 - .../Pods/Local Podspecs/SUIUtils.podspec.json | 4 +- SUIMVVMDemo/Pods/Manifest.lock | 74 +- .../Pods/Masonry/Masonry/MASViewConstraint.m | 29 +- SUIMVVMDemo/Pods/Masonry/README.md | 4 +- .../Pods/Pods.xcodeproj/project.pbxproj | 2448 +++++++---------- SUIMVVMDemo/Pods/SUIMVVMNetwork/LICENSE | 21 - SUIMVVMDemo/Pods/SUIMVVMNetwork/README.md | 116 - .../SUIMVVMNetwork/SMKNetworkPublic.h | 17 - .../SUIMVVMNetwork/SMKDataService.h | 35 - .../SUIMVVMNetwork/SMKDataService.m | 72 - .../SUIMVVMNetwork/SUIMVVMNetwork/SMKHttp.h | 178 -- .../SUIMVVMNetwork/SUIMVVMNetwork/SMKHttp.m | 394 --- .../SUIMVVMNetwork/SMKHttpConfig.h | 21 - .../SUIMVVMNetwork/SMKHttpConfig.m | 70 - SUIMVVMDemo/Pods/SUIMVVMStore/LICENSE | 21 - SUIMVVMDemo/Pods/SUIMVVMStore/README.md | 102 - .../SUIMVVMStore/SMKStorePublic.h | 14 - .../SUIMVVMStore/SUIMVVMStore/SMKStore.h | 105 - .../SUIMVVMStore/SUIMVVMStore/SMKStore.m | 162 -- .../YTKKeyValueStore/YTKKeyValueStore.h | 66 - .../SUIUtils/UIKit/UIView+SUIAdditions.m | 4 +- .../AFNetworking/AFNetworking.xcconfig | 2 +- .../Target Support Files/FMDB/FMDB.xcconfig | 2 +- .../MJExtension/MJExtension.xcconfig | 2 +- .../MJRefresh/MJRefresh.xcconfig | 2 +- .../Masonry/Masonry.xcconfig | 2 +- .../Pods/Pods-acknowledgements.markdown | 52 +- .../Pods/Pods-acknowledgements.plist | 60 +- .../Pods/Pods.debug.xcconfig | 6 +- .../Pods/Pods.release.xcconfig | 6 +- .../SUIMVVMNetwork/SUIMVVMNetwork-dummy.m | 5 - .../SUIMVVMNetwork/SUIMVVMNetwork-prefix.pch | 4 - .../SUIMVVMNetwork/SUIMVVMNetwork.xcconfig | 5 - .../SUIMVVMStore/SUIMVVMStore-dummy.m | 5 - .../SUIMVVMStore/SUIMVVMStore-prefix.pch | 4 - .../SUIMVVMStore/SUIMVVMStore.xcconfig | 5 - .../SUIUtils/SUIUtils.xcconfig | 2 +- .../UITableView+FDTemplateLayoutCell.xcconfig | 2 +- .../SUIMVVMDemo.xcodeproj/project.pbxproj | 457 +-- SUIMVVMDemo/SUIMVVMDemo/.DS_Store | Bin 8196 -> 6148 bytes .../SUIMVVMDemo/Base.lproj/Main.storyboard | 82 +- SUIMVVMDemo/SUIMVVMDemo/Classes/.DS_Store | Bin 8196 -> 8196 bytes SUIMVVMDemo/SUIMVVMDemo/Classes/Src/.DS_Store | Bin 6148 -> 6148 bytes .../View/FirstCell.h} | 8 +- .../Classes/Src/FirstExample/View/FirstCell.m | 32 + .../Src/FirstExample/View/FirstCell.xib | 90 + .../ViewModel/FirstViewModel.h} | 4 +- .../FirstExample/ViewModel/FirstViewModel.m | 34 + .../Classes/Src/FourthExample/.DS_Store | Bin 6148 -> 0 bytes .../Src/FourthExample/Controller/.DS_Store | Bin 6148 -> 0 bytes .../Src/FourthExample/Controller/FourthVC.h | 13 - .../Src/FourthExample/Controller/FourthVC.m | 61 - .../Classes/Src/FourthExample/Model/.DS_Store | Bin 6148 -> 0 bytes .../Src/FourthExample/Model/FourthModel.h | 13 - .../Src/FourthExample/Model/FourthModel.m | 13 - .../Classes/Src/FourthExample/View/.DS_Store | Bin 6148 -> 0 bytes .../View/FourthView/FourthView.h | 13 - .../View/FourthView/FourthView.m | 14 - .../View/FourthView/FourthView.xib | 19 - .../View/FourthView2/FourthView2.h | 13 - .../View/FourthView2/FourthView2.m | 13 - .../View/FourthView2/FourthView2.xib | 19 - .../Src/FourthExample/ViewManger/.DS_Store | Bin 6148 -> 0 bytes .../FourthViewManger/FourthViewManger.h | 14 - .../FourthViewManger/FourthViewManger.m | 70 - .../FourthViewManger2/FourthViewManger2.h | 15 - .../FourthViewManger2/FourthViewManger2.m | 70 - .../Src/FourthExample/ViewModel/.DS_Store | Bin 6148 -> 0 bytes .../FourthExample/ViewModel/FourthViewModel.h | 13 - .../FourthExample/ViewModel/FourthViewModel.m | 13 - .../Src/firstExample/Controller/FirstVC.m | 107 +- .../Controller/TestViewDelegate.h | 13 - .../Controller/TestViewDelegate.m | 15 - .../Src/firstExample/Model/FirstModel.h | 4 +- .../Src/firstExample/Model/FirstRequest.h | 15 + .../Src/firstExample/Model/FirstRequest.m | 21 + .../Classes/Src/firstExample/View/BQCell.h | 18 - .../Classes/Src/firstExample/View/BQCell.m | 47 - .../Classes/Src/firstExample/View/BQCell.xib | 72 - .../firstExample/ViewModel/BQGetDataList.h | 13 - .../firstExample/ViewModel/BQGetDataList.m | 29 - .../Src/firstExample/ViewModel/BQViewModel.m | 33 - .../ViewModel/FirstTableViewModel.h | 17 + .../ViewModel/FirstTableViewModel.m | 83 + .../Classes/Src/secondExample/.DS_Store | Bin 6148 -> 0 bytes .../Src/secondExample/Controller/.DS_Store | Bin 6148 -> 0 bytes .../Src/secondExample/Controller/SecondVC.m | 74 - .../Src/secondExample/Model/BQTestModel.h | 17 - .../Src/secondExample/Model/BQTestModel.m | 14 - .../Src/secondExample/View/BQCollectionCell.h | 17 - .../Src/secondExample/View/BQCollectionCell.m | 31 - .../secondExample/View/BQCollectionCell.xib | 57 - .../secondExample/ViewModel/BQGetDataList2.h | 13 - .../secondExample/ViewModel/BQGetDataList2.m | 26 - .../secondExample/ViewModel/BQViewModel2.h | 13 - .../secondExample/ViewModel/BQViewModel2.m | 30 - .../Src/thirdExample/Controller/ThirdVC.m | 60 +- .../Src/thirdExample/Model/ThirdModel.h | 5 +- .../Src/thirdExample/Model/ThirdRequest.h | 15 + .../Src/thirdExample/Model/ThirdRequest.m | 26 + .../Classes/Src/thirdExample/View/ThirdView.m | 8 +- .../Src/thirdExample/View/ThirdView.xib | 2 +- .../thirdExample/ViewManger/ThirdViewManger.h | 2 +- .../thirdExample/ViewManger/ThirdViewManger.m | 57 +- .../thirdExample/ViewModel/ThirdViewModel.h | 4 +- .../thirdExample/ViewModel/ThirdViewModel.m | 38 +- SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/.DS_Store | Bin 6148 -> 6148 bytes .../SUIMVVMKit/NSObject+SMKProperties.h | 18 + .../SUIMVVMKit/NSObject+SMKProperties.m | 39 + .../SUIMVVMKit/NSObject+SMKRequest.h | 56 + .../SUIMVVMKit/NSObject+SMKRequest.m | 84 + .../SUIMVVMDemo/SUIMVVMKit/SMKAction.h | 114 + .../SUIMVVMDemo/SUIMVVMKit/SMKAction.m | 234 ++ .../{SUIMVVMKit/Constant => }/SMKConstant.h | 0 .../SUIMVVMDemo/SUIMVVMKit/SMKExtendPublic.h | 19 + .../SUIMVVMKit/SMKRequestProtocol.h | 27 + .../SUIMVVMKit}/SMKSingleton.h | 0 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKStore.h | 86 + .../SUIMVVMKit/SMKStore.m} | 146 +- ...ocolDelegate.h => SMKViewMangerProtocol.h} | 15 +- .../SUIMVVMKit/SMKViewModelProtocol.h | 43 + .../SUIMVVMDemo/SUIMVVMKit/SMKViewProtocol.h | 9 +- .../SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit.h | 21 +- .../SUIMVVMKit/SUIMVVMKit/.DS_Store | Bin 6148 -> 0 bytes .../SUIMVVMKit/SUIMVVMKit/Base/.DS_Store | Bin 6148 -> 0 bytes .../Base/SMKBaseCollectionViewManger.h | 83 - .../Base/SMKBaseCollectionViewManger.m | 112 - .../SUIMVVMKit/Base/SMKBaseTableViewManger.h | 52 - .../SUIMVVMKit/Base/SMKBaseTableViewManger.m | 107 - .../SUIMVVMKit/SUIMVVMKit/Extend/.DS_Store | Bin 6148 -> 0 bytes .../SUIMVVMKit/Extend/SMKExtendPublic.h | 20 - ...tionView+CollectionDataDelegateAdditions.h | 20 - ...tionView+CollectionDataDelegateAdditions.m | 30 - .../Extend/UICollectionViewCell+Extension.h | 32 - .../Extend/UICollectionViewCell+Extension.m | 47 - .../UITableView+TableDataDelegateAdditions.h | 20 - .../UITableView+TableDataDelegateAdditions.m | 30 - .../Extend/UITableViewCell+Extension.h | 30 - .../Extend/UITableViewCell+Extension.m | 46 - .../SUIMVVMKit/Extend/UIView+Configure.h | 18 - .../SUIMVVMKit/Extend/UIView+Configure.m | 21 - .../Extend/UIView+ViewDelegateAdditions.h | 24 - .../UIViewController+ControllerAdditions.h | 20 - .../UIViewController+ControllerAdditions.m | 47 - .../SUIMVVMKit/SUIMVVMKit/Handler/.DS_Store | Bin 6148 -> 0 bytes .../SMKViewControllerProtocolDelegate.h | 22 - .../Protocol/SMKViewModelProtocolDelegate.h | 44 - .../UICollectionViewCell+SMKConfigure.h | 46 + .../UICollectionViewCell+SMKConfigure.m | 51 + .../SUIMVVMKit/UITableViewCell+SMKConfigure.h | 46 + .../SUIMVVMKit/UITableViewCell+SMKConfigure.m | 51 + .../SUIMVVMKit/UIView+SMKConfigure.h | 24 + .../SUIMVVMKit/UIView+SMKConfigure.m | 24 + .../SUIMVVMDemo/SUIMVVMKit/UIView+SMKEvents.h | 34 + ...DelegateAdditions.m => UIView+SMKEvents.m} | 16 +- SUIMVVMKit.podspec | 7 +- SUIMVVMKit/.DS_Store | Bin 6148 -> 6148 bytes SUIMVVMKit/NSObject+SMKProperties.h | 18 + SUIMVVMKit/NSObject+SMKProperties.m | 39 + SUIMVVMKit/NSObject+SMKRequest.h | 56 + SUIMVVMKit/NSObject+SMKRequest.m | 84 + SUIMVVMKit/SMKAction.h | 114 + SUIMVVMKit/SMKAction.m | 234 ++ .../{SUIMVVMKit/Constant => }/SMKConstant.h | 0 SUIMVVMKit/SMKExtendPublic.h | 19 + SUIMVVMKit/SMKRequestProtocol.h | 27 + .../Constant => SUIMVVMKit}/SMKSingleton.h | 0 SUIMVVMKit/SMKStore.h | 86 + SUIMVVMKit/SMKStore.m | 428 +++ ...ocolDelegate.h => SMKViewMangerProtocol.h} | 15 +- SUIMVVMKit/SMKViewModelProtocol.h | 43 + .../SMKViewProtocol.h | 9 +- SUIMVVMKit/SUIMVVMKit.h | 21 +- SUIMVVMKit/SUIMVVMKit/.DS_Store | Bin 6148 -> 0 bytes SUIMVVMKit/SUIMVVMKit/Base/.DS_Store | Bin 6148 -> 0 bytes .../Base/SMKBaseCollectionViewManger.h | 83 - .../Base/SMKBaseCollectionViewManger.m | 112 - .../SUIMVVMKit/Base/SMKBaseTableViewManger.h | 52 - .../SUIMVVMKit/Base/SMKBaseTableViewManger.m | 107 - SUIMVVMKit/SUIMVVMKit/Constant/SMKSingleton.h | 66 - SUIMVVMKit/SUIMVVMKit/Extend/.DS_Store | Bin 6148 -> 0 bytes .../SUIMVVMKit/Extend/SMKExtendPublic.h | 20 - ...tionView+CollectionDataDelegateAdditions.h | 20 - ...tionView+CollectionDataDelegateAdditions.m | 30 - .../Extend/UICollectionViewCell+Extension.h | 32 - .../Extend/UICollectionViewCell+Extension.m | 47 - .../UITableView+TableDataDelegateAdditions.h | 20 - .../UITableView+TableDataDelegateAdditions.m | 30 - .../Extend/UITableViewCell+Extension.h | 30 - .../Extend/UITableViewCell+Extension.m | 46 - .../SUIMVVMKit/Extend/UIView+Configure.h | 18 - .../SUIMVVMKit/Extend/UIView+Configure.m | 21 - .../Extend/UIView+ViewDelegateAdditions.h | 24 - .../UIViewController+ControllerAdditions.h | 20 - .../UIViewController+ControllerAdditions.m | 47 - SUIMVVMKit/SUIMVVMKit/Handler/.DS_Store | Bin 6148 -> 0 bytes .../SMKViewControllerProtocolDelegate.h | 22 - .../Protocol/SMKViewModelProtocolDelegate.h | 44 - .../Foundation/NSArray+SUIAdditions.h | 79 - .../Foundation/NSArray+SUIAdditions.m | 190 -- .../Foundation/NSArray+SUISafeAccess.h | 84 - .../Foundation/NSArray+SUISafeAccess.m | 276 -- .../SUIUtils/Foundation/NSData+SUIAdditions.h | 36 - .../SUIUtils/Foundation/NSData+SUIAdditions.m | 41 - .../SUIUtils/Foundation/NSDate+SUIAdditions.h | 40 - .../SUIUtils/Foundation/NSDate+SUIAdditions.m | 31 - .../Foundation/NSDictionary+SUIAdditions.h | 48 - .../Foundation/NSDictionary+SUIAdditions.m | 118 - .../Foundation/NSDictionary+SUISafeAccess.h | 84 - .../Foundation/NSDictionary+SUISafeAccess.m | 277 -- .../Foundation/NSIndexPath+SUIAdditions.h | 27 - .../Foundation/NSIndexPath+SUIAdditions.m | 44 - .../Foundation/NSNumber+SUIAdditions.h | 63 - .../Foundation/NSNumber+SUIAdditions.m | 125 - .../Foundation/NSObject+SUIAdditions.h | 45 - .../Foundation/NSObject+SUIAdditions.m | 73 - .../Foundation/NSString+SUIAdditions.h | 117 - .../Foundation/NSString+SUIAdditions.m | 331 --- .../SUIUtils/Foundation/NSString+SUICrypto.h | 106 - .../SUIUtils/Foundation/NSString+SUICrypto.m | 365 --- .../SUIUtils/Foundation/NSString+SUIRegex.h | 110 - .../SUIUtils/Foundation/NSString+SUIRegex.m | 99 - SUIMVVMKit/SUIUtils/Helper/SUITableHelper.h | 40 - SUIMVVMKit/SUIUtils/Helper/SUITableHelper.m | 265 -- .../SUIUtils/Helper/UITableView+SUIHelper.h | 34 - .../SUIUtils/Helper/UITableView+SUIHelper.m | 78 - .../Helper/UITableViewCell+SUIHelper.h | 26 - .../Helper/UITableViewCell+SUIHelper.m | 13 - SUIMVVMKit/SUIUtils/SUIUtils.h | 74 - SUIMVVMKit/SUIUtils/Tool/SUIMacro.h | 288 -- SUIMVVMKit/SUIUtils/Tool/SUITool+Camera.h | 27 - SUIMVVMKit/SUIUtils/Tool/SUITool+Camera.m | 45 - SUIMVVMKit/SUIUtils/Tool/SUITool+Delay.h | 25 - SUIMVVMKit/SUIUtils/Tool/SUITool+Delay.m | 47 - .../SUIUtils/Tool/SUITool+FileManager.h | 35 - .../SUIUtils/Tool/SUITool+FileManager.m | 110 - SUIMVVMKit/SUIUtils/Tool/SUITool+OpenURL.h | 25 - SUIMVVMKit/SUIUtils/Tool/SUITool+OpenURL.m | 41 - SUIMVVMKit/SUIUtils/Tool/SUITool.h | 29 - SUIMVVMKit/SUIUtils/Tool/SUITool.m | 73 - .../SUIUtils/UIKit/UIButton+SUIAdditions.h | 95 - .../SUIUtils/UIKit/UIButton+SUIAdditions.m | 301 -- .../SUIUtils/UIKit/UIControl+SUIAdditions.h | 26 - .../SUIUtils/UIKit/UIControl+SUIAdditions.m | 72 - .../SUIUtils/UIKit/UIImage+SUIAdditions.h | 23 - .../SUIUtils/UIKit/UIImage+SUIAdditions.m | 46 - .../SUIUtils/UIKit/UILabel+SUIAdditions.h | 36 - .../SUIUtils/UIKit/UILabel+SUIAdditions.m | 64 - .../UINavigationController+SUIAdditions.h | 52 - .../UINavigationController+SUIAdditions.m | 133 - .../UIKit/UIScrollView+SUIAdditions.h | 67 - .../UIKit/UIScrollView+SUIAdditions.m | 169 -- .../UIKit/UIStoryboardSegue+SUIAdditions.h | 13 - .../UIKit/UIStoryboardSegue+SUIAdditions.m | 46 - .../UIKit/UITableViewCell+SUIAdditions.h | 21 - .../UIKit/UITableViewCell+SUIAdditions.m | 33 - .../SUIUtils/UIKit/UITextField+SUIAdditions.h | 23 - .../SUIUtils/UIKit/UITextField+SUIAdditions.m | 39 - .../SUIUtils/UIKit/UITextView+SUIAdditions.h | 23 - .../SUIUtils/UIKit/UITextView+SUIAdditions.m | 39 - .../SUIUtils/UIKit/UIView+SUIAdditions.h | 119 - .../SUIUtils/UIKit/UIView+SUIAdditions.m | 467 ---- .../UIKit/UIViewController+SUIAdditions.h | 94 - .../UIKit/UIViewController+SUIAdditions.m | 298 -- .../UITableView+FDIndexPathHeightCache.h | 49 - .../UITableView+FDIndexPathHeightCache.m | 289 -- .../UITableView+FDKeyedHeightCache.h | 40 - .../UITableView+FDKeyedHeightCache.m | 86 - .../UITableView+FDTemplateLayoutCell.h | 96 - .../UITableView+FDTemplateLayoutCell.m | 178 -- .../UITableView+FDTemplateLayoutCellDebug.h | 37 - .../UITableView+FDTemplateLayoutCellDebug.m | 42 - .../UICollectionViewCell+SMKConfigure.h | 46 + .../UICollectionViewCell+SMKConfigure.m | 51 + SUIMVVMKit/UITableViewCell+SMKConfigure.h | 46 + SUIMVVMKit/UITableViewCell+SMKConfigure.m | 51 + SUIMVVMKit/UIView+SMKConfigure.h | 24 + SUIMVVMKit/UIView+SMKConfigure.m | 24 + SUIMVVMKit/UIView+SMKEvents.h | 34 + ...DelegateAdditions.m => UIView+SMKEvents.m} | 16 +- 335 files changed, 4506 insertions(+), 13869 deletions(-) delete mode 120000 SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKDataService.h delete mode 120000 SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKHttp.h delete mode 120000 SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKHttpConfig.h delete mode 120000 SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKNetworkPublic.h delete mode 120000 SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKSingleton.h delete mode 120000 SUIMVVMDemo/Pods/Headers/Private/SUIMVVMStore/SMKStore.h delete mode 120000 SUIMVVMDemo/Pods/Headers/Private/SUIMVVMStore/SMKStorePublic.h delete mode 120000 SUIMVVMDemo/Pods/Headers/Private/SUIMVVMStore/YTKKeyValueStore.h delete mode 120000 SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKDataService.h delete mode 120000 SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKHttp.h delete mode 120000 SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKHttpConfig.h delete mode 120000 SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKNetworkPublic.h delete mode 120000 SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKSingleton.h delete mode 120000 SUIMVVMDemo/Pods/Headers/Public/SUIMVVMStore/SMKStore.h delete mode 120000 SUIMVVMDemo/Pods/Headers/Public/SUIMVVMStore/SMKStorePublic.h delete mode 120000 SUIMVVMDemo/Pods/Headers/Public/SUIMVVMStore/YTKKeyValueStore.h delete mode 100644 SUIMVVMDemo/Pods/SUIMVVMNetwork/LICENSE delete mode 100644 SUIMVVMDemo/Pods/SUIMVVMNetwork/README.md delete mode 100644 SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SMKNetworkPublic.h delete mode 100644 SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKDataService.h delete mode 100644 SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKDataService.m delete mode 100755 SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttp.h delete mode 100755 SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttp.m delete mode 100644 SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttpConfig.h delete mode 100644 SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttpConfig.m delete mode 100644 SUIMVVMDemo/Pods/SUIMVVMStore/LICENSE delete mode 100644 SUIMVVMDemo/Pods/SUIMVVMStore/README.md delete mode 100644 SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/SMKStorePublic.h delete mode 100644 SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/SUIMVVMStore/SMKStore.h delete mode 100644 SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/SUIMVVMStore/SMKStore.m delete mode 100644 SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/YTKKeyValueStore/YTKKeyValueStore.h delete mode 100644 SUIMVVMDemo/Pods/Target Support Files/SUIMVVMNetwork/SUIMVVMNetwork-dummy.m delete mode 100644 SUIMVVMDemo/Pods/Target Support Files/SUIMVVMNetwork/SUIMVVMNetwork-prefix.pch delete mode 100644 SUIMVVMDemo/Pods/Target Support Files/SUIMVVMNetwork/SUIMVVMNetwork.xcconfig delete mode 100644 SUIMVVMDemo/Pods/Target Support Files/SUIMVVMStore/SUIMVVMStore-dummy.m delete mode 100644 SUIMVVMDemo/Pods/Target Support Files/SUIMVVMStore/SUIMVVMStore-prefix.pch delete mode 100644 SUIMVVMDemo/Pods/Target Support Files/SUIMVVMStore/SUIMVVMStore.xcconfig rename SUIMVVMDemo/SUIMVVMDemo/Classes/Src/{secondExample/Controller/SecondVC.h => FirstExample/View/FirstCell.h} (72%) create mode 100755 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/View/FirstCell.m create mode 100755 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/View/FirstCell.xib rename SUIMVVMDemo/SUIMVVMDemo/Classes/Src/{firstExample/ViewModel/BQViewModel.h => FirstExample/ViewModel/FirstViewModel.h} (64%) create mode 100755 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/ViewModel/FirstViewModel.m delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/.DS_Store delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Controller/.DS_Store delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Controller/FourthVC.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Controller/FourthVC.m delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Model/.DS_Store delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Model/FourthModel.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Model/FourthModel.m delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/.DS_Store delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView/FourthView.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView/FourthView.m delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView/FourthView.xib delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView2/FourthView2.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView2/FourthView2.m delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView2/FourthView2.xib delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/.DS_Store delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger/FourthViewManger.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger/FourthViewManger.m delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger2/FourthViewManger2.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger2/FourthViewManger2.m delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewModel/.DS_Store delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewModel/FourthViewModel.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewModel/FourthViewModel.m delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Controller/TestViewDelegate.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Controller/TestViewDelegate.m create mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstRequest.h create mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstRequest.m delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/View/BQCell.h delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/View/BQCell.m delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/View/BQCell.xib delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/BQGetDataList.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/BQGetDataList.m delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/BQViewModel.m create mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/FirstTableViewModel.h create mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/FirstTableViewModel.m delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/.DS_Store delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/Controller/.DS_Store delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/Controller/SecondVC.m delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/Model/BQTestModel.h delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/Model/BQTestModel.m delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/View/BQCollectionCell.h delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/View/BQCollectionCell.m delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/View/BQCollectionCell.xib delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQGetDataList2.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQGetDataList2.m delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQViewModel2.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQViewModel2.m create mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Model/ThirdRequest.h create mode 100644 SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Model/ThirdRequest.m create mode 100755 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKProperties.h create mode 100755 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKProperties.m create mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKRequest.h create mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKRequest.m create mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKAction.h create mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKAction.m rename SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/{SUIMVVMKit/Constant => }/SMKConstant.h (100%) create mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKExtendPublic.h create mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKRequestProtocol.h rename SUIMVVMDemo/{Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork => SUIMVVMDemo/SUIMVVMKit}/SMKSingleton.h (100%) create mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKStore.h rename SUIMVVMDemo/{Pods/SUIMVVMStore/SUIMVVMStore/YTKKeyValueStore/YTKKeyValueStore.m => SUIMVVMDemo/SUIMVVMKit/SMKStore.m} (69%) rename SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/{SUIMVVMKit/Protocol/SMKViewMangerProtocolDelegate.h => SMKViewMangerProtocol.h} (86%) create mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKViewModelProtocol.h rename SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewProtocolDelegate.h => SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKViewProtocol.h (67%) delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/.DS_Store delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/.DS_Store delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseCollectionViewManger.h delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseCollectionViewManger.m delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.h delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.m delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/.DS_Store delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/SMKExtendPublic.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionView+CollectionDataDelegateAdditions.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionView+CollectionDataDelegateAdditions.m delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.h delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.m delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.m delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.h delete mode 100755 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.m delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.m delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.m delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Handler/.DS_Store delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewControllerProtocolDelegate.h delete mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewModelProtocolDelegate.h create mode 100755 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UICollectionViewCell+SMKConfigure.h create mode 100755 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UICollectionViewCell+SMKConfigure.m create mode 100755 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UITableViewCell+SMKConfigure.h create mode 100755 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UITableViewCell+SMKConfigure.m create mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UIView+SMKConfigure.h create mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UIView+SMKConfigure.m create mode 100644 SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UIView+SMKEvents.h rename SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/{SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.m => UIView+SMKEvents.m} (65%) create mode 100755 SUIMVVMKit/NSObject+SMKProperties.h create mode 100755 SUIMVVMKit/NSObject+SMKProperties.m create mode 100644 SUIMVVMKit/NSObject+SMKRequest.h create mode 100644 SUIMVVMKit/NSObject+SMKRequest.m create mode 100644 SUIMVVMKit/SMKAction.h create mode 100644 SUIMVVMKit/SMKAction.m rename SUIMVVMKit/{SUIMVVMKit/Constant => }/SMKConstant.h (100%) create mode 100644 SUIMVVMKit/SMKExtendPublic.h create mode 100644 SUIMVVMKit/SMKRequestProtocol.h rename {SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Constant => SUIMVVMKit}/SMKSingleton.h (100%) create mode 100644 SUIMVVMKit/SMKStore.h create mode 100644 SUIMVVMKit/SMKStore.m rename SUIMVVMKit/{SUIMVVMKit/Protocol/SMKViewMangerProtocolDelegate.h => SMKViewMangerProtocol.h} (86%) create mode 100644 SUIMVVMKit/SMKViewModelProtocol.h rename SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewProtocolDelegate.h => SUIMVVMKit/SMKViewProtocol.h (67%) delete mode 100644 SUIMVVMKit/SUIMVVMKit/.DS_Store delete mode 100644 SUIMVVMKit/SUIMVVMKit/Base/.DS_Store delete mode 100755 SUIMVVMKit/SUIMVVMKit/Base/SMKBaseCollectionViewManger.h delete mode 100755 SUIMVVMKit/SUIMVVMKit/Base/SMKBaseCollectionViewManger.m delete mode 100755 SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.h delete mode 100755 SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.m delete mode 100755 SUIMVVMKit/SUIMVVMKit/Constant/SMKSingleton.h delete mode 100644 SUIMVVMKit/SUIMVVMKit/Extend/.DS_Store delete mode 100644 SUIMVVMKit/SUIMVVMKit/Extend/SMKExtendPublic.h delete mode 100644 SUIMVVMKit/SUIMVVMKit/Extend/UICollectionView+CollectionDataDelegateAdditions.h delete mode 100644 SUIMVVMKit/SUIMVVMKit/Extend/UICollectionView+CollectionDataDelegateAdditions.m delete mode 100755 SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.h delete mode 100755 SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.m delete mode 100644 SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.h delete mode 100644 SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.m delete mode 100755 SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.h delete mode 100755 SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.m delete mode 100644 SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.h delete mode 100644 SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.m delete mode 100644 SUIMVVMKit/SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.h delete mode 100644 SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.h delete mode 100644 SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.m delete mode 100644 SUIMVVMKit/SUIMVVMKit/Handler/.DS_Store delete mode 100644 SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewControllerProtocolDelegate.h delete mode 100644 SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewModelProtocolDelegate.h delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSArray+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSArray+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSArray+SUISafeAccess.h delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSArray+SUISafeAccess.m delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSData+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSData+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSDate+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSDate+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUISafeAccess.h delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUISafeAccess.m delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSIndexPath+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSIndexPath+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSNumber+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSNumber+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSObject+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSObject+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSString+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSString+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSString+SUICrypto.h delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSString+SUICrypto.m delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSString+SUIRegex.h delete mode 100644 SUIMVVMKit/SUIUtils/Foundation/NSString+SUIRegex.m delete mode 100644 SUIMVVMKit/SUIUtils/Helper/SUITableHelper.h delete mode 100644 SUIMVVMKit/SUIUtils/Helper/SUITableHelper.m delete mode 100644 SUIMVVMKit/SUIUtils/Helper/UITableView+SUIHelper.h delete mode 100644 SUIMVVMKit/SUIUtils/Helper/UITableView+SUIHelper.m delete mode 100644 SUIMVVMKit/SUIUtils/Helper/UITableViewCell+SUIHelper.h delete mode 100644 SUIMVVMKit/SUIUtils/Helper/UITableViewCell+SUIHelper.m delete mode 100644 SUIMVVMKit/SUIUtils/SUIUtils.h delete mode 100644 SUIMVVMKit/SUIUtils/Tool/SUIMacro.h delete mode 100644 SUIMVVMKit/SUIUtils/Tool/SUITool+Camera.h delete mode 100644 SUIMVVMKit/SUIUtils/Tool/SUITool+Camera.m delete mode 100644 SUIMVVMKit/SUIUtils/Tool/SUITool+Delay.h delete mode 100644 SUIMVVMKit/SUIUtils/Tool/SUITool+Delay.m delete mode 100644 SUIMVVMKit/SUIUtils/Tool/SUITool+FileManager.h delete mode 100644 SUIMVVMKit/SUIUtils/Tool/SUITool+FileManager.m delete mode 100644 SUIMVVMKit/SUIUtils/Tool/SUITool+OpenURL.h delete mode 100644 SUIMVVMKit/SUIUtils/Tool/SUITool+OpenURL.m delete mode 100644 SUIMVVMKit/SUIUtils/Tool/SUITool.h delete mode 100644 SUIMVVMKit/SUIUtils/Tool/SUITool.m delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UIButton+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UIButton+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UIControl+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UIControl+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UIImage+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UIImage+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UILabel+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UILabel+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UINavigationController+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UINavigationController+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UIScrollView+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UIScrollView+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UITableViewCell+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UITableViewCell+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UITextField+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UITextField+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UITextView+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UITextView+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UIView+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UIView+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UIViewController+SUIAdditions.h delete mode 100644 SUIMVVMKit/SUIUtils/UIKit/UIViewController+SUIAdditions.m delete mode 100644 SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDIndexPathHeightCache.h delete mode 100644 SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDIndexPathHeightCache.m delete mode 100644 SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDKeyedHeightCache.h delete mode 100644 SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDKeyedHeightCache.m delete mode 100644 SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell.h delete mode 100644 SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell.m delete mode 100644 SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCellDebug.h delete mode 100644 SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCellDebug.m create mode 100755 SUIMVVMKit/UICollectionViewCell+SMKConfigure.h create mode 100755 SUIMVVMKit/UICollectionViewCell+SMKConfigure.m create mode 100755 SUIMVVMKit/UITableViewCell+SMKConfigure.h create mode 100755 SUIMVVMKit/UITableViewCell+SMKConfigure.m create mode 100644 SUIMVVMKit/UIView+SMKConfigure.h create mode 100644 SUIMVVMKit/UIView+SMKConfigure.m create mode 100644 SUIMVVMKit/UIView+SMKEvents.h rename SUIMVVMKit/{SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.m => UIView+SMKEvents.m} (65%) diff --git a/.DS_Store b/.DS_Store index 84d631c9c9952e3cbf8b438d464548c6c611326f..bcd6a0d5fba5901423d5244f1b5d5d9af6217be0 100644 GIT binary patch delta 82 zcmV-Y0ImOoFoZC$F#-YllQIITFd2J$GdMLYATls9eJmh*F)}tcEFd;9HGO>$l?VtM oDK$Y&S#W)dqNAjxrl+XH#*+#I9|6ac3<4UnL<7MDvj+(M4%b7=ozp8 diff --git a/SUIMVVMDemo/.DS_Store b/SUIMVVMDemo/.DS_Store index 4c2ae5d1c6834225782d4cf7774bb3cd27b7bb3d..d9194b106662fc74870d45bb46332a325ce887fc 100644 GIT binary patch delta 82 zcmZoMXffFEorS~9#6(BI(8zT2f0jjzOnH)%6WNUTbMswXQc6pb85k~WA828ioWN!b X6iY!Dn;gl`$Jj8jaQN7@?S delta 82 zcmZoMXffFEorS~F%uq+c*wAqEf0jjzOlDgrC$bsw=jOY(q?DE XD3*dQHaU`=k1=3k;rz|)9Dn%%P`nzp diff --git a/SUIMVVMDemo/Podfile b/SUIMVVMDemo/Podfile index 50a6209..eaec2a1 100644 --- a/SUIMVVMDemo/Podfile +++ b/SUIMVVMDemo/Podfile @@ -1,7 +1,5 @@ platform :ios, '7.0' pod 'AFNetworking', '>= 3.0' pod 'MJExtension' -pod 'MJRefresh' -pod 'Masonry' -pod 'SUIMVVMNetwork' +pod 'FMDB' pod 'SUIUtils', :git => 'https://github.com/randomprocess/SUIUtils' \ No newline at end of file diff --git a/SUIMVVMDemo/Podfile.lock b/SUIMVVMDemo/Podfile.lock index e666a8d..f7c9678 100644 --- a/SUIMVVMDemo/Podfile.lock +++ b/SUIMVVMDemo/Podfile.lock @@ -1,58 +1,46 @@ PODS: - - AFNetworking (3.0.4): - - AFNetworking/NSURLSession (= 3.0.4) - - AFNetworking/Reachability (= 3.0.4) - - AFNetworking/Security (= 3.0.4) - - AFNetworking/Serialization (= 3.0.4) - - AFNetworking/UIKit (= 3.0.4) - - AFNetworking/NSURLSession (3.0.4): + - AFNetworking (3.1.0): + - AFNetworking/NSURLSession (= 3.1.0) + - AFNetworking/Reachability (= 3.1.0) + - AFNetworking/Security (= 3.1.0) + - AFNetworking/Serialization (= 3.1.0) + - AFNetworking/UIKit (= 3.1.0) + - AFNetworking/NSURLSession (3.1.0): - AFNetworking/Reachability - AFNetworking/Security - AFNetworking/Serialization - - AFNetworking/Reachability (3.0.4) - - AFNetworking/Security (3.0.4) - - AFNetworking/Serialization (3.0.4) - - AFNetworking/UIKit (3.0.4): + - AFNetworking/Reachability (3.1.0) + - AFNetworking/Security (3.1.0) + - AFNetworking/Serialization (3.1.0) + - AFNetworking/UIKit (3.1.0): - AFNetworking/NSURLSession - - FMDB (2.6): - - FMDB/standard (= 2.6) - - FMDB/standard (2.6) - - Masonry (0.6.4) + - FMDB (2.6.2): + - FMDB/standard (= 2.6.2) + - FMDB/standard (2.6.2) + - Masonry (1.0.0) - MJExtension (3.0.10) - MJRefresh (3.1.0) - - SUIMVVMNetwork (0.0.3): - - SUIMVVMNetwork/SUIMVVMNetwork (= 0.0.3) - - SUIMVVMNetwork/SUIMVVMNetwork (0.0.3): - - AFNetworking (>= 3.0) - - SUIMVVMStore - - SUIMVVMStore (0.0.8): - - SUIMVVMStore/SUIMVVMStore (= 0.0.8) - - SUIMVVMStore/YTKKeyValueStore (= 0.0.8) - - SUIMVVMStore/SUIMVVMStore (0.0.8): - - SUIMVVMStore/YTKKeyValueStore - - SUIMVVMStore/YTKKeyValueStore (0.0.8): - - FMDB - - SUIUtils (0.0.1): - - SUIUtils/Foundation (= 0.0.1) - - SUIUtils/Helper (= 0.0.1) - - SUIUtils/Tool (= 0.0.1) - - SUIUtils/UIKit (= 0.0.1) - - SUIUtils/Foundation (0.0.1): + - SUIUtils (0.0.2): + - SUIUtils/Foundation (= 0.0.2) + - SUIUtils/Helper (= 0.0.2) + - SUIUtils/Tool (= 0.0.2) + - SUIUtils/UIKit (= 0.0.2) + - SUIUtils/Foundation (0.0.2): - SUIUtils/Tool - - SUIUtils/Helper (0.0.1): + - SUIUtils/Helper (0.0.2): - SUIUtils/UIKit - UITableView+FDTemplateLayoutCell (~> 1.4) - - SUIUtils/Tool (0.0.1) - - SUIUtils/UIKit (0.0.1): + - SUIUtils/Tool (0.0.2) + - SUIUtils/UIKit (0.0.2): - SUIUtils/Foundation - UITableView+FDTemplateLayoutCell (1.4) DEPENDENCIES: - AFNetworking (>= 3.0) + - FMDB - Masonry - MJExtension - MJRefresh - - SUIMVVMNetwork - SUIUtils (from `https://github.com/randomprocess/SUIUtils`) EXTERNAL SOURCES: @@ -61,18 +49,16 @@ EXTERNAL SOURCES: CHECKOUT OPTIONS: SUIUtils: - :commit: a4267058ca70f53402726f05b8e32411606b52df + :commit: f0685ad7a76db3f5880fc3fbe894b31a2085d308 :git: https://github.com/randomprocess/SUIUtils SPEC CHECKSUMS: - AFNetworking: a0075feb321559dc78d9d85b55d11caa19eabb93 - FMDB: c1968bab3ab0aed38f66cb778ae1e7fa9a652b6e - Masonry: 281802d04d787ea2973179ee8bcb50500579ede2 + AFNetworking: 5e0e199f73d8626b11e79750991f5d173d1f8b67 + FMDB: 854a0341b4726e53276f2a8996f06f1b80f9259a + Masonry: b529bb169217897b6354d4b56b1fada6d475b13d MJExtension: d86aacb740c87519d20e3cca55b6fa4be6cc7548 MJRefresh: 743e6404967d1c2c688472ea3ecfde247d872db4 - SUIMVVMNetwork: 68310f14b8b6361620fb3f30052d8ea283d99fd9 - SUIMVVMStore: a393af1cc70ecec19e571791e7f143e023f21fac - SUIUtils: c1b214bac5b9cb2726e43299ab36a6dc28c7a2d8 + SUIUtils: b4dc603df7a7f08dab0005522353414260a1b719 UITableView+FDTemplateLayoutCell: 234e1582bcc4e18461af91155123bb96538ed030 COCOAPODS: 0.39.0 diff --git a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h index 55ed92e..5ce279a 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h +++ b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h @@ -1,5 +1,5 @@ // AFHTTPSessionManager.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -150,7 +150,7 @@ NS_ASSUME_NONNULL_BEGIN @param URLString The URL string used to create the request URL. @param parameters The parameters to be encoded according to the client request serializer. - @param progress A block object to be executed when the download progress is updated. Note this block is called on the session queue, not the main queue. + @param downloadProgress A block object to be executed when the download progress is updated. Note this block is called on the session queue, not the main queue. @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. @@ -158,7 +158,7 @@ NS_ASSUME_NONNULL_BEGIN */ - (nullable NSURLSessionDataTask *)GET:(NSString *)URLString parameters:(nullable id)parameters - progress:(nullable void (^)(NSProgress *downloadProgress)) downloadProgress + progress:(nullable void (^)(NSProgress *downloadProgress))downloadProgress success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure; @@ -197,7 +197,7 @@ NS_ASSUME_NONNULL_BEGIN @param URLString The URL string used to create the request URL. @param parameters The parameters to be encoded according to the client request serializer. - @param progress A block object to be executed when the upload progress is updated. Note this block is called on the session queue, not the main queue. + @param uploadProgress A block object to be executed when the upload progress is updated. Note this block is called on the session queue, not the main queue. @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. @@ -205,7 +205,7 @@ NS_ASSUME_NONNULL_BEGIN */ - (nullable NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(nullable id)parameters - progress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgress + progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgress success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure; @@ -232,7 +232,7 @@ NS_ASSUME_NONNULL_BEGIN @param URLString The URL string used to create the request URL. @param parameters The parameters to be encoded according to the client request serializer. @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. - @param progress A block object to be executed when the upload progress is updated. Note this block is called on the session queue, not the main queue. + @param uploadProgress A block object to be executed when the upload progress is updated. Note this block is called on the session queue, not the main queue. @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. @@ -241,7 +241,7 @@ NS_ASSUME_NONNULL_BEGIN - (nullable NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(nullable id)parameters constructingBodyWithBlock:(nullable void (^)(id formData))block - progress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgress + progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgress success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure; diff --git a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m index a28cc6e..2591070 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m +++ b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m @@ -1,5 +1,5 @@ // AFHTTPSessionManager.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h index 4cf0496..0feb18d 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h +++ b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h @@ -1,5 +1,5 @@ // AFNetworkReachabilityManager.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -38,7 +38,7 @@ NS_ASSUME_NONNULL_BEGIN Reachability can be used to determine background information about why a network operation failed, or to trigger a network operation retrying when a connection is established. It should not be used to prevent a user from initiating a network request, as it's possible that an initial request may be required to establish reachability. - See Apple's Reachability Sample Code (https://developer.apple.com/library/ios/samplecode/reachability/) + See Apple's Reachability Sample Code ( https://developer.apple.com/library/ios/samplecode/reachability/ ) @warning Instances of `AFNetworkReachabilityManager` must be started with `-startMonitoring` before reachability status can be determined. */ diff --git a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m index 5fba0f7..d458364 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m +++ b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m @@ -1,5 +1,5 @@ // AFNetworkReachabilityManager.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -106,7 +106,7 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) { } @interface AFNetworkReachabilityManager () -@property (readwrite, nonatomic, strong) id networkReachability; +@property (readonly, nonatomic, assign) SCNetworkReachabilityRef networkReachability; @property (readwrite, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus; @property (readwrite, nonatomic, copy) AFNetworkReachabilityStatusBlock networkReachabilityStatusBlock; @end @@ -123,24 +123,24 @@ + (instancetype)sharedManager { return _sharedManager; } -#ifndef __clang_analyzer__ + (instancetype)managerForDomain:(NSString *)domain { SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, [domain UTF8String]); AFNetworkReachabilityManager *manager = [[self alloc] initWithReachability:reachability]; + + CFRelease(reachability); return manager; } -#endif -#ifndef __clang_analyzer__ + (instancetype)managerForAddress:(const void *)address { SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr *)address); AFNetworkReachabilityManager *manager = [[self alloc] initWithReachability:reachability]; + CFRelease(reachability); + return manager; } -#endif + (instancetype)manager { @@ -164,7 +164,7 @@ - (instancetype)initWithReachability:(SCNetworkReachabilityRef)reachability { return nil; } - self.networkReachability = CFBridgingRelease(reachability); + _networkReachability = CFRetain(reachability); self.networkReachabilityStatus = AFNetworkReachabilityStatusUnknown; return self; @@ -177,6 +177,10 @@ - (instancetype)init NS_UNAVAILABLE - (void)dealloc { [self stopMonitoring]; + + if (_networkReachability != NULL) { + CFRelease(_networkReachability); + } } #pragma mark - @@ -213,14 +217,13 @@ - (void)startMonitoring { }; - id networkReachability = self.networkReachability; SCNetworkReachabilityContext context = {0, (__bridge void *)callback, AFNetworkReachabilityRetainCallback, AFNetworkReachabilityReleaseCallback, NULL}; - SCNetworkReachabilitySetCallback((__bridge SCNetworkReachabilityRef)networkReachability, AFNetworkReachabilityCallback, &context); - SCNetworkReachabilityScheduleWithRunLoop((__bridge SCNetworkReachabilityRef)networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes); + SCNetworkReachabilitySetCallback(self.networkReachability, AFNetworkReachabilityCallback, &context); + SCNetworkReachabilityScheduleWithRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0),^{ SCNetworkReachabilityFlags flags; - if (SCNetworkReachabilityGetFlags((__bridge SCNetworkReachabilityRef)networkReachability, &flags)) { + if (SCNetworkReachabilityGetFlags(self.networkReachability, &flags)) { AFPostReachabilityStatusChange(flags, callback); } }); @@ -231,7 +234,7 @@ - (void)stopMonitoring { return; } - SCNetworkReachabilityUnscheduleFromRunLoop((__bridge SCNetworkReachabilityRef)self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes); + SCNetworkReachabilityUnscheduleFromRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes); } #pragma mark - diff --git a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h index 90fa212..c005efa 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h +++ b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h @@ -1,5 +1,5 @@ // AFSecurityPolicy.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m index 3704cca..ec81d37 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m +++ b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m @@ -1,5 +1,5 @@ // AFSecurityPolicy.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h index 134b7dd..694696b 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h +++ b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h @@ -1,5 +1,5 @@ // AFURLRequestSerialization.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -30,6 +30,31 @@ NS_ASSUME_NONNULL_BEGIN +/** + Returns a percent-escaped string following RFC 3986 for a query string key or value. + RFC 3986 states that the following characters are "reserved" characters. + - General Delimiters: ":", "#", "[", "]", "@", "?", "/" + - Sub-Delimiters: "!", "$", "&", "'", "(", ")", "*", "+", ",", ";", "=" + + In RFC 3986 - Section 3.4, it states that the "?" and "/" characters should not be escaped to allow + query strings to include a URL. Therefore, all "reserved" characters with the exception of "?" and "/" + should be percent-escaped in the query string. + + @param string The string to be percent-escaped. + + @return The percent-escaped string. + */ +FOUNDATION_EXPORT NSString * AFPercentEscapedStringFromString(NSString *string); + +/** + A helper method to generate encoded url query parameters for appending to the end of a URL. + + @param parameters A dictionary of key/values to be encoded. + + @return A url encoded query string + */ +FOUNDATION_EXPORT NSString * AFQueryStringFromParameters(NSDictionary *parameters); + /** The `AFURLRequestSerialization` protocol is adopted by an object that encodes parameters for a specified HTTP requests. Request serializers may encode parameters as query strings, HTTP bodies, setting the appropriate HTTP header fields as necessary. diff --git a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m index bbab7c4..9a2ac98 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m +++ b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m @@ -1,5 +1,5 @@ // AFURLRequestSerialization.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -44,7 +44,7 @@ - parameter string: The string to be percent-escaped. - returns: The percent-escaped string. */ -static NSString * AFPercentEscapedStringFromString(NSString *string) { +NSString * AFPercentEscapedStringFromString(NSString *string) { static NSString * const kAFCharactersGeneralDelimitersToEncode = @":#[]@"; // does not include "?" or "/" due to RFC 3986 - Section 3.4 static NSString * const kAFCharactersSubDelimitersToEncode = @"!$&'()*+,;="; @@ -119,7 +119,7 @@ - (NSString *)URLEncodedStringValue { FOUNDATION_EXPORT NSArray * AFQueryStringPairsFromDictionary(NSDictionary *dictionary); FOUNDATION_EXPORT NSArray * AFQueryStringPairsFromKeyAndValue(NSString *key, id value); -static NSString * AFQueryStringFromParameters(NSDictionary *parameters) { +NSString * AFQueryStringFromParameters(NSDictionary *parameters) { NSMutableArray *mutablePairs = [NSMutableArray array]; for (AFQueryStringPair *pair in AFQueryStringPairsFromDictionary(parameters)) { [mutablePairs addObject:[pair URLEncodedStringValue]]; @@ -500,7 +500,7 @@ - (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request } if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) { - if (query) { + if (query && query.length > 0) { mutableRequest.URL = [NSURL URLWithString:[[mutableRequest.URL absoluteString] stringByAppendingFormat:mutableRequest.URL.query ? @"&%@" : @"?%@", query]]; } } else { diff --git a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h index f9e14c6..a9430ad 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h +++ b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h @@ -1,5 +1,5 @@ // AFURLResponseSerialization.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m index ef5e334..5e46799 100755 --- a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m +++ b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m @@ -1,5 +1,5 @@ // AFURLResponseSerialization.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -115,7 +115,9 @@ - (BOOL)validateResponse:(NSHTTPURLResponse *)response NSError *validationError = nil; if (response && [response isKindOfClass:[NSHTTPURLResponse class]]) { - if (self.acceptableContentTypes && ![self.acceptableContentTypes containsObject:[response MIMEType]]) { + if (self.acceptableContentTypes && ![self.acceptableContentTypes containsObject:[response MIMEType]] && + !([response MIMEType] == nil && [data length] == 0)) { + if ([data length] > 0 && [response URL]) { NSMutableDictionary *mutableUserInfo = [@{ NSLocalizedDescriptionKey: [NSString stringWithFormat:NSLocalizedStringFromTable(@"Request failed: unacceptable content-type: %@", @"AFNetworking", nil), [response MIMEType]], @@ -240,40 +242,15 @@ - (id)responseObjectForResponse:(NSURLResponse *)response } } - // Workaround for behavior of Rails to return a single space for `head :ok` (a workaround for a bug in Safari), which is not interpreted as valid input by NSJSONSerialization. - // See https://github.com/rails/rails/issues/1742 - NSStringEncoding stringEncoding = self.stringEncoding; - if (response.textEncodingName) { - CFStringEncoding encoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)response.textEncodingName); - if (encoding != kCFStringEncodingInvalidId) { - stringEncoding = CFStringConvertEncodingToNSStringEncoding(encoding); - } - } - id responseObject = nil; NSError *serializationError = nil; - @autoreleasepool { - NSString *responseString = [[NSString alloc] initWithData:data encoding:stringEncoding]; - if (responseString && ![responseString isEqualToString:@" "]) { - // Workaround for a bug in NSJSONSerialization when Unicode character escape codes are used instead of the actual character - // See http://stackoverflow.com/a/12843465/157142 - data = [responseString dataUsingEncoding:NSUTF8StringEncoding]; - - if (data) { - if ([data length] > 0) { - responseObject = [NSJSONSerialization JSONObjectWithData:data options:self.readingOptions error:&serializationError]; - } else { - return nil; - } - } else { - NSDictionary *userInfo = @{ - NSLocalizedDescriptionKey: NSLocalizedStringFromTable(@"Data failed decoding as a UTF-8 string", @"AFNetworking", nil), - NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:NSLocalizedStringFromTable(@"Could not decode string: %@", @"AFNetworking", nil), responseString] - }; - - serializationError = [NSError errorWithDomain:AFURLResponseSerializationErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:userInfo]; - } - } + // Workaround for behavior of Rails to return a single space for `head :ok` (a workaround for a bug in Safari), which is not interpreted as valid input by NSJSONSerialization. + // See https://github.com/rails/rails/issues/1742 + BOOL isSpace = [data isEqualToData:[NSData dataWithBytes:" " length:1]]; + if (data.length > 0 && !isSpace) { + responseObject = [NSJSONSerialization JSONObjectWithData:data options:self.readingOptions error:&serializationError]; + } else { + return nil; } if (self.removesKeysWithNullValues && responseObject) { diff --git a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h index be91828..89909fe 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h +++ b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h @@ -1,5 +1,5 @@ // AFURLSessionManager.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -51,6 +51,7 @@ - `URLSession:willPerformHTTPRedirection:newRequest:completionHandler:` - `URLSession:task:didReceiveChallenge:completionHandler:` - `URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:` + - `URLSession:task:needNewBodyStream:` - `URLSession:task:didCompleteWithError:` ### `NSURLSessionDataDelegate` @@ -213,13 +214,13 @@ NS_ASSUME_NONNULL_BEGIN Creates an `NSURLSessionDataTask` with the specified request. @param request The HTTP request for the request. - @param uploadProgress A block object to be executed when the upload progress is updated. Note this block is called on the session queue, not the main queue. - @param downloadProgress A block object to be executed when the download progress is updated. Note this block is called on the session queue, not the main queue. + @param uploadProgressBlock A block object to be executed when the upload progress is updated. Note this block is called on the session queue, not the main queue. + @param downloadProgressBlock A block object to be executed when the download progress is updated. Note this block is called on the session queue, not the main queue. @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. */ - (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request - uploadProgress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgressBlock - downloadProgress:(nullable void (^)(NSProgress *downloadProgress)) downloadProgressBlock + uploadProgress:(nullable void (^)(NSProgress *uploadProgress))uploadProgressBlock + downloadProgress:(nullable void (^)(NSProgress *downloadProgress))downloadProgressBlock completionHandler:(nullable void (^)(NSURLResponse *response, id _Nullable responseObject, NSError * _Nullable error))completionHandler; ///--------------------------- @@ -231,14 +232,14 @@ NS_ASSUME_NONNULL_BEGIN @param request The HTTP request for the request. @param fileURL A URL to the local file to be uploaded. - @param progress A block object to be executed when the upload progress is updated. Note this block is called on the session queue, not the main queue. + @param uploadProgressBlock A block object to be executed when the upload progress is updated. Note this block is called on the session queue, not the main queue. @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. @see `attemptsToRecreateUploadTasksForBackgroundSessions` */ - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL - progress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgressBlock + progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgressBlock completionHandler:(nullable void (^)(NSURLResponse *response, id _Nullable responseObject, NSError * _Nullable error))completionHandler; /** @@ -246,23 +247,23 @@ NS_ASSUME_NONNULL_BEGIN @param request The HTTP request for the request. @param bodyData A data object containing the HTTP body to be uploaded. - @param progress A block object to be executed when the upload progress is updated. Note this block is called on the session queue, not the main queue. + @param uploadProgressBlock A block object to be executed when the upload progress is updated. Note this block is called on the session queue, not the main queue. @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. */ - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromData:(nullable NSData *)bodyData - progress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgressBlock + progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgressBlock completionHandler:(nullable void (^)(NSURLResponse *response, id _Nullable responseObject, NSError * _Nullable error))completionHandler; /** Creates an `NSURLSessionUploadTask` with the specified streaming request. @param request The HTTP request for the request. - @param progress A block object to be executed when the upload progress is updated. Note this block is called on the session queue, not the main queue. + @param uploadProgressBlock A block object to be executed when the upload progress is updated. Note this block is called on the session queue, not the main queue. @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. */ - (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request - progress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgressBlock + progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgressBlock completionHandler:(nullable void (^)(NSURLResponse *response, id _Nullable responseObject, NSError * _Nullable error))completionHandler; ///----------------------------- @@ -273,14 +274,14 @@ NS_ASSUME_NONNULL_BEGIN Creates an `NSURLSessionDownloadTask` with the specified request. @param request The HTTP request for the request. - @param progress A block object to be executed when the download progress is updated. Note this block is called on the session queue, not the main queue. + @param downloadProgressBlock A block object to be executed when the download progress is updated. Note this block is called on the session queue, not the main queue. @param destination A block object to be executed in order to determine the destination of the downloaded file. This block takes two arguments, the target path & the server response, and returns the desired file URL of the resulting download. The temporary file used during the download will be automatically deleted after being moved to the returned URL. @param completionHandler A block to be executed when a task finishes. This block has no return value and takes three arguments: the server response, the path of the downloaded file, and the error describing the network or parsing error that occurred, if any. @warning If using a background `NSURLSessionConfiguration` on iOS, these blocks will be lost when the app is terminated. Background sessions may prefer to use `-setDownloadTaskDidFinishDownloadingBlock:` to specify the URL for saving the downloaded file, rather than the destination block of this method. */ - (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request - progress:(nullable void (^)(NSProgress *downloadProgress)) downloadProgressBlock + progress:(nullable void (^)(NSProgress *downloadProgress))downloadProgressBlock destination:(nullable NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination completionHandler:(nullable void (^)(NSURLResponse *response, NSURL * _Nullable filePath, NSError * _Nullable error))completionHandler; @@ -288,12 +289,12 @@ NS_ASSUME_NONNULL_BEGIN Creates an `NSURLSessionDownloadTask` with the specified resume data. @param resumeData The data used to resume downloading. - @param progress A block object to be executed when the download progress is updated. Note this block is called on the session queue, not the main queue. + @param downloadProgressBlock A block object to be executed when the download progress is updated. Note this block is called on the session queue, not the main queue. @param destination A block object to be executed in order to determine the destination of the downloaded file. This block takes two arguments, the target path & the server response, and returns the desired file URL of the resulting download. The temporary file used during the download will be automatically deleted after being moved to the returned URL. @param completionHandler A block to be executed when a task finishes. This block has no return value and takes three arguments: the server response, the path of the downloaded file, and the error describing the network or parsing error that occurred, if any. */ - (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData - progress:(nullable void (^)(NSProgress *downloadProgress)) downloadProgressBlock + progress:(nullable void (^)(NSProgress *downloadProgress))downloadProgressBlock destination:(nullable NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination completionHandler:(nullable void (^)(NSURLResponse *response, NSURL * _Nullable filePath, NSError * _Nullable error))completionHandler; diff --git a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m index de447ae..ef2108c 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m +++ b/SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m @@ -1,5 +1,5 @@ // AFURLSessionManager.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -222,15 +222,15 @@ - (void)cleanUpProgressForTask:(NSURLSessionTask *)task { } - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { - if ([object isKindOfClass:[NSURLSessionTask class]]) { + if ([object isKindOfClass:[NSURLSessionTask class]] || [object isKindOfClass:[NSURLSessionDownloadTask class]]) { if ([keyPath isEqualToString:NSStringFromSelector(@selector(countOfBytesReceived))]) { - self.downloadProgress.completedUnitCount = [change[@"new"] longLongValue]; + self.downloadProgress.completedUnitCount = [change[NSKeyValueChangeNewKey] longLongValue]; } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(countOfBytesExpectedToReceive))]) { - self.downloadProgress.totalUnitCount = [change[@"new"] longLongValue]; + self.downloadProgress.totalUnitCount = [change[NSKeyValueChangeNewKey] longLongValue]; } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(countOfBytesSent))]) { - self.uploadProgress.completedUnitCount = [change[@"new"] longLongValue]; + self.uploadProgress.completedUnitCount = [change[NSKeyValueChangeNewKey] longLongValue]; } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(countOfBytesExpectedToSend))]) { - self.uploadProgress.totalUnitCount = [change[@"new"] longLongValue]; + self.uploadProgress.totalUnitCount = [change[NSKeyValueChangeNewKey] longLongValue]; } } else if ([object isEqual:self.downloadProgress]) { @@ -983,7 +983,7 @@ - (void)URLSession:(NSURLSession *)session disposition = NSURLSessionAuthChallengePerformDefaultHandling; } } else { - disposition = NSURLSessionAuthChallengeRejectProtectionSpace; + disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; } } else { disposition = NSURLSessionAuthChallengePerformDefaultHandling; @@ -1030,7 +1030,7 @@ - (void)URLSession:(NSURLSession *)session disposition = NSURLSessionAuthChallengeUseCredential; credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; } else { - disposition = NSURLSessionAuthChallengeRejectProtectionSpace; + disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; } } else { disposition = NSURLSessionAuthChallengePerformDefaultHandling; diff --git a/SUIMVVMDemo/Pods/AFNetworking/LICENSE b/SUIMVVMDemo/Pods/AFNetworking/LICENSE index 91f125b..3fbc2c9 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/LICENSE +++ b/SUIMVVMDemo/Pods/AFNetworking/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +Copyright (c) 2011–2016 Alamofire Software Foundation (http://alamofire.org/) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/README.md b/SUIMVVMDemo/Pods/AFNetworking/README.md index f784681..53cb202 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/README.md +++ b/SUIMVVMDemo/Pods/AFNetworking/README.md @@ -4,7 +4,7 @@ [![Build Status](https://travis-ci.org/AFNetworking/AFNetworking.svg)](https://travis-ci.org/AFNetworking/AFNetworking) [![codecov.io](https://codecov.io/github/AFNetworking/AFNetworking/coverage.svg?branch=master)](https://codecov.io/github/AFNetworking/AFNetworking?branch=master) -[![Cocoapods Compatible](https://img.shields.io/cocoapods/v/AFNetworking.svg)](https://img.shields.io/cocoapods/v/AFNetworking.svg) +[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/AFNetworking.svg)](https://img.shields.io/cocoapods/v/AFNetworking.svg) [![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Platform](https://img.shields.io/cocoapods/p/AFNetworking.svg?style=flat)](http://cocoadocs.org/docsets/AFNetworking) [![Twitter](https://img.shields.io/badge/twitter-@AFNetworking-blue.svg?style=flat)](http://twitter.com/AFNetworking) @@ -201,7 +201,7 @@ uploadTask = [manager NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; -NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"]; +NSURL *URL = [NSURL URLWithString:@"http://httpbin.org/get"]; NSURLRequest *request = [NSURLRequest requestWithURL:URL]; NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { @@ -236,7 +236,7 @@ NSDictionary *parameters = @{@"foo": @"bar", @"baz": @[@1, @2, @3]}; #### URL Form Parameter Encoding ```objective-c -[[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters]; +[[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters error:nil]; ``` POST http://example.com/ @@ -247,7 +247,7 @@ NSDictionary *parameters = @{@"foo": @"bar", @"baz": @[@1, @2, @3]}; #### JSON Parameter Encoding ```objective-c -[[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters]; +[[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters error:nil]; ``` POST http://example.com/ diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.h b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.h index e89b951..9bdc15c 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.h +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.h @@ -1,5 +1,5 @@ // AFAutoPurgingImageCache.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -135,7 +135,7 @@ NS_ASSUME_NONNULL_BEGIN after purge limit. @param memoryCapacity The total memory capacity of the cache in bytes. - @param preferredMemoryUsageAfterPurge The preferred memory usage after purge in bytes. + @param preferredMemoryCapacity The preferred memory usage after purge in bytes. @return The new `AutoPurgingImageCache` instance. */ diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.m b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.m index 326fe4f..1f40715 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.m +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.m @@ -1,5 +1,5 @@ // AFAutoPurgingImageCache.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -44,8 +44,8 @@ -(instancetype)initWithImage:(UIImage *)image identifier:(NSString *)identifier CGSize imageSize = CGSizeMake(image.size.width * image.scale, image.size.height * image.scale); CGFloat bytesPerPixel = 4.0; - CGFloat bytesPerRow = imageSize.width * bytesPerPixel; - self.totalBytes = (UInt64)bytesPerPixel * (UInt64)bytesPerRow; + CGFloat bytesPerSize = imageSize.width * imageSize.height; + self.totalBytes = (UInt64)bytesPerPixel * (UInt64)bytesPerSize; self.lastAccessDate = [NSDate date]; } return self; diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.h b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.h index b35e185..3903eec 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.h +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.h @@ -1,5 +1,5 @@ // AFImageDownloader.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -129,7 +129,7 @@ typedef NS_ENUM(NSInteger, AFImageDownloadPrioritization) { task are executed in the order they were added. @param request The URL request. - @param request The identifier to use for the download receipt that will be created for this request. This must be a unique identifier that does not represent any other request. + @param receiptID The identifier to use for the download receipt that will be created for this request. This must be a unique identifier that does not represent any other request. @param success A block to be executed when the image data task finishes successfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the image created from the response data of request. If the image was returned from cache, the response parameter will be `nil`. @param failure A block object to be executed when the image data task finishes unsuccessfully, or that finishes successfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the error object describing the network or parsing error that occurred. diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.m b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.m index e87082a..78477bf 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.m +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.m @@ -1,5 +1,5 @@ // AFImageDownloader.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -52,7 +52,8 @@ - (NSString *)description { @end @interface AFImageDownloaderMergedTask : NSObject -@property (nonatomic, strong) NSString *identifier; +@property (nonatomic, strong) NSString *URLIdentifier; +@property (nonatomic, strong) NSUUID *identifier; @property (nonatomic, strong) NSURLSessionDataTask *task; @property (nonatomic, strong) NSMutableArray *responseHandlers; @@ -60,10 +61,11 @@ @interface AFImageDownloaderMergedTask : NSObject @implementation AFImageDownloaderMergedTask -- (instancetype)initWithIdentifier:(NSString *)identifier task:(NSURLSessionDataTask *)task { +- (instancetype)initWithURLIdentifier:(NSString *)URLIdentifier identifier:(NSUUID *)identifier task:(NSURLSessionDataTask *)task { if (self = [self init]) { - self.identifier = identifier; + self.URLIdentifier = URLIdentifier; self.task = task; + self.identifier = identifier; self.responseHandlers = [[NSMutableArray alloc] init]; } return self; @@ -181,15 +183,24 @@ - (nullable AFImageDownloadReceipt *)downloadImageForURLRequest:(NSURLRequest *) } - (nullable AFImageDownloadReceipt *)downloadImageForURLRequest:(NSURLRequest *)request - withReceiptID:(nonnull NSUUID *)receiptID + withReceiptID:(nonnull NSUUID *)receiptID success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, UIImage *responseObject))success failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, NSError *error))failure { __block NSURLSessionDataTask *task = nil; dispatch_sync(self.synchronizationQueue, ^{ - NSString *identifier = request.URL.absoluteString; + NSString *URLIdentifier = request.URL.absoluteString; + if (URLIdentifier == nil) { + if (failure) { + NSError *error = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorBadURL userInfo:nil]; + dispatch_async(dispatch_get_main_queue(), ^{ + failure(request, nil, error); + }); + } + return; + } // 1) Append the success and failure blocks to a pre-existing request if it already exists - AFImageDownloaderMergedTask *existingMergedTask = self.mergedTasks[identifier]; + AFImageDownloaderMergedTask *existingMergedTask = self.mergedTasks[URLIdentifier]; if (existingMergedTask != nil) { AFImageDownloaderResponseHandler *handler = [[AFImageDownloaderResponseHandler alloc] initWithUUID:receiptID success:success failure:failure]; [existingMergedTask addResponseHandler:handler]; @@ -218,6 +229,7 @@ - (nullable AFImageDownloadReceipt *)downloadImageForURLRequest:(NSURLRequest *) } // 3) Create the request and set up authentication, validation and response serialization + NSUUID *mergedTaskIdentifier = [NSUUID UUID]; NSURLSessionDataTask *createdTask; __weak __typeof__(self) weakSelf = self; @@ -226,26 +238,29 @@ - (nullable AFImageDownloadReceipt *)downloadImageForURLRequest:(NSURLRequest *) completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { dispatch_async(self.responseQueue, ^{ __strong __typeof__(weakSelf) strongSelf = weakSelf; - AFImageDownloaderMergedTask *mergedTask = [strongSelf safelyRemoveMergedTaskWithIdentifier:identifier]; - if (error) { - for (AFImageDownloaderResponseHandler *handler in mergedTask.responseHandlers) { - if (handler.failureBlock) { - dispatch_async(dispatch_get_main_queue(), ^{ - handler.failureBlock(request, (NSHTTPURLResponse*)response, error); - }); + AFImageDownloaderMergedTask *mergedTask = self.mergedTasks[URLIdentifier]; + if ([mergedTask.identifier isEqual:mergedTaskIdentifier]) { + mergedTask = [strongSelf safelyRemoveMergedTaskWithURLIdentifier:URLIdentifier]; + if (error) { + for (AFImageDownloaderResponseHandler *handler in mergedTask.responseHandlers) { + if (handler.failureBlock) { + dispatch_async(dispatch_get_main_queue(), ^{ + handler.failureBlock(request, (NSHTTPURLResponse*)response, error); + }); + } } - } - } else { - [strongSelf.imageCache addImage:responseObject forRequest:request withAdditionalIdentifier:nil]; - - for (AFImageDownloaderResponseHandler *handler in mergedTask.responseHandlers) { - if (handler.successBlock) { - dispatch_async(dispatch_get_main_queue(), ^{ - handler.successBlock(request, (NSHTTPURLResponse*)response, responseObject); - }); + } else { + [strongSelf.imageCache addImage:responseObject forRequest:request withAdditionalIdentifier:nil]; + + for (AFImageDownloaderResponseHandler *handler in mergedTask.responseHandlers) { + if (handler.successBlock) { + dispatch_async(dispatch_get_main_queue(), ^{ + handler.successBlock(request, (NSHTTPURLResponse*)response, responseObject); + }); + } } + } - } [strongSelf safelyDecrementActiveTaskCount]; [strongSelf safelyStartNextTaskIfNecessary]; @@ -257,10 +272,11 @@ - (nullable AFImageDownloadReceipt *)downloadImageForURLRequest:(NSURLRequest *) success:success failure:failure]; AFImageDownloaderMergedTask *mergedTask = [[AFImageDownloaderMergedTask alloc] - initWithIdentifier:identifier + initWithURLIdentifier:URLIdentifier + identifier:mergedTaskIdentifier task:createdTask]; [mergedTask addResponseHandler:handler]; - self.mergedTasks[identifier] = mergedTask; + self.mergedTasks[URLIdentifier] = mergedTask; // 5) Either start the request or enqueue it depending on the current active request count if ([self isActiveRequestCountBelowMaximumLimit]) { @@ -280,8 +296,8 @@ - (nullable AFImageDownloadReceipt *)downloadImageForURLRequest:(NSURLRequest *) - (void)cancelTaskForImageDownloadReceipt:(AFImageDownloadReceipt *)imageDownloadReceipt { dispatch_sync(self.synchronizationQueue, ^{ - NSString *identifier = imageDownloadReceipt.task.originalRequest.URL.absoluteString; - AFImageDownloaderMergedTask *mergedTask = self.mergedTasks[identifier]; + NSString *URLIdentifier = imageDownloadReceipt.task.originalRequest.URL.absoluteString; + AFImageDownloaderMergedTask *mergedTask = self.mergedTasks[URLIdentifier]; NSUInteger index = [mergedTask.responseHandlers indexOfObjectPassingTest:^BOOL(AFImageDownloaderResponseHandler * _Nonnull handler, __unused NSUInteger idx, __unused BOOL * _Nonnull stop) { return handler.uuid == imageDownloadReceipt.receiptID; }]; @@ -301,20 +317,26 @@ - (void)cancelTaskForImageDownloadReceipt:(AFImageDownloadReceipt *)imageDownloa if (mergedTask.responseHandlers.count == 0 && mergedTask.task.state == NSURLSessionTaskStateSuspended) { [mergedTask.task cancel]; + [self removeMergedTaskWithURLIdentifier:URLIdentifier]; } }); } -- (AFImageDownloaderMergedTask*)safelyRemoveMergedTaskWithIdentifier:(NSString *)identifier { +- (AFImageDownloaderMergedTask*)safelyRemoveMergedTaskWithURLIdentifier:(NSString *)URLIdentifier { __block AFImageDownloaderMergedTask *mergedTask = nil; dispatch_sync(self.synchronizationQueue, ^{ - mergedTask = self.mergedTasks[identifier]; - [self.mergedTasks removeObjectForKey:identifier]; - + mergedTask = [self removeMergedTaskWithURLIdentifier:URLIdentifier]; }); return mergedTask; } +//This method should only be called from safely within the synchronizationQueue +- (AFImageDownloaderMergedTask *)removeMergedTaskWithURLIdentifier:(NSString *)URLIdentifier { + AFImageDownloaderMergedTask *mergedTask = self.mergedTasks[URLIdentifier]; + [self.mergedTasks removeObjectForKey:URLIdentifier]; + return mergedTask; +} + - (void)safelyDecrementActiveTaskCount { dispatch_sync(self.synchronizationQueue, ^{ if (self.activeRequestCount > 0) { diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h index a627a6d..3bcf289 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h @@ -1,5 +1,5 @@ // AFNetworkActivityIndicatorManager.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m index 0615fa9..e77508e 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m @@ -1,5 +1,5 @@ // AFNetworkActivityIndicatorManager.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h index b6ef044..d424c9b 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h @@ -1,5 +1,5 @@ // UIActivityIndicatorView+AFNetworking.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m index fcf1c0c..ed704ed 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m @@ -1,5 +1,5 @@ // UIActivityIndicatorView+AFNetworking.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h index 98b911e..d33e0d4 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h @@ -1,5 +1,5 @@ // UIButton+AFNetworking.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m index ceb6ebc..5bc49dd 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m @@ -1,5 +1,5 @@ // UIButton+AFNetworking.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -220,7 +220,7 @@ - (void)setBackgroundImageForState:(UIControlState)state return; } - [self cancelImageDownloadTaskForState:state]; + [self cancelBackgroundImageDownloadTaskForState:state]; AFImageDownloader *downloader = [[self class] sharedImageDownloader]; id imageCache = downloader.imageCache; @@ -253,7 +253,7 @@ - (void)setBackgroundImageForState:(UIControlState)state } else if(responseObject) { [strongSelf setBackgroundImage:responseObject forState:state]; } - [strongSelf af_setImageDownloadReceipt:nil forState:state]; + [strongSelf af_setBackgroundImageDownloadReceipt:nil forState:state]; } } diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h index ce9ae2e..8929252 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h @@ -1,5 +1,5 @@ // UIImageView+AFNetworking.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m index a97d5cc..5934d68 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m @@ -1,5 +1,5 @@ // UIImageView+AFNetworking.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h index b36ee0c..febacfc 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h @@ -1,6 +1,6 @@ // UIKit+AFNetworking.h // -// Copyright (c) 2013 AFNetworking (http://afnetworking.com/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h index a0c463b..8ea0a73 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h @@ -1,5 +1,5 @@ // UIProgressView+AFNetworking.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m index 6680bac..058755e 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m @@ -1,5 +1,5 @@ // UIProgressView+AFNetworking.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h index f6930a9..215eafc 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h @@ -1,6 +1,6 @@ // UIRefreshControl+AFNetworking.m // -// Copyright (c) 2014 AFNetworking (http://afnetworking.com) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m index ddc033b..aba6d61 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m @@ -1,6 +1,6 @@ // UIRefreshControl+AFNetworking.m // -// Copyright (c) 2014 AFNetworking (http://afnetworking.com) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h index 777dce2..b9a56af 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h @@ -1,5 +1,5 @@ // UIWebView+AFNetworking.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m index ac089da..751c499 100644 --- a/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m +++ b/SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m @@ -1,5 +1,5 @@ // UIWebView+AFNetworking.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -147,7 +147,9 @@ - (void)loadRequest:(NSURLRequest *)request } }]; self.af_URLSessionTask = dataTask; - *progress = [self.sessionManager downloadProgressForTask:dataTask]; + if (progress != nil) { + *progress = [self.sessionManager downloadProgressForTask:dataTask]; + } [self.af_URLSessionTask resume]; if ([self.delegate respondsToSelector:@selector(webViewDidStartLoad:)]) { diff --git a/SUIMVVMDemo/Pods/FMDB/README.markdown b/SUIMVVMDemo/Pods/FMDB/README.markdown index f4d7c3d..f0d883d 100644 --- a/SUIMVVMDemo/Pods/FMDB/README.markdown +++ b/SUIMVVMDemo/Pods/FMDB/README.markdown @@ -1,4 +1,4 @@ -# FMDB v2.6 +# FMDB v2.6.2 This is an Objective-C wrapper around SQLite: http://sqlite.org/ diff --git a/SUIMVVMDemo/Pods/FMDB/src/fmdb/FMDatabase.m b/SUIMVVMDemo/Pods/FMDB/src/fmdb/FMDatabase.m index 27ae0f2..d33c13d 100644 --- a/SUIMVVMDemo/Pods/FMDB/src/fmdb/FMDatabase.m +++ b/SUIMVVMDemo/Pods/FMDB/src/fmdb/FMDatabase.m @@ -73,7 +73,7 @@ - (NSString *)databasePath { } + (NSString*)FMDBUserVersion { - return @"2.6"; + return @"2.6.2"; } // returns 0x0240 for version 2.4. This makes it super easy to do things like: @@ -100,7 +100,6 @@ + (SInt32)FMDBVersion { }); - return FMDBVersionVal; } @@ -163,7 +162,7 @@ - (BOOL)openWithFlags:(int)flags vfs:(NSString *)vfsName { if (_db) { return YES; } - + int err = sqlite3_open_v2([self sqlitePath], (sqlite3**)&_db, flags, [vfsName UTF8String]); if(err != SQLITE_OK) { NSLog(@"error opening!: %d", err); @@ -251,7 +250,7 @@ static int FMDBDatabaseBusyHandler(void *f, int count) { return 1; } - return 0; + return 0; } - (void)setMaxBusyRetryTimeInterval:(NSTimeInterval)timeout { @@ -468,15 +467,15 @@ - (void)warnInUse { - (BOOL)databaseExists { if (!_db) { - + NSLog(@"The FMDatabase %@ is not open.", self); - #ifndef NS_BLOCK_ASSERTIONS +#ifndef NS_BLOCK_ASSERTIONS if (_crashOnErrors) { NSAssert(false, @"The FMDatabase %@ is not open.", self); abort(); } - #endif +#endif return NO; } @@ -503,11 +502,11 @@ - (int)lastErrorCode { - (NSError*)errorWithMessage:(NSString*)message { NSDictionary* errorMessage = [NSDictionary dictionaryWithObject:message forKey:NSLocalizedDescriptionKey]; - return [NSError errorWithDomain:@"FMDatabase" code:sqlite3_errcode(_db) userInfo:errorMessage]; + return [NSError errorWithDomain:@"FMDatabase" code:sqlite3_errcode(_db) userInfo:errorMessage]; } - (NSError*)lastError { - return [self errorWithMessage:[self lastErrorMessage]]; + return [self errorWithMessage:[self lastErrorMessage]]; } #pragma mark Update information routines @@ -772,8 +771,8 @@ - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arr } if (!pStmt) { - - rc = sqlite3_prepare_v2(_db, [sql UTF8String], -1, &pStmt, 0); + + rc = sqlite3_prepare_v2(_db, [sql UTF8String], -1, &pStmt, 0); if (SQLITE_OK != rc) { if (_logsErrors) { @@ -804,7 +803,7 @@ - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arr // Prefix the key with a colon. NSString *parameterName = [[NSString alloc] initWithFormat:@":%@", dictionaryKey]; - + if (_traceExecution) { NSLog(@"%@ = %@", parameterName, [dictionaryArgs objectForKey:dictionaryKey]); } @@ -826,7 +825,7 @@ - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arr } } else { - + while (idx < queryCount) { if (arrayArgs && idx < (int)[arrayArgs count]) { @@ -882,7 +881,7 @@ - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arr [statement setUseCount:[statement useCount] + 1]; - FMDBRelease(statement); + FMDBRelease(statement); _isExecutingStatement = NO; @@ -905,7 +904,7 @@ - (FMResultSet *)executeQueryWithFormat:(NSString*)format, ... { NSMutableString *sql = [NSMutableString stringWithCapacity:[format length]]; NSMutableArray *arguments = [NSMutableArray array]; - [self extractSQL:format argumentsList:args intoString:sql arguments:arguments]; + [self extractSQL:format argumentsList:args intoString:sql arguments:arguments]; va_end(args); @@ -972,12 +971,12 @@ - (BOOL)executeUpdate:(NSString*)sql error:(NSError**)outErr withArgumentsInArra abort(); } - sqlite3_finalize(pStmt); - if (outErr) { *outErr = [self errorWithMessage:[NSString stringWithUTF8String:sqlite3_errmsg(_db)]]; } + sqlite3_finalize(pStmt); + _isExecutingStatement = NO; return NO; } @@ -1011,7 +1010,14 @@ - (BOOL)executeUpdate:(NSString*)sql error:(NSError**)outErr withArgumentsInArra idx++; } else { - NSLog(@"Could not find index for %@", dictionaryKey); + NSString *message = [NSString stringWithFormat:@"Could not find index for %@", dictionaryKey]; + + if (_logsErrors) { + NSLog(@"%@", message); + } + if (outErr) { + *outErr = [self errorWithMessage:message]; + } } } } @@ -1047,7 +1053,14 @@ - (BOOL)executeUpdate:(NSString*)sql error:(NSError**)outErr withArgumentsInArra if (idx != queryCount) { - NSLog(@"Error: the bind count (%d) is not correct for the # of variables in the query (%d) (%@) (executeUpdate)", idx, queryCount, sql); + NSString *message = [NSString stringWithFormat:@"Error: the bind count (%d) is not correct for the # of variables in the query (%d) (%@) (executeUpdate)", idx, queryCount, sql]; + if (_logsErrors) { + NSLog(@"%@", message); + } + if (outErr) { + *outErr = [self errorWithMessage:message]; + } + sqlite3_finalize(pStmt); _isExecutingStatement = NO; return NO; @@ -1062,29 +1075,41 @@ - (BOOL)executeUpdate:(NSString*)sql error:(NSError**)outErr withArgumentsInArra if (SQLITE_DONE == rc) { // all is well, let's return. } - else if (SQLITE_ERROR == rc) { + else if (rc == SQLITE_ROW) { + NSString *message = [NSString stringWithFormat:@"A executeUpdate is being called with a query string '%@'", sql]; if (_logsErrors) { - NSLog(@"Error calling sqlite3_step (%d: %s) SQLITE_ERROR", rc, sqlite3_errmsg(_db)); + NSLog(@"%@", message); NSLog(@"DB Query: %@", sql); } - } - else if (SQLITE_MISUSE == rc) { - // uh oh. - if (_logsErrors) { - NSLog(@"Error calling sqlite3_step (%d: %s) SQLITE_MISUSE", rc, sqlite3_errmsg(_db)); - NSLog(@"DB Query: %@", sql); + if (outErr) { + *outErr = [self errorWithMessage:message]; } } else { - // wtf? - if (_logsErrors) { - NSLog(@"Unknown error calling sqlite3_step (%d: %s) eu", rc, sqlite3_errmsg(_db)); - NSLog(@"DB Query: %@", sql); + if (outErr) { + *outErr = [self errorWithMessage:[NSString stringWithUTF8String:sqlite3_errmsg(_db)]]; + } + + if (SQLITE_ERROR == rc) { + if (_logsErrors) { + NSLog(@"Error calling sqlite3_step (%d: %s) SQLITE_ERROR", rc, sqlite3_errmsg(_db)); + NSLog(@"DB Query: %@", sql); + } + } + else if (SQLITE_MISUSE == rc) { + // uh oh. + if (_logsErrors) { + NSLog(@"Error calling sqlite3_step (%d: %s) SQLITE_MISUSE", rc, sqlite3_errmsg(_db)); + NSLog(@"DB Query: %@", sql); + } + } + else { + // wtf? + if (_logsErrors) { + NSLog(@"Unknown error calling sqlite3_step (%d: %s) eu", rc, sqlite3_errmsg(_db)); + NSLog(@"DB Query: %@", sql); + } } - } - - if (rc == SQLITE_ROW) { - NSAssert(NO, @"A executeUpdate is being called with a query string '%@'", sql); } if (_shouldCacheStatements && !cachedStmt) { @@ -1155,7 +1180,7 @@ - (BOOL)executeUpdateWithFormat:(NSString*)format, ... { NSMutableString *sql = [NSMutableString stringWithCapacity:[format length]]; NSMutableArray *arguments = [NSMutableArray array]; - [self extractSQL:format argumentsList:args intoString:sql arguments:arguments]; + [self extractSQL:format argumentsList:args intoString:sql arguments:arguments]; va_end(args); @@ -1198,7 +1223,7 @@ - (BOOL)executeStatements:(NSString *)sql withResultBlock:(FMDBExecuteStatements NSLog(@"Error inserting batch: %s", errmsg); sqlite3_free(errmsg); } - + return (rc == SQLITE_OK); } @@ -1284,16 +1309,7 @@ - (BOOL)startSavePointWithName:(NSString*)name error:(NSError**)outErr { NSString *sql = [NSString stringWithFormat:@"savepoint '%@';", FMDBEscapeSavePointName(name)]; - if (![self executeUpdate:sql]) { - - if (outErr) { - *outErr = [self lastError]; - } - - return NO; - } - - return YES; + return [self executeUpdate:sql error:outErr withArgumentsInArray:nil orDictionary:nil orVAList:nil]; #else NSString *errorMessage = NSLocalizedString(@"Save point functions require SQLite 3.7", nil); if (self.logsErrors) NSLog(@"%@", errorMessage); @@ -1306,13 +1322,8 @@ - (BOOL)releaseSavePointWithName:(NSString*)name error:(NSError**)outErr { NSParameterAssert(name); NSString *sql = [NSString stringWithFormat:@"release savepoint '%@';", FMDBEscapeSavePointName(name)]; - BOOL worked = [self executeUpdate:sql]; - - if (!worked && outErr) { - *outErr = [self lastError]; - } - - return worked; + + return [self executeUpdate:sql error:outErr withArgumentsInArray:nil orDictionary:nil orVAList:nil]; #else NSString *errorMessage = NSLocalizedString(@"Save point functions require SQLite 3.7", nil); if (self.logsErrors) NSLog(@"%@", errorMessage); @@ -1325,13 +1336,8 @@ - (BOOL)rollbackToSavePointWithName:(NSString*)name error:(NSError**)outErr { NSParameterAssert(name); NSString *sql = [NSString stringWithFormat:@"rollback transaction to savepoint '%@';", FMDBEscapeSavePointName(name)]; - BOOL worked = [self executeUpdate:sql]; - - if (!worked && outErr) { - *outErr = [self lastError]; - } - - return worked; + + return [self executeUpdate:sql error:outErr withArgumentsInArray:nil orDictionary:nil orVAList:nil]; #else NSString *errorMessage = NSLocalizedString(@"Save point functions require SQLite 3.7", nil); if (self.logsErrors) NSLog(@"%@", errorMessage); diff --git a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKDataService.h b/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKDataService.h deleted file mode 120000 index 9fd0cdd..0000000 --- a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKDataService.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKDataService.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKHttp.h b/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKHttp.h deleted file mode 120000 index 18e9dfd..0000000 --- a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKHttp.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttp.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKHttpConfig.h b/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKHttpConfig.h deleted file mode 120000 index 7c235d9..0000000 --- a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKHttpConfig.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttpConfig.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKNetworkPublic.h b/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKNetworkPublic.h deleted file mode 120000 index f8fb2b1..0000000 --- a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKNetworkPublic.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMNetwork/SUIMVVMNetwork/SMKNetworkPublic.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKSingleton.h b/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKSingleton.h deleted file mode 120000 index e34cfe6..0000000 --- a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMNetwork/SMKSingleton.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKSingleton.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMStore/SMKStore.h b/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMStore/SMKStore.h deleted file mode 120000 index 23128f7..0000000 --- a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMStore/SMKStore.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMStore/SUIMVVMStore/SUIMVVMStore/SMKStore.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMStore/SMKStorePublic.h b/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMStore/SMKStorePublic.h deleted file mode 120000 index 1e7888e..0000000 --- a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMStore/SMKStorePublic.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMStore/SUIMVVMStore/SMKStorePublic.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMStore/YTKKeyValueStore.h b/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMStore/YTKKeyValueStore.h deleted file mode 120000 index 11f498f..0000000 --- a/SUIMVVMDemo/Pods/Headers/Private/SUIMVVMStore/YTKKeyValueStore.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMStore/SUIMVVMStore/YTKKeyValueStore/YTKKeyValueStore.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKDataService.h b/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKDataService.h deleted file mode 120000 index 9fd0cdd..0000000 --- a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKDataService.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKDataService.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKHttp.h b/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKHttp.h deleted file mode 120000 index 18e9dfd..0000000 --- a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKHttp.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttp.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKHttpConfig.h b/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKHttpConfig.h deleted file mode 120000 index 7c235d9..0000000 --- a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKHttpConfig.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttpConfig.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKNetworkPublic.h b/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKNetworkPublic.h deleted file mode 120000 index f8fb2b1..0000000 --- a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKNetworkPublic.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMNetwork/SUIMVVMNetwork/SMKNetworkPublic.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKSingleton.h b/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKSingleton.h deleted file mode 120000 index e34cfe6..0000000 --- a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMNetwork/SMKSingleton.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKSingleton.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMStore/SMKStore.h b/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMStore/SMKStore.h deleted file mode 120000 index 23128f7..0000000 --- a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMStore/SMKStore.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMStore/SUIMVVMStore/SUIMVVMStore/SMKStore.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMStore/SMKStorePublic.h b/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMStore/SMKStorePublic.h deleted file mode 120000 index 1e7888e..0000000 --- a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMStore/SMKStorePublic.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMStore/SUIMVVMStore/SMKStorePublic.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMStore/YTKKeyValueStore.h b/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMStore/YTKKeyValueStore.h deleted file mode 120000 index 11f498f..0000000 --- a/SUIMVVMDemo/Pods/Headers/Public/SUIMVVMStore/YTKKeyValueStore.h +++ /dev/null @@ -1 +0,0 @@ -../../../SUIMVVMStore/SUIMVVMStore/YTKKeyValueStore/YTKKeyValueStore.h \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Local Podspecs/SUIUtils.podspec.json b/SUIMVVMDemo/Pods/Local Podspecs/SUIUtils.podspec.json index e3c531d..0fa239f 100644 --- a/SUIMVVMDemo/Pods/Local Podspecs/SUIUtils.podspec.json +++ b/SUIMVVMDemo/Pods/Local Podspecs/SUIUtils.podspec.json @@ -1,6 +1,6 @@ { "name": "SUIUtils", - "version": "0.0.1", + "version": "0.0.2", "platforms": { "ios": "7.0" }, @@ -12,7 +12,7 @@ }, "source": { "git": "https://github.com/randomprocess/SUIUtils.git", - "tag": "0.0.1" + "tag": "0.0.2" }, "requires_arc": true, "public_header_files": "SUIUtils/**/*.h", diff --git a/SUIMVVMDemo/Pods/Manifest.lock b/SUIMVVMDemo/Pods/Manifest.lock index e666a8d..f7c9678 100644 --- a/SUIMVVMDemo/Pods/Manifest.lock +++ b/SUIMVVMDemo/Pods/Manifest.lock @@ -1,58 +1,46 @@ PODS: - - AFNetworking (3.0.4): - - AFNetworking/NSURLSession (= 3.0.4) - - AFNetworking/Reachability (= 3.0.4) - - AFNetworking/Security (= 3.0.4) - - AFNetworking/Serialization (= 3.0.4) - - AFNetworking/UIKit (= 3.0.4) - - AFNetworking/NSURLSession (3.0.4): + - AFNetworking (3.1.0): + - AFNetworking/NSURLSession (= 3.1.0) + - AFNetworking/Reachability (= 3.1.0) + - AFNetworking/Security (= 3.1.0) + - AFNetworking/Serialization (= 3.1.0) + - AFNetworking/UIKit (= 3.1.0) + - AFNetworking/NSURLSession (3.1.0): - AFNetworking/Reachability - AFNetworking/Security - AFNetworking/Serialization - - AFNetworking/Reachability (3.0.4) - - AFNetworking/Security (3.0.4) - - AFNetworking/Serialization (3.0.4) - - AFNetworking/UIKit (3.0.4): + - AFNetworking/Reachability (3.1.0) + - AFNetworking/Security (3.1.0) + - AFNetworking/Serialization (3.1.0) + - AFNetworking/UIKit (3.1.0): - AFNetworking/NSURLSession - - FMDB (2.6): - - FMDB/standard (= 2.6) - - FMDB/standard (2.6) - - Masonry (0.6.4) + - FMDB (2.6.2): + - FMDB/standard (= 2.6.2) + - FMDB/standard (2.6.2) + - Masonry (1.0.0) - MJExtension (3.0.10) - MJRefresh (3.1.0) - - SUIMVVMNetwork (0.0.3): - - SUIMVVMNetwork/SUIMVVMNetwork (= 0.0.3) - - SUIMVVMNetwork/SUIMVVMNetwork (0.0.3): - - AFNetworking (>= 3.0) - - SUIMVVMStore - - SUIMVVMStore (0.0.8): - - SUIMVVMStore/SUIMVVMStore (= 0.0.8) - - SUIMVVMStore/YTKKeyValueStore (= 0.0.8) - - SUIMVVMStore/SUIMVVMStore (0.0.8): - - SUIMVVMStore/YTKKeyValueStore - - SUIMVVMStore/YTKKeyValueStore (0.0.8): - - FMDB - - SUIUtils (0.0.1): - - SUIUtils/Foundation (= 0.0.1) - - SUIUtils/Helper (= 0.0.1) - - SUIUtils/Tool (= 0.0.1) - - SUIUtils/UIKit (= 0.0.1) - - SUIUtils/Foundation (0.0.1): + - SUIUtils (0.0.2): + - SUIUtils/Foundation (= 0.0.2) + - SUIUtils/Helper (= 0.0.2) + - SUIUtils/Tool (= 0.0.2) + - SUIUtils/UIKit (= 0.0.2) + - SUIUtils/Foundation (0.0.2): - SUIUtils/Tool - - SUIUtils/Helper (0.0.1): + - SUIUtils/Helper (0.0.2): - SUIUtils/UIKit - UITableView+FDTemplateLayoutCell (~> 1.4) - - SUIUtils/Tool (0.0.1) - - SUIUtils/UIKit (0.0.1): + - SUIUtils/Tool (0.0.2) + - SUIUtils/UIKit (0.0.2): - SUIUtils/Foundation - UITableView+FDTemplateLayoutCell (1.4) DEPENDENCIES: - AFNetworking (>= 3.0) + - FMDB - Masonry - MJExtension - MJRefresh - - SUIMVVMNetwork - SUIUtils (from `https://github.com/randomprocess/SUIUtils`) EXTERNAL SOURCES: @@ -61,18 +49,16 @@ EXTERNAL SOURCES: CHECKOUT OPTIONS: SUIUtils: - :commit: a4267058ca70f53402726f05b8e32411606b52df + :commit: f0685ad7a76db3f5880fc3fbe894b31a2085d308 :git: https://github.com/randomprocess/SUIUtils SPEC CHECKSUMS: - AFNetworking: a0075feb321559dc78d9d85b55d11caa19eabb93 - FMDB: c1968bab3ab0aed38f66cb778ae1e7fa9a652b6e - Masonry: 281802d04d787ea2973179ee8bcb50500579ede2 + AFNetworking: 5e0e199f73d8626b11e79750991f5d173d1f8b67 + FMDB: 854a0341b4726e53276f2a8996f06f1b80f9259a + Masonry: b529bb169217897b6354d4b56b1fada6d475b13d MJExtension: d86aacb740c87519d20e3cca55b6fa4be6cc7548 MJRefresh: 743e6404967d1c2c688472ea3ecfde247d872db4 - SUIMVVMNetwork: 68310f14b8b6361620fb3f30052d8ea283d99fd9 - SUIMVVMStore: a393af1cc70ecec19e571791e7f143e023f21fac - SUIUtils: c1b214bac5b9cb2726e43299ab36a6dc28c7a2d8 + SUIUtils: b4dc603df7a7f08dab0005522353414260a1b719 UITableView+FDTemplateLayoutCell: 234e1582bcc4e18461af91155123bb96538ed030 COCOAPODS: 0.39.0 diff --git a/SUIMVVMDemo/Pods/Masonry/Masonry/MASViewConstraint.m b/SUIMVVMDemo/Pods/Masonry/Masonry/MASViewConstraint.m index a70865b..e8ccdcb 100644 --- a/SUIMVVMDemo/Pods/Masonry/Masonry/MASViewConstraint.m +++ b/SUIMVVMDemo/Pods/Masonry/Masonry/MASViewConstraint.m @@ -288,24 +288,11 @@ - (void)setCenterOffset:(CGPoint)centerOffset { #pragma mark - MASConstraint - (void)activate { - if ([self supportsActiveProperty] && self.layoutConstraint) { - if (self.hasBeenInstalled) { - return; - } - self.layoutConstraint.active = YES; - [self.firstViewAttribute.view.mas_installedConstraints addObject:self]; - } else { - [self install]; - } + [self install]; } - (void)deactivate { - if ([self supportsActiveProperty]) { - self.layoutConstraint.active = NO; - [self.firstViewAttribute.view.mas_installedConstraints removeObject:self]; - } else { - [self uninstall]; - } + [self uninstall]; } - (void)install { @@ -313,6 +300,12 @@ - (void)install { return; } + if ([self supportsActiveProperty] && self.layoutConstraint) { + self.layoutConstraint.active = YES; + [self.firstViewAttribute.view.mas_installedConstraints addObject:self]; + return; + } + MAS_VIEW *firstLayoutItem = self.firstViewAttribute.item; NSLayoutAttribute firstLayoutAttribute = self.firstViewAttribute.layoutAttribute; MAS_VIEW *secondLayoutItem = self.secondViewAttribute.item; @@ -387,6 +380,12 @@ - (MASLayoutConstraint *)layoutConstraintSimilarTo:(MASLayoutConstraint *)layout } - (void)uninstall { + if ([self supportsActiveProperty]) { + self.layoutConstraint.active = NO; + [self.firstViewAttribute.view.mas_installedConstraints removeObject:self]; + return; + } + [self.installedView removeConstraint:self.layoutConstraint]; self.layoutConstraint = nil; self.installedView = nil; diff --git a/SUIMVVMDemo/Pods/Masonry/README.md b/SUIMVVMDemo/Pods/Masonry/README.md index 966ba7a..3d9013c 100644 --- a/SUIMVVMDemo/Pods/Masonry/README.md +++ b/SUIMVVMDemo/Pods/Masonry/README.md @@ -12,7 +12,7 @@ For examples take a look at the **Masonry iOS Examples** project in the Masonry Under the hood Auto Layout is a powerful and flexible way of organising and laying out your views. However creating constraints from code is verbose and not very descriptive. Imagine a simple example in which you want to have a view fill its superview but inset by 10 pixels on every side ```obj-c -UIView *superview = self; +UIView *superview = self.view; UIView *view1 = [[UIView alloc] init]; view1.translatesAutoresizingMaskIntoConstraints = NO; @@ -274,7 +274,7 @@ Alternatively if you are only updating the constant value of the constraint you ### 3. mas_remakeConstraints `mas_updateConstraints` is useful for updating a set of constraints, but doing anything beyond updating constant values can get exhausting. That's where `mas_remakeConstraints` comes in. -`mas_remakeConstraints` is similar to `mas_updateConstraints`, but instead of updating constant values, it will remove all of its contraints before installing them again. This lets you provide different constraints without having to keep around references to ones which you want to remove. +`mas_remakeConstraints` is similar to `mas_updateConstraints`, but instead of updating constant values, it will remove all of its constraints before installing them again. This lets you provide different constraints without having to keep around references to ones which you want to remove. ```obj-c - (void)changeButtonPosition { diff --git a/SUIMVVMDemo/Pods/Pods.xcodeproj/project.pbxproj b/SUIMVVMDemo/Pods/Pods.xcodeproj/project.pbxproj index 2d01374..e91e2e7 100644 --- a/SUIMVVMDemo/Pods/Pods.xcodeproj/project.pbxproj +++ b/SUIMVVMDemo/Pods/Pods.xcodeproj/project.pbxproj @@ -7,628 +7,555 @@ objects = { /* Begin PBXBuildFile section */ - 00F09DB5E05D1208F27161E2F016FE36 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFE8BC28B49921E4DD5BE5B40D1B5517 /* MobileCoreServices.framework */; }; - 022B549F10007177A43FAB1DD5114F7D /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59EF264AC4BDF4CC77D669C44BA52A3C /* Security.framework */; }; - 026CCF569A2125FCB0EE8F152731259E /* NSObject+MJClass.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D8067639CAD63B7BE8AD7E46AB0BA29 /* NSObject+MJClass.m */; }; - 09D04A9AB71B5A4FE9175F80496EA5FD /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 1356790A7E189F390AA23B35FC99A243 /* UIScrollView+MJRefresh.m */; }; - 0A08FC71C4E3B8E0F8734BCDA7CCA7CB /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FF2DB5E6B54E61B27C40DFA79934CD3 /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0DAB8AE347BD1373FC17E7DED9A626D8 /* SUIMVVMNetwork-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A9125B27E709E8E21D1B5C42E208A0D /* SUIMVVMNetwork-dummy.m */; }; - 0EF8E9AA652DBE2745A7D5C8CD2E3BDE /* FMDatabasePool.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C315A73039BA6459702CA757E1C536F /* FMDatabasePool.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 0F7EC02E944F8719A5EBDC9D29F9E99F /* MJExtensionConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 205E19B5BA07CCEE654F8E6866827F10 /* MJExtensionConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0F8A8E0D6FAEBF758E0B4D620335F094 /* FMDatabasePool.h in Headers */ = {isa = PBXBuildFile; fileRef = BED0567F44F355586B84E585DB07A5F6 /* FMDatabasePool.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 118227C43F283C87130BEE2BFABC7EBD /* NSObject+MJCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 87E3FB062300CE3AC93081880D9A6A50 /* NSObject+MJCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1193250A62D6F0C228E9E7F9A26966C9 /* NSArray+SUISafeAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 852B91AF8A9F24D682B8D906916F955E /* NSArray+SUISafeAccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 11DAB4024920217532822DC428BB9CB8 /* NSString+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C2FABC300313B446B8A7BA09C3A5488 /* NSString+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 133B30495D945B737235B107AAE7DAAB /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = B4CC07474D361009AE0E241A9F712066 /* MJRefreshHeader.m */; }; - 13695CE9BF36F26CA806C5CD2D6ADECA /* MJFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = C68EECFB4ECFED6D3FDA046391F8F37F /* MJFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1413150F027574F648FB114483ED4E38 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 911EAAAC17F7C265314ED1815D6E5DFA /* Foundation.framework */; }; - 14CD3DFB4A25BAEFB205730FA6750025 /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = C91A760EEAECB3EF7329E12C168CFDD9 /* AFAutoPurgingImageCache.m */; }; - 15460ABD372C937E2A07A2FCDF98C473 /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A01AD49F6651BDDACF4DFF1E7F3D13D /* UIActivityIndicatorView+AFNetworking.m */; }; - 177FBBF485076E1E845FEF9F9FBDF38A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 911EAAAC17F7C265314ED1815D6E5DFA /* Foundation.framework */; }; - 19E6319F6ECED7539AABBD9A211F7AEC /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = C8A456A42C7E47747499CEADE8B12FD1 /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1A66707C382E249B4A885EF379953A6A /* UIStoryboardSegue+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B9E83B38B5D1AFEEB781B508B5FE916 /* UIStoryboardSegue+SUIAdditions.m */; }; - 1BA3D9FB5D5145BF698C941C0F843518 /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C62A36172DB13FF4774AFD897515052 /* MJRefreshBackGifFooter.m */; }; - 200CA5D919CC71EA6A769541C92716D3 /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 414B706CA4AE49D37D9EE5011DF868C6 /* MJRefreshBackStateFooter.m */; }; - 2053D71CF543C3A3CC47C5409D61923C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E52C5C1E169F6534FB47D920576E12E /* CoreGraphics.framework */; }; - 2280D55B18C853A6AA3AE9565EE91F19 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 9651138BA89E7B3E33A47554DC55E3F4 /* UIView+MJExtension.m */; }; - 23415204AA48A02959E4E5245CF96037 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C498DED67DF29B2243B7F50DC7F41740 /* AFHTTPSessionManager.m */; }; - 2359387620C5E815BF0594BC40311734 /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = D08204C0B221D79FA036C459E966B058 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 263F30C6D2735B765BA8F45BF5469A1B /* UITableView+FDTemplateLayoutCellDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = 8093A801250243C264FC0137421343AB /* UITableView+FDTemplateLayoutCellDebug.m */; }; - 28035A03F1D8500D4AEDE02BEF206644 /* UITableView+FDTemplateLayoutCell-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B875012EC22C88328263F8025DC392C8 /* UITableView+FDTemplateLayoutCell-dummy.m */; }; - 282081E035E7A843068E8BCC2E07C217 /* FMDatabaseQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = EC961FC0913E999F7762F82C1C4F3E23 /* FMDatabaseQueue.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 2894369EF8D702DF360B6763B36E8444 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F55CD144C9B8F055A690A714235D1A7 /* MJRefreshAutoFooter.m */; }; - 2905381350CEFFBFFA9BC8B5D027F190 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 89CA691706B769045986250EB5CCC5F6 /* MASConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2979E54C4AFD27076576E82ADEED2F00 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 25F89F70FA69F90324FF88585B1EDDE4 /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2CC27528C64733F5C0AB4B1B6EE35E8C /* MJExtension-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9888B3D31D806F032B78092C4F4BB8F9 /* MJExtension-dummy.m */; }; - 2D3B3C70AFF05F5382CC7B96D52F87BC /* UITableView+FDKeyedHeightCache.h in Headers */ = {isa = PBXBuildFile; fileRef = C597BA6C6047926F12E9F0012A8DCF0F /* UITableView+FDKeyedHeightCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2D9BB0C2793C70882A110FEEC30285AE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D4190C455A6175B48589924F50C141F /* UIKit.framework */; }; - 2F85D170E76C661AB0D9E9A8B206C78D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 911EAAAC17F7C265314ED1815D6E5DFA /* Foundation.framework */; }; - 311E5200832E4AE174A193851A2C6317 /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 69D9BDD170979529631E1AA585692EA4 /* AFSecurityPolicy.m */; }; - 313531CEDA0294311D87B4F4C3F073F4 /* FMDB.h in Headers */ = {isa = PBXBuildFile; fileRef = 258C65375275724FA25F6F7DD10C4C5B /* FMDB.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 326A543AD4E39A2DAECA1CD385E3AEA2 /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = D3B6865FFDC1F2755F0F582EFE1C9B66 /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3287293F60A4B0E9E7E064BF48E90EF9 /* UIImage+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A29B5117DED59B7DC3580DFA14D1EC49 /* UIImage+SUIAdditions.m */; }; - 331718BFB4A91CFFE026492905231562 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = A4C423B2E9EA9F6B7DF3C0BC1D604B75 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 331753698DE178FC3F0DF298D741D7C9 /* NSArray+SUISafeAccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E1A54374903ADE1D0D8180CE57DD4A9 /* NSArray+SUISafeAccess.m */; }; - 335DCBC17D2469F228020EF6C7B41F7C /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = DE5E5CC01A522925814D1B7CFF30551D /* MASConstraintMaker.m */; }; - 3511AE7ADBB71D05565854F0E70B7D08 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3185C56893BCA988650AA78810A09536 /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35560A3E8BDEDCB3B8859B09E236A7C3 /* NSIndexPath+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 996B4443A7B909320364350F8140535E /* NSIndexPath+SUIAdditions.m */; }; - 366A613AE07EAA35B5789F6123FB48AF /* MJPropertyKey.h in Headers */ = {isa = PBXBuildFile; fileRef = EFBE4A92DBDBAA9B69BC859D895ABCA0 /* MJPropertyKey.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 38EEA9ED6B922946C54AD6BAC93B73AD /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964B2B6A7E55E69F740DF4D08557ED0 /* UIProgressView+AFNetworking.m */; }; - 3939531EB270B4145C7ADFBAB2E5695F /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D550B2FC901BE85A06F67A2B20B683E /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B2DF3D61CE9BE6BA8AB517072064324 /* SMKHttp.h in Headers */ = {isa = PBXBuildFile; fileRef = BA51D00344BCDF2BF83B65B39DEED02A /* SMKHttp.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3BC5FF07EC4490F9545FC810A262D5A7 /* SUITool.h in Headers */ = {isa = PBXBuildFile; fileRef = 675AD442FB68BF8EDBE94A893169796A /* SUITool.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3C7B1E6B24EFAE09F216ED9817F1D56E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D4190C455A6175B48589924F50C141F /* UIKit.framework */; }; - 3D0F69C4CA35EB6A1F686BA88B19B4F6 /* FMDB-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EC75283423A9956DB985007269B05E4 /* FMDB-dummy.m */; }; - 3D6D40A518C4B968E965B13730C73CE0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72F71C18C1470AB10885E2C81142B333 /* QuartzCore.framework */; }; - 3F63C119F95A6735AE627BBB1BEBC4B1 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D4E01881C47E795F53AC7E92BEA1EA /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 416645E06D92F7C7BAF8B7E2AEB46DE3 /* Pods-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 272643F56613CA0D336AE3DBF19DC404 /* Pods-dummy.m */; }; - 43098B12DF5546CB576986E68DBCAFCA /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 196D3F6A77CC2F8944FCD5B0E0240988 /* AFNetworkReachabilityManager.m */; }; - 432BD50F1E699EDF2EA007E850FFCEF7 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DB922DCA16B651DB8A7D1EA81BDCC46B /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4330562BA1A299CBD37F4602B1A4C95A /* NSObject+MJKeyValue.h in Headers */ = {isa = PBXBuildFile; fileRef = E2511A580BF5B0BA04101BBA2365BFE9 /* NSObject+MJKeyValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 444602F3A422E5EC1DA8EF2A3DFA01EB /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D0CEA9BC23007D731A9973625E0147D /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 44F50504254959A81B2E96AD6261B2A9 /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C6BC469E2207E664975319E670FD9DB /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 46741E54051353C7671401B8BEDCAC46 /* UITextField+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 44C44A8F46E615F6A1F5DC91314EEC94 /* UITextField+SUIAdditions.m */; }; - 46864A6C975FFED15827EBB73AB56E85 /* UIControl+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 97ABC0CB824F2E643E041DB7AA28EC2A /* UIControl+SUIAdditions.m */; }; - 4691B6C1364DFC5158AFB432988F81A6 /* UIScrollView+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C7760C531F2B1243782F464D341D581 /* UIScrollView+SUIAdditions.m */; }; - 4B58D0B52C05323CDFE6B741ABED2CF9 /* NSNumber+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = EC7BDCBE6B2530C1177D048A4D9D11BA /* NSNumber+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4BA19F7DD8F9FDA648137B2CE89E7588 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 105F86BE270B468A75E040EC10CE4013 /* AFNetworkActivityIndicatorManager.m */; }; - 4BDE3F2C9BA65FFF3F71DA3F26718F70 /* SUIUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 45877DD7EF3684BB4D18151E52F63F40 /* SUIUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4C61B999DF40B1B00449A7AFCBB61D5E /* MJPropertyType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FFAC2869A7D4CCB7B971B1E10AE1099 /* MJPropertyType.m */; }; - 4F7E08FD16EB7576B6937C2F10DDB80E /* UITextView+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 90E768556D287A05668796B51C74E055 /* UITextView+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5457FCC2699281B5A4203BA1559F593F /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = BA5392BB42AA23D72DE349090E22786D /* NSArray+MASAdditions.m */; }; - 54D721AC309D34668A57AEF56B75AB4F /* UIButton+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8150593B594AC228A007401525DB3F47 /* UIButton+SUIAdditions.m */; }; - 577A24B1BD2D6079AA405ED1AC805E4B /* UIScrollView+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FC7341F2223027217659EA0C1BC121D /* UIScrollView+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 585CDAC34F08FB220FF26FF55CA899B7 /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B636E943EAE7E510EB4C81B668473E7 /* MJRefreshGifHeader.m */; }; - 587B76A3E381AF7C3EFFDF6754D39288 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 911EAAAC17F7C265314ED1815D6E5DFA /* Foundation.framework */; }; - 5BAAB79E15C8B31032FF80BEE81D54A2 /* UITableViewCell+SUIHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = F952C1E10086C3BCDEEF2B7A385D7E93 /* UITableViewCell+SUIHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5CBFDC026AAED77902F3CAC48A96FE69 /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 5355076C0155FE2A5CA037DC21A78888 /* MJRefreshStateHeader.m */; }; - 5D344AD15F64E59CDA35D5F40D3C80DB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 911EAAAC17F7C265314ED1815D6E5DFA /* Foundation.framework */; }; - 5D52DB6DF2E6C24CECB0015A9177A2E1 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = D752AF623773B86CBA2C1CF45F59F6C5 /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5FABD712523A0F7E3ADBE29128D3702C /* NSObject+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F7A03E306D1DEBDDB37E417C28F1BB9 /* NSObject+SUIAdditions.m */; }; - 5FBA673E534DD7485FD75764258C8046 /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 73BCAF452DB35CA61B7EE3A7D73043E8 /* MJRefreshAutoStateFooter.m */; }; - 607E89BF81883EA1AA7B9ECE3D3C9AE4 /* NSArray+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = FE8364C409B39E7A5405DEEAFB9EF78B /* NSArray+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6083F51989A0009C740D92767F4DC1FC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 911EAAAC17F7C265314ED1815D6E5DFA /* Foundation.framework */; }; - 622A8B0195845AFACD007DAD1B1F227F /* NSIndexPath+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D0D54CBEF4791C19FA202F252961D2 /* NSIndexPath+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 631F40BD5A8938181AECF4B56BA75728 /* NSDictionary+SUISafeAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 22E045358874AE5D9F32F6FA0D6BCA06 /* NSDictionary+SUISafeAccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 63CBFD719FD58B11F96D99248C807C53 /* UIStoryboardSegue+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 990476090F2956D7717793EC56EEF10E /* UIStoryboardSegue+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 644CE839F7275468D32A2AB26C03F691 /* NSArray+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FF70B649599928AF7A64A3C319E8577 /* NSArray+SUIAdditions.m */; }; - 66DE3988365E81DF66BDB6252E354DBD /* SUITool+FileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F4FD7841330E99C3480A34479A206AA /* SUITool+FileManager.m */; }; - 692D640842B77CD56B7BF2F2B556DDEC /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA414B85F8471D09D3EEE84AA664C405 /* CoreFoundation.framework */; }; - 6C51CCBB888F68AF663FEEE28B7C49E4 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA414B85F8471D09D3EEE84AA664C405 /* CoreFoundation.framework */; }; - 6CF9B693754B004AD7FB2F8A6C0C8F36 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = CF25332764673C29E5C2F47352ECAADF /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6E80858B842657D04234289E938017AC /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = A5F106A48E98E58675062A6494B09A08 /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6EAB50F5E7A3BECBB16C090B24E1048C /* SUITool+Delay.m in Sources */ = {isa = PBXBuildFile; fileRef = DCCB0CC5E4E5363DF0D6213928AEBC5C /* SUITool+Delay.m */; }; - 6EC97BDB3FC508526F9E388095A7DDCC /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 83EBFC68975E5F156614B8C429E0BCEF /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6EE360D085C7EDD97B0A48A415012D37 /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = D15A417FA139D9BA0C53981B8D7463BF /* MJRefreshFooter.m */; }; - 6F07DB65C9F9C55FCF6302DD17BBB66E /* NSDate+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC9AA15A00CDB35165A35B9B4F8B105 /* NSDate+SUIAdditions.m */; }; - 6FDF583204FA3ABB8690BAB45631537D /* SUITableHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 82E42A184544DB153569C29431E0AA3F /* SUITableHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7010A5470E849DDCF43C386E942E2802 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 911EAAAC17F7C265314ED1815D6E5DFA /* Foundation.framework */; }; - 710DA5E9C44A1BC56CD13FC1F2D6E099 /* MJFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4245AAAD01A988A69824F26E18A2551E /* MJFoundation.m */; }; - 73BB97DD677A5416B22A74F1FF3346B4 /* YTKKeyValueStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 636A388E7E85331440A677A8A511162A /* YTKKeyValueStore.m */; }; - 75D87C8885827BAD5D5F3465C7B31098 /* NSString+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1459C3BCB729100AACC07DC6511B5512 /* NSString+SUIAdditions.m */; }; - 7637495CA7483570965F9979191F4EF1 /* UITextView+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE94DD1B536C492E1BB6542782E0DA0 /* UITextView+SUIAdditions.m */; }; - 77F797A5A72065EE7351CF41728C2EC3 /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = BE84E01E627335A30E79C0730F99A87A /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 78940A6980F359C4304C695EF6E67C5D /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = B55294722C799E2CA1CE8E4AED8224E7 /* UIButton+AFNetworking.m */; }; - 78A8E3DCFDFE3A8800A7A727025E19D0 /* UITableView+SUIHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = F71EEBEFB8037CF3E1E49B52DFB4B72D /* UITableView+SUIHelper.m */; }; - 7BAC7266EBD2E1420C9B3009555D6E40 /* UIButton+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = FFE0CE98BAD9FB9A19DDCAC6E100CC73 /* UIButton+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7EF258E2949C98D0B48D5E2595886C48 /* UILabel+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AD21E9D043BC8BC8F8731ED4B4B901E /* UILabel+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7F0578A0258E02384F6229C678E60D31 /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = AF0DDFFD30C5F8F0B5DEBB9B30EDFDA4 /* UIRefreshControl+AFNetworking.m */; }; - 81403CAF6C4C1D3DC8B199289C3A6F59 /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D2E113C4CF83339F9CEE08FC4C95F32 /* View+MASAdditions.m */; }; - 81599471BAB0420D54E1ADF8507A5113 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ED83818A33CB5369A4C228050A64946 /* Masonry-dummy.m */; }; - 81A85131A9C883334621E78D68E7FCDE /* SMKHttp.m in Sources */ = {isa = PBXBuildFile; fileRef = 67C229228E40C4153120EC09887CFFE2 /* SMKHttp.m */; }; - 830050886B18F54E17F117FD8EFC717B /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = AD063A4E43D8190A6DCDDBABEF66F4D5 /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 83DC9367C7543199BEDF1550FA1C4053 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D4190C455A6175B48589924F50C141F /* UIKit.framework */; }; - 851E3F8C674245F168D04FF691714311 /* SMKDataService.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C4787307285D68350674D5E573702CD /* SMKDataService.m */; }; - 85FAB6F1D2FE0598BF2E61D7BB084B8D /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CA09D509ED5C3CE048090DC68D0FB60 /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 868AC6EE32D16E3A6A59428E86D3BB2D /* UITableView+FDKeyedHeightCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 597BB9E2812AEC266E883DAB9D231DFA /* UITableView+FDKeyedHeightCache.m */; }; - 86D3C675657C8AFE6F73E5D0F209E990 /* NSString+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = C642305BD8446842D0C5F00811D7F77A /* NSString+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8933CDC7595BF3CC651D36A8BF0FF467 /* UIView+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9180BF8088F82A519829D835F8D858F4 /* UIView+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8939901056B29562834A4566B0A77493 /* UIViewController+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = F873C6388770EC12608957EB0E16A457 /* UIViewController+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 89E31F10092B6A54108D283EFAAC9BBF /* UILabel+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 55A29F20E93BF3A47E3D76A1ACFABD61 /* UILabel+SUIAdditions.m */; }; - 8BA82FF5492749B2B51973B28B4DD3D6 /* SUIUtils-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FAEE1D0175C79ECCE4440CA9D0FF9F53 /* SUIUtils-dummy.m */; }; - 8C5B28EC428120AA784D773B284A4DE5 /* NSString+SUIRegex.h in Headers */ = {isa = PBXBuildFile; fileRef = E43B0B39E0BAA65A6DC31AF13ECB0B7E /* NSString+SUIRegex.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8CE4EA49048274CAA4F3BD1B37877798 /* SUITool.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA5741DA7D754AD9BD62B0422C540D5 /* SUITool.m */; }; - 8E82178CC9BD8BE3DBF2C10E33807AEB /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 60028BC73F561EA3D12C50B23308AA31 /* AFURLRequestSerialization.m */; }; - 8F68B37533C5AC9C8588BD0449D32673 /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D0CDFCA3D33178C70D0E824F1027BB47 /* MJRefresh-dummy.m */; }; - 901A1E01A4C850407AE31915F1304CBF /* SUITableHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = ABB35875277969B9BEFAB3CCEB7533C1 /* SUITableHelper.m */; }; - 9035959805255625F57639D88F7EDF4B /* UIView+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AA3E0B0762EDAC5A5F7D5D699BDC3D64 /* UIView+SUIAdditions.m */; }; - 904EC3379A9E226064CB03DC1ACA2EEA /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 99436AC1024C5581E54F05F3CDBF0CB4 /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 91CAC2B69903F5F3D7C25A95CA77A600 /* MJPropertyType.h in Headers */ = {isa = PBXBuildFile; fileRef = 7419F6054C443C52A63B9A448146AD4A /* MJPropertyType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9205037BA8C22574B33FC96C5EA829A3 /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = 477CF0FBC6BE2288CCCEA8156E364FFE /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 922ACEFE37E22A36A6F0209742B7B51A /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 97EA9A230546A22B76C80426F8A958C0 /* MJRefreshConst.m */; }; - 9230119085130B273ECF20F076081DA1 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = B2DF68490EDE7B14DEE4B56891B5D225 /* MJRefreshComponent.m */; }; - 932430D4A2289A39BE7C50EEAA60246A /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 22596A6054104D590833ECB92A35D8BA /* UIScrollView+MJExtension.m */; }; - 95A549BD8C2FD19D10BE784C75FD0895 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 911EAAAC17F7C265314ED1815D6E5DFA /* Foundation.framework */; }; - 962AFA18C572B2C2471789AFB6B5DE3F /* SMKStorePublic.h in Headers */ = {isa = PBXBuildFile; fileRef = 23CC52C6F84114294E5A2709CB63E4FF /* SMKStorePublic.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 99D8C610BC84BE231C5D3D280F3B12AF /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B30D5291A3086ECA54C2278B024C219 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9A6AE1EF2E94AEB6912BE845583E7D57 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D4190C455A6175B48589924F50C141F /* UIKit.framework */; }; - 9BC54E7F40F6A6635E32D5D13CD3FC1A /* SMKHttpConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = B316933A8FFC76E5D67C6D29C085D00A /* SMKHttpConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9BF8D708AC9892125B0AA4E540361FF8 /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6313B6B56FDE1002848AC08C1BD6BB29 /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9C2B50F915D9186BA6EFEB68FEA58E96 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E52C5C1E169F6534FB47D920576E12E /* CoreGraphics.framework */; }; - 9C7615F9A7B5FC00EBDB0524AFC85F4D /* SMKNetworkPublic.h in Headers */ = {isa = PBXBuildFile; fileRef = 2909D0B94B21F1FE68D7799C988467E6 /* SMKNetworkPublic.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9CA89532BC0DBA2BF7612518FDA24421 /* UITableView+FDTemplateLayoutCellDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = B0BE7A25335F2139B318BDF827650809 /* UITableView+FDTemplateLayoutCellDebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D9DBBA0D966D6488C7CA2B668EC45A4 /* NSData+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C68EBFC8D1999EB705E1D817E80B53F4 /* NSData+SUIAdditions.m */; }; - A0AD231A11A54F59BC8D486946D2928B /* MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EF11E3745619E54C3500457158FB2F4 /* MJProperty.m */; }; - A0CE32EC2F85CA1E0BB505C18401E275 /* UINavigationController+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 58EED4A76CE924CB7802D03BF0F6C5CB /* UINavigationController+SUIAdditions.m */; }; - A350C5704A1F233DAD830E081E00F8C1 /* FMDatabaseAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = D5D3C174FF59C9579724FE750B56CAF8 /* FMDatabaseAdditions.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - A44AF130E4C5313CD193D9BF68853026 /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = C88E4E46109E1A90EE6143882F8F572E /* MASViewAttribute.m */; }; - A60A4B3054017180C0B6C7B24E651E0A /* MJPropertyKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 46A45C99967416595E861C0F26D2E713 /* MJPropertyKey.m */; }; - A69B93EBD2CEAAEEFB1C13EA0D139B4A /* SMKSingleton.h in Headers */ = {isa = PBXBuildFile; fileRef = 21687D7F6C320F47C9B017CEBC727FB7 /* SMKSingleton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A7D31BD1F3AD4ED4612467FAD332F388 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 86B5FD785C160C714F247719BE8C9B1F /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A7E35F98355E7F2685EB86F1E7A323CE /* NSString+SUICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 45E39B518A44FB352550CBF7F20E4E95 /* NSString+SUICrypto.m */; }; - A89B33DBDA4E99005E1F1BDB95A296CC /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = F7F6793D25FBC29CCBF7E606ECFE8082 /* MJRefreshBackFooter.m */; }; - A8FC6A53F6C1CB4DEFD972664E1AF3B1 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DCA6FD2ED577FCB5C8E19D333C8A71F /* AFNetworking-dummy.m */; }; - ACE9C1A6E8D5121C6C5F907C7A9CFCC9 /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E1339508316363FEF5BAFBE18B9AAD5 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AD359A96DD4AA2C962E50A5CD5524F54 /* UIWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 393D9178B063973629F1D237657FD1A1 /* UIWebView+AFNetworking.m */; }; - AEA3CFD966675F3BECDBF6BB5380D5CF /* UITableViewCell+SUIHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E8742705CF6EC8AC0DFB233B4E84857 /* UITableViewCell+SUIHelper.m */; }; - AF62B956405F7734F5A9B8F3FD4B1B96 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = F8162B38F2CBEDC3DE84717C4A13BBC3 /* ViewController+MASAdditions.m */; }; - B0BE398350F83A7B0102C3BBAFC51428 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 172F7B55FACC67F63F7C183110DFBCF9 /* UIImageView+AFNetworking.m */; }; - B1211959A166B4AC2EE1EF8B05D3F9FC /* SUITool+OpenURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 239E2333E0BDF5C4669B5F4FBB549FB6 /* SUITool+OpenURL.m */; }; - B19CA8B0FD349AEAD2D5A1C6B46AF47D /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 7888AAFCE0557E3E5CCAD524E7B83EB3 /* MJRefreshNormalHeader.m */; }; - B1C79607B754B6275C09FD6F60E302EE /* NSData+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6906B081946E4252A9735718B7C58853 /* NSData+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B2B7C90BA9C4DBD9851C75AC801B0E8E /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DBF9CD0D99E0C57AD094ACF2C8FCC01 /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3083EF6495C527A6BFE0F090E82789D /* UITableView+FDIndexPathHeightCache.h in Headers */ = {isa = PBXBuildFile; fileRef = DA73ED129794C22F0B534F1E4A81C854 /* UITableView+FDIndexPathHeightCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B32254166A7D1F17BE0D8810FF9D9429 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 911EAAAC17F7C265314ED1815D6E5DFA /* Foundation.framework */; }; - B32AB59E5013889D47FD4B53CFF642EA /* NSDate+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A0F204F29D1849564338EEB1628FC7E /* NSDate+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B418C9BDCF8C6BAC2E3942F157BB6D4C /* FMDatabaseAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = EC2BCB85BA1EEBDFE50E2A440AE64D62 /* FMDatabaseAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B51AA1F7701DCDBCC9B88A15320F9C2C /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACBD701C4E26F6B8E3EDD632C87D24F /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B5A8A60810B99D763E3A3F076F63509D /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BA60C00B7F90F1152FE9AE9D9532100 /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B5CF67F7870BAB70A76E57479B706B42 /* UIWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CFCED97A4E4862F7062640EFD288AEF /* UIWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B7778D0631AAB46C9D385E43E692BEDE /* NSObject+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0829AD4965A7AD795CB77E98A1D909CC /* NSObject+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B830C1BE45CD2C60AC06CCDD86FDA443 /* SUITool+Delay.h in Headers */ = {isa = PBXBuildFile; fileRef = F38A2A22E72ADE8BF7F3F161E58BA6D7 /* SUITool+Delay.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B8E1509B2656A469D2CAC9F86193F8E6 /* UITableView+SUIHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = C84CE66AACE57DC27BFF352499DD1BEA /* UITableView+SUIHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B91534E72FAE30BB0FE1DCEED16745E4 /* SUITool+OpenURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ECE77B92335AC850E12E1F04681CD16 /* SUITool+OpenURL.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9B44F1EDC36C095666CA0AE98371C09 /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D130B5F2882E3BF012E9379DB719D40 /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9C36A50069E553B4B8538E291864BB5 /* NSObject+MJKeyValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B3478207A0C925375FF3CD62AE31AE /* NSObject+MJKeyValue.m */; }; - BC8D9D2C6322CA8D83DADAA37BDA0C9F /* NSDictionary+SUISafeAccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 400F4EFADF28ED5C3876C868221C91BE /* NSDictionary+SUISafeAccess.m */; }; - BCD4B362C6194513150915437754E2D4 /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = A0A9958A1357585665416D0293D6410E /* MASCompositeConstraint.m */; }; - BD116C311C547E8B050EC9ECF2B02ACD /* SUIMacro.h in Headers */ = {isa = PBXBuildFile; fileRef = EC2B30EA59585F5DF87D928DC82EDBFB /* SUIMacro.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BDD210D7537DD15CFE59AE126005E5F8 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 87AACDB48DC29A497C7B1BE20D004B67 /* MASLayoutConstraint.m */; }; - BE024118D329F8F566BD1811A1DC16CB /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = FA0F39788DE6E6576E42160F4D9D6B2B /* MASConstraint.m */; }; - C07B9A9C4DAA23D7BC3973E8E3312601 /* NSDictionary+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 97EDA3DC09E3C99DACCFF4D32F502818 /* NSDictionary+SUIAdditions.m */; }; - C16442D25F534C602780E6FD44C6A698 /* NSObject+MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = A30A4AB892328586893E5B2241D4E0A0 /* NSObject+MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C1B65C3D849FEE4FB5298A8135A765DA /* UIImage+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 2777465211FE64C414CD700B00770EAC /* UIImage+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C1DAA515EEE44666FC7C3CCAB35036F9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 911EAAAC17F7C265314ED1815D6E5DFA /* Foundation.framework */; }; - C2201E34603B014192F0967473518496 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = F7594597A97B6F7780FE8117B205516E /* AFURLResponseSerialization.m */; }; - C29DF627F41B7438B3B37ADD4AB27DE1 /* NSString+SUICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 084B10BA10224CA99EA0CB8C0F1B877A /* NSString+SUICrypto.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C37D2F9A62232C28DAF2E51CF1364F21 /* MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = D9F84F737228F7BB1AABB654A1F97A9D /* MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C60EF4146131236D32694DFD91170B40 /* UITableView+FDIndexPathHeightCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D74D8977A08B1BCCF9F91FE53BAA8FF /* UITableView+FDIndexPathHeightCache.m */; }; - C66A994F14BA080776BB3E2AD8CC55B4 /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 71354AD77DCFE0EABF899A0691CF60ED /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C67F32FF951D1979EF0E6B4ADED5E8A8 /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = A9E3E35533AE3B1434EEF4FABBCAF4FB /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C6EE194D232E9FE87097C0F1DF91B9FA /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D8D6C5F12932E5F987C2CA7BECB7587 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C7F37D8F206A610D7E4220FD5CB3B4DD /* NSNumber+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 78127506E73A0CF72E04DB634DE3A46E /* NSNumber+SUIAdditions.m */; }; - CA027706DD6805766F1F4EC548E72440 /* FMDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 85A9D068D46A7B40282F447B23EEDC90 /* FMDatabase.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - CA1EB1DB5C89E63A19ED05C55E35AF23 /* NSObject+MJClass.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E5049EB9380E01D36CC2B4C562E4E52 /* NSObject+MJClass.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA265C51C89714E149E4AE00A65C10D7 /* UITableViewCell+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 326913FF2522C04BFF71622FB2468488 /* UITableViewCell+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CD147296D923A3825A66E67E1E45165F /* UITableView+FDTemplateLayoutCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 14206B350069E0664CCF2DC97D1265BD /* UITableView+FDTemplateLayoutCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CD4CF5F1389281BCE40DF30AD1945D03 /* NSObject+MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 19E9B9FC2AEC6D3B4052565C46758BFE /* NSObject+MJProperty.m */; }; - CDA4DB994BAC351F4CD71EC283055E57 /* NSObject+MJCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 40616BE86694452804F1FB3E5D62A5AD /* NSObject+MJCoding.m */; }; - CE8965366A3B07A6C0615055A31B8B83 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC6C864F80F372CD71886EF0770E0AB7 /* SystemConfiguration.framework */; }; - D054768D94E678B8A0D7F2AB4FF45E54 /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E7527328C00EF3D9965A94ACFAC4783 /* MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D0C5FF5485EAA2CDA03E9796B407697A /* FMDatabaseQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 91B40443DBC59E879FCEE7E0B67BEFC7 /* FMDatabaseQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D0D5FFE53407F16C9CD3D0ECF43ACE93 /* FMDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = A243EADC33B0D5A83FA3B22956481381 /* FMDatabase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D11677C0738E713D50F92D32B9F9578A /* NSString+SUIRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E94EC7803E3334ED96387D5D5D62D7C /* NSString+SUIRegex.m */; }; - D19EBECC5CB05CB7A995F46B5E5AFE18 /* SUITool+Camera.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A048B4A1ABD0AD2EE7F08BC2FB4B3D1 /* SUITool+Camera.m */; }; - D1D1F11808DACCA88C55636F85A58FD8 /* NSString+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAC87B3160B76A49B6B2DBA0A500620 /* NSString+MJExtension.m */; }; - D31FEE51AF4BE2A6CC059F80B983CD3B /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = BF687BB405A387DCB054002771545AD3 /* AFImageDownloader.m */; }; - D3D9F12613E23AD64C1FA5F7081A3668 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DB7ACAE97B5D9B061BDB4FB0336FFA23 /* NSLayoutConstraint+MASDebugAdditions.m */; }; - D458D0194FD6EB04E00D04DC74BC018B /* UITableView+FDTemplateLayoutCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D847E958B62337FA4DF048263D51DC5E /* UITableView+FDTemplateLayoutCell.m */; }; - D48B9DD2D6947B38958FE0F2094F5046 /* YTKKeyValueStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 571F7285DA548BE22041ACD0267CC7DF /* YTKKeyValueStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D595C17C62C58E80EEC6F9EBCCF4050A /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 099F2DBEAB70BCCF1AE52A13DAC016F8 /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D5CD34E04C8057BCA1BC62DEF53DA7A9 /* SMKStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 8955BE8BF33D620050025F8FA6CEF3D5 /* SMKStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8BAA5F8E5949555BC8B94E309E23D8 /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F4C872929BCFAAA2E13A2F9AFCB0625 /* MJRefreshAutoGifFooter.m */; }; - DAF1CE8756287B465E0DE48A6133FB79 /* MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = B792CF9055249AA2FD5FF1F7B2D17B57 /* MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DD1F717B0527C71229B3339324E35E55 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0742744BCAFA8EE6783CCEFCEA510193 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DEFA3504695E9DFDE1177DAB22884470 /* FMResultSet.m in Sources */ = {isa = PBXBuildFile; fileRef = A014B6C747F64C8FFE81D53C55C80649 /* FMResultSet.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - DFDAC8245626953C4BCE5A2DA6BE2A5B /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 22FCFD75D7B6369E6FB70FE41AC86C10 /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E017C5222255E45AFE48A72F6DBDFFB9 /* SMKHttpConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = A5461B71452DEEACAD280DBBE524CC00 /* SMKHttpConfig.m */; }; - E0529B7C623EB5752662665A05DAAFBA /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 7590DD847FC493D6841975D239803BEE /* MJRefreshAutoNormalFooter.m */; }; - E0EB542E028854CA91A18AE42881132D /* SUITool+Camera.h in Headers */ = {isa = PBXBuildFile; fileRef = 074F90D65D3059B8D5047408A8D1BCF8 /* SUITool+Camera.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E212C2AA95E8F6EFB69A5F1455F291F8 /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BFA38E3AD09F29CA20E144A1FD4DF71 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E6B49FBCE3957DB67F691ACCC4CAF4BE /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = BAE12B2ECAE15979CF1FCDE345984783 /* MASViewConstraint.m */; }; - E8239C1AD499A01EF1810AF5AA2B0D33 /* SMKStore.m in Sources */ = {isa = PBXBuildFile; fileRef = CDDE955FAEDA3675119E3E458E3E81FD /* SMKStore.m */; }; - EA03AF12E0E3E8ADC50DA70F2C5BF39E /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8F796EBB6FDC3DF6F80E3C46C65CE5 /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EB02AEF303313F801392DE8D90AFF0F7 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 90658C9D292741B7909192C70406F173 /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC6CCC98505D2067BC98B4E6223C9DF8 /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = E056D742A32E21D8A10B96266AC9EE8D /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ED69D9B5A342FE9BD3F170D5CDDEC948 /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E5A72197DC34B5BDB7942C65DF84F514 /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EFA628D6E506005AF550AAEC59E5CB0E /* SUITool+FileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A50D0CD737A10DEF326EAAB8DB44E12F /* SUITool+FileManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EFCDCCD66269CA908494B11E024DC736 /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 486A1018F6E527411363F7CF672132F1 /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F0D01ED940723EED434E4EF4BCFF53F9 /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = C7EE08933193DAA46C80C10EA141747F /* MJRefreshBackNormalFooter.m */; }; - F1B3A0D1EC0DBD7AB9DCB91A71F7E907 /* SUIMVVMStore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CD7C38AC54050D4E1A20EDB09D8A6CCC /* SUIMVVMStore-dummy.m */; }; - F34556ACC4246F75F6F8E2EDC153CB6C /* UIImage+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F9D7C599886FDE939C0A09D27DCF467 /* UIImage+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F3774B1449FCE5B3CA3E1B336E11D284 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 88D938C58CC019A545DA7E20581A92F8 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F432A374A040EBAB69C9EABC6C4D699A /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 12BD55E81EEFA074877E19D8C63C7490 /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F5434E3992B0EF2690B034BAEC262A5A /* UIControl+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = F45BDD15E43C8E3D05D90C0A3C8F631D /* UIControl+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F58455418F190BC37D1FD19EA3EA5B01 /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = AFE5C7A0256AAF05F9839FDD5796044F /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F606E755773DD0E57B62B291FC76E691 /* UITableViewCell+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E14E05AAF2C09432FD57FF45EC463B1 /* UITableViewCell+SUIAdditions.m */; }; - F60A2B84B40CB737A1FA98BFB3FDDD27 /* SMKDataService.h in Headers */ = {isa = PBXBuildFile; fileRef = 72B5C8351F905FE80D77B150904C433E /* SMKDataService.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F78DACD04CA58517AF9AC239943DC9B7 /* UIViewController+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A6AD16D168F70207C9D34A034754FAC /* UIViewController+SUIAdditions.m */; }; - F7B852F0917A6D6540DAB54F736D681B /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 9547A011F03137EA35A4E8E57C622BFF /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F977B243321331B58666E9284634101A /* FMResultSet.h in Headers */ = {isa = PBXBuildFile; fileRef = C78EFE41ECD981C1B4ADA370F3315C8E /* FMResultSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FA25FAC125B9F2CA29AAF0FCB1345B0F /* UINavigationController+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = D8DCE125D44D619256F04ECF2E994F67 /* UINavigationController+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FC368AE8BE0F1AC15E29048347B2E421 /* NSDictionary+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = D05245DC2FABBD733226C0AFDF72510D /* NSDictionary+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FC9288F546BA266AC32D5752DDC425D9 /* UITextField+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 27A40243CA1737A29F05552C8794FD0A /* UITextField+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FCDDD3BC67EA205C87238A2A87D5C36C /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F20F5303729E78AB3F821F82F9C1E91 /* AFURLSessionManager.m */; }; - FD39EBE3398E1A99965AC003B273450D /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 76610991AF6C4C46E375C5DB72A48B1C /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FDF30F97BDF167F0B956DED0F2C8DA69 /* MJExtensionConst.m in Sources */ = {isa = PBXBuildFile; fileRef = A9282DBEF7E5669EA48167DD5891119B /* MJExtensionConst.m */; }; - FF1FEB28260D52C222E2F87FBBC05277 /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 52AC8CB9CBC4F66E52562D956AB4C9FB /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FF682E8B083BAEBBDF38C52D89D45E37 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = E706A1E81734860EC2F652CA197D94D8 /* MASUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 00F09DB5E05D1208F27161E2F016FE36 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 551C0B4180F1504F4B64BE1060061610 /* MobileCoreServices.framework */; }; + 022B549F10007177A43FAB1DD5114F7D /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00D58A4B1C81F4AF9C06E29625F38F1F /* Security.framework */; }; + 026CCF569A2125FCB0EE8F152731259E /* NSObject+MJClass.m in Sources */ = {isa = PBXBuildFile; fileRef = F3B266E6508DF4DB9178725F987D2119 /* NSObject+MJClass.m */; }; + 05B47B17937A59C15A583F0D6F12B2AE /* UIViewController+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 45F3DC08FD1D8CF98ACB05301D875F52 /* UIViewController+SUIAdditions.m */; }; + 05D6282BFB984B52C4AA179DED8648D9 /* NSObject+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AAA7911D1170B1B26C80E689A6E9E963 /* NSObject+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0729C19DF24F0DD1853A1CDEEE1474AE /* UITableView+FDTemplateLayoutCellDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F5D2242F64B2AE2A06BEAC9549DC731 /* UITableView+FDTemplateLayoutCellDebug.m */; }; + 0741FF4B3A48E898E7B2EBD53E7331DA /* SUITool+FileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C25FA8B31AFCBBD11167C56F5DFF614 /* SUITool+FileManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0984A026D8B0F948E7A12869D5B48CA0 /* NSString+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B92439FC023C6AC4698E23DF854D6E1B /* NSString+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 09D04A9AB71B5A4FE9175F80496EA5FD /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 8515DB09F2850606C80E7ACA02038157 /* UIScrollView+MJRefresh.m */; }; + 0A08FC71C4E3B8E0F8734BCDA7CCA7CB /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 27FD7FE9D27FA5303FDCE45E79560EBF /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0D5C0360253C25079582B4738D835EDD /* NSDictionary+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5973A05F30D00F7B7ABF6F7578EE823A /* NSDictionary+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0E9CC9CE86CD9E25E751565F26ED9D0A /* NSArray+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0170EB7E8B97588555A21D4CB80A1659 /* NSArray+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0EF8E9AA652DBE2745A7D5C8CD2E3BDE /* FMDatabasePool.m in Sources */ = {isa = PBXBuildFile; fileRef = B9E66F5779DEBF1C9365E1D6C61156F4 /* FMDatabasePool.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 0F7EC02E944F8719A5EBDC9D29F9E99F /* MJExtensionConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 51100B3FF1A00DC8D19DB1DAE49E2318 /* MJExtensionConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0F8A8E0D6FAEBF758E0B4D620335F094 /* FMDatabasePool.h in Headers */ = {isa = PBXBuildFile; fileRef = 828CE2ABBC2B706222297001ECA4A563 /* FMDatabasePool.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0FE0D3FBB070A8F51C124CA0C842691B /* NSString+SUIRegex.h in Headers */ = {isa = PBXBuildFile; fileRef = B136986315687D15D70F94EE0895A747 /* NSString+SUIRegex.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 118227C43F283C87130BEE2BFABC7EBD /* NSObject+MJCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 22B36B3A2EDBC968348123A2162FB922 /* NSObject+MJCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1200E7640F89B5561A73D70F27DAC366 /* UILabel+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 990FF3331544D6F2E5CDBAA924AA4E64 /* UILabel+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 133B30495D945B737235B107AAE7DAAB /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = B54B65B232233F092549B4D5A3B03AFD /* MJRefreshHeader.m */; }; + 13695CE9BF36F26CA806C5CD2D6ADECA /* MJFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 3414F4C550FA431170325B86F4DE82C8 /* MJFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14CD3DFB4A25BAEFB205730FA6750025 /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 2989F03D5CC816DAD1E9E0414A3F8E8F /* AFAutoPurgingImageCache.m */; }; + 15460ABD372C937E2A07A2FCDF98C473 /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A2D319406551C6E7A0D6B60A783F0B2 /* UIActivityIndicatorView+AFNetworking.m */; }; + 194E127098AD94435D3E91744B85E66A /* SUITool.m in Sources */ = {isa = PBXBuildFile; fileRef = E3A5E39BACE21307BC35A98C91BE9B69 /* SUITool.m */; }; + 19E6319F6ECED7539AABBD9A211F7AEC /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 603FD613E65A16D1BC2544FD6AF61CEB /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1B798571774C7D88E963D1A4877B5B84 /* UITableView+FDIndexPathHeightCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A51EE899282B7B264EEA75F944EC6A13 /* UITableView+FDIndexPathHeightCache.m */; }; + 1BA3D9FB5D5145BF698C941C0F843518 /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B05901F997BDE533407C8246D826AB4 /* MJRefreshBackGifFooter.m */; }; + 1E0D9757A9D3F3F68B12EC98CCC0D23E /* UITableViewCell+SUIHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EBE6A0D5C237D73D59B1D8E75BACA1 /* UITableViewCell+SUIHelper.m */; }; + 1EA2BF2F62083E34B6434EAEBA5EBAD2 /* UITextField+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DC572A52432CD358A8D91DDDE2957AAF /* UITextField+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 200CA5D919CC71EA6A769541C92716D3 /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 12FE78F4A6AC4AA4FD9B328A60EC96EE /* MJRefreshBackStateFooter.m */; }; + 2053D71CF543C3A3CC47C5409D61923C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 128AD5011BFADA37167C5F6269BB28A6 /* CoreGraphics.framework */; }; + 2280D55B18C853A6AA3AE9565EE91F19 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 62AEFDF5C8A3AAD8C217265D4C201E41 /* UIView+MJExtension.m */; }; + 23415204AA48A02959E4E5245CF96037 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B73769E85A147C3C154D12CC097DC89B /* AFHTTPSessionManager.m */; }; + 2359387620C5E815BF0594BC40311734 /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 36BAD56C58FAE5092512CC8003A1EE52 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 282081E035E7A843068E8BCC2E07C217 /* FMDatabaseQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 46B70318359006A5737977B177CD39B0 /* FMDatabaseQueue.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 286D614FD8C97CB100F6C20C770F0CD2 /* NSIndexPath+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CD547F0425C53067BF8C0730657D51E /* NSIndexPath+SUIAdditions.m */; }; + 288565BAD234D2AB112D42563BA40757 /* UIControl+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = C33076EE4363713F72219644C0CCE918 /* UIControl+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2894369EF8D702DF360B6763B36E8444 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = CD45825EEBD0163EE9FB8EEDC7A0F90D /* MJRefreshAutoFooter.m */; }; + 28A319301013DAF20B30F9A981D0021D /* UIScrollView+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = EAFC4E85EA642DF75B75DF88DA6A14A4 /* UIScrollView+SUIAdditions.m */; }; + 2905381350CEFFBFFA9BC8B5D027F190 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = C5BFDFD05569DA3EE616C3DA025D8F38 /* MASConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2979E54C4AFD27076576E82ADEED2F00 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 86B844E4F895FFADBCA6CF6BFC4AD028 /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2CC27528C64733F5C0AB4B1B6EE35E8C /* MJExtension-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A206BBDD832099989F9DBFAA083BEB02 /* MJExtension-dummy.m */; }; + 2F85D170E76C661AB0D9E9A8B206C78D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62D17CB1CE0E78ACF219FD2FC9927222 /* Foundation.framework */; }; + 311E5200832E4AE174A193851A2C6317 /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C3ADEDF7BCCDBDA366BDEE15B96F3C8 /* AFSecurityPolicy.m */; }; + 313531CEDA0294311D87B4F4C3F073F4 /* FMDB.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BD6B278BBEF46C4CB5E53491EA7B614 /* FMDB.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 326A543AD4E39A2DAECA1CD385E3AEA2 /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = FAAEB32BAEB603048640C60A8F32476D /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 331718BFB4A91CFFE026492905231562 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = F81E8CC85FC6DA82D9996E25553C66B0 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 335DCBC17D2469F228020EF6C7B41F7C /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = EDEE4F7430EDD726548780E81ACAD73C /* MASConstraintMaker.m */; }; + 33634D35DE3745B445A1291F6785896E /* UIButton+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B839529CB6565699E0C6465A2A69F5F9 /* UIButton+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3511AE7ADBB71D05565854F0E70B7D08 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BECCCE1FF9703FFD536406645F720F6A /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3528DA51CDFAAA8042EFF987AC19861D /* UINavigationController+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 35FBBC21D25A678957D981A4E56B9D85 /* UINavigationController+SUIAdditions.m */; }; + 366A613AE07EAA35B5789F6123FB48AF /* MJPropertyKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 146C52C1F8701B0BCEE6CC545372C65F /* MJPropertyKey.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 36C6B76E77B43C15D9B36F05B2A3D391 /* UITableView+FDTemplateLayoutCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E7AEFC749E0FBE091423147258C431 /* UITableView+FDTemplateLayoutCell.m */; }; + 3742B40E9674A19D5DBAF287B47837F0 /* NSString+SUICrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A5C91651E9F9ED24E134C4272C67F02 /* NSString+SUICrypto.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 38EEA9ED6B922946C54AD6BAC93B73AD /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 573741D5E106B0418B43067016E273C1 /* UIProgressView+AFNetworking.m */; }; + 3939531EB270B4145C7ADFBAB2E5695F /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C2E80FB44796910980A89F36738048B /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3D0F69C4CA35EB6A1F686BA88B19B4F6 /* FMDB-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B2F2C29D530ADB64496F14DCFFC6323 /* FMDB-dummy.m */; }; + 3D154E0580CB18625F5FA28B4B8EBBA9 /* SUITool+Delay.h in Headers */ = {isa = PBXBuildFile; fileRef = 564CE3E609BCF7BD4A16DD5A07C19667 /* SUITool+Delay.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3F63C119F95A6735AE627BBB1BEBC4B1 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 91EA8C1F3939A2455B65421DF16DA817 /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 404D3302A6C00B88B9A14EFE6B0D6719 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 46695837FC54A49FA403EBD926A863A3 /* QuartzCore.framework */; }; + 42840353A7FA0C803A3451F09FBEA4B1 /* NSArray+SUISafeAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 3099C4A3494968896EEE4827E1FA8E13 /* NSArray+SUISafeAccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 43098B12DF5546CB576986E68DBCAFCA /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 297CD5762F6DFCFDC679B16CA9E4F764 /* AFNetworkReachabilityManager.m */; }; + 432BD50F1E699EDF2EA007E850FFCEF7 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = D376CD704B71D663D36312616FFCA034 /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4330562BA1A299CBD37F4602B1A4C95A /* NSObject+MJKeyValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A95BC7C0334402FA569FDE2B3D0DBAF /* NSObject+MJKeyValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 444602F3A422E5EC1DA8EF2A3DFA01EB /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AF4110F05F21D931BA61267A30AFB5B /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 44F50504254959A81B2E96AD6261B2A9 /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EE6726B6D184945B3B051AB6C28D6B1 /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4AD56C60A99482C5E948597A038942E6 /* NSData+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CEC3489B2F200CCDC511865114BC2A8 /* NSData+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4BA19F7DD8F9FDA648137B2CE89E7588 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 68B0BD32C89BBF031D54B5E8CE71412F /* AFNetworkActivityIndicatorManager.m */; }; + 4C61B999DF40B1B00449A7AFCBB61D5E /* MJPropertyType.m in Sources */ = {isa = PBXBuildFile; fileRef = DE8AF5379B06547F366A30A27FEE32AF /* MJPropertyType.m */; }; + 4D08A7D2DD62F3106495CC380F5DA61F /* UIScrollView+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 822154FDF3283964E4EB7AAF417198CF /* UIScrollView+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 51D10A800C77C043093EA772E7707892 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 128AD5011BFADA37167C5F6269BB28A6 /* CoreGraphics.framework */; }; + 5457FCC2699281B5A4203BA1559F593F /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A2E85FBB5F16330D7FAE2D79407A245 /* NSArray+MASAdditions.m */; }; + 579D2AAEE420D435F8A41E11DF99F3F3 /* SUITool.h in Headers */ = {isa = PBXBuildFile; fileRef = 643F1FF72C3DB7B28497C2F887D044C0 /* SUITool.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 585CDAC34F08FB220FF26FF55CA899B7 /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D4EB07DF0E0FC4632B99DD66919C6897 /* MJRefreshGifHeader.m */; }; + 587B76A3E381AF7C3EFFDF6754D39288 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62D17CB1CE0E78ACF219FD2FC9927222 /* Foundation.framework */; }; + 5AD390BEA253E9E8A17BC0C962F88170 /* UINavigationController+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = CC21954084A4806F2A2A0380877ECA34 /* UINavigationController+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5B133888FC8BB8482229BB9589E9FD52 /* UITableView+FDKeyedHeightCache.h in Headers */ = {isa = PBXBuildFile; fileRef = EEFAFF46A706C92A3873B65015BBAA79 /* UITableView+FDKeyedHeightCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5B5C16688BDBA69EFFE680A7250C9EA6 /* NSString+SUIRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E791BF1025ED56E4A8BAAF1356E9154 /* NSString+SUIRegex.m */; }; + 5CBFDC026AAED77902F3CAC48A96FE69 /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = B5A4E24CB981FE111C54F81C272F6AF9 /* MJRefreshStateHeader.m */; }; + 5D52DB6DF2E6C24CECB0015A9177A2E1 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 234878F745023CFFA813A103AFA91BAD /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5FBA673E534DD7485FD75764258C8046 /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C98530EBD2516774211F8604D4BBFD2 /* MJRefreshAutoStateFooter.m */; }; + 6083F51989A0009C740D92767F4DC1FC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62D17CB1CE0E78ACF219FD2FC9927222 /* Foundation.framework */; }; + 6A84DD3F16C47E52CF47D8120F136A31 /* UITableView+SUIHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FE28F10F33202D9F1E5F352064BEFE4 /* UITableView+SUIHelper.m */; }; + 6CF9B693754B004AD7FB2F8A6C0C8F36 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AC6109DE3193204D0DC8923A8D71F87 /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6E80858B842657D04234289E938017AC /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 7840D32EC7FB60CD40F3C7297EA5ADB2 /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6EC97BDB3FC508526F9E388095A7DDCC /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 21BFA2DF5DB3D2516B7A876C45049A00 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6EE360D085C7EDD97B0A48A415012D37 /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AB957B1EFADA88B53B579276A5D79F9 /* MJRefreshFooter.m */; }; + 6F4EE9A26B34DCE35D493E0EC1092477 /* UITextField+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CA08DF71E931CE6EDE8D8BE6A810FEA /* UITextField+SUIAdditions.m */; }; + 6F6627CA63BC412C656A46987B385973 /* UIStoryboardSegue+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 65BF0A1BAC37C2E1D7F464800403B960 /* UIStoryboardSegue+SUIAdditions.m */; }; + 7010A5470E849DDCF43C386E942E2802 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62D17CB1CE0E78ACF219FD2FC9927222 /* Foundation.framework */; }; + 710DA5E9C44A1BC56CD13FC1F2D6E099 /* MJFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 366E9F7825323F79B15713376F21B3F0 /* MJFoundation.m */; }; + 71851BF94AA7E2BE7388BCEA48DAC828 /* UITableViewCell+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = D8128557F88891C3F605E0FC2B360BAD /* UITableViewCell+SUIAdditions.m */; }; + 72CF81DD2B8BFD8DC5DF13A043DF6A71 /* SUITool+FileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 36602C6E2F7F1BD32E7205A3EEB7E444 /* SUITool+FileManager.m */; }; + 755CA7821BC086382DA5854D840C3500 /* NSDate+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 81FCE53C759AAC4789567BB356228FC6 /* NSDate+SUIAdditions.m */; }; + 762145742E006CE574A9C8225B11E272 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62D17CB1CE0E78ACF219FD2FC9927222 /* Foundation.framework */; }; + 77F797A5A72065EE7351CF41728C2EC3 /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 5480F9CD23E86F3A5EDA07228946FAEC /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7889B8B31B03759B298E46626BCF6AEB /* UIImage+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 05CFB9729490DF96FA7E08CC45C93132 /* UIImage+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 78940A6980F359C4304C695EF6E67C5D /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 08131B0176B146FE74E21107437A73AC /* UIButton+AFNetworking.m */; }; + 797078F52A6F89F67EF36F739369FB61 /* UIView+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = EADDFB5200B7C4AF37456A2DA592D0BD /* UIView+SUIAdditions.m */; }; + 7F0578A0258E02384F6229C678E60D31 /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 60EED3980878DCC5C9AB59E7F4F11AF9 /* UIRefreshControl+AFNetworking.m */; }; + 810274661317B992EEF07BACFFDB6CF3 /* SUIMacro.h in Headers */ = {isa = PBXBuildFile; fileRef = 11AD10BAF765E6340CF9B6184787E66B /* SUIMacro.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 81403CAF6C4C1D3DC8B199289C3A6F59 /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EC2A8E52EA723BE035616AA81660D3B /* View+MASAdditions.m */; }; + 81599471BAB0420D54E1ADF8507A5113 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 24EB8E1BC934BFAD0BC66E55AD2D5F13 /* Masonry-dummy.m */; }; + 8273AE0860821264EA610912A694AADC /* UITableViewCell+SUIHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = E15E41AD5E71788F624BF72F2ABDE6F7 /* UITableViewCell+SUIHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 82D39D8B5AAE287332CC36580E41622A /* UIViewController+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = EA628141284DBF7E37AC34CD2F35EB85 /* UIViewController+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 830050886B18F54E17F117FD8EFC717B /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BBCCBED0A07ABAC6418845CD175DFDE /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 844741D70A8C623A7916C1E81BB69211 /* NSDictionary+SUISafeAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EC8FE231A6D7E5A49163CF31867DF6E /* NSDictionary+SUISafeAccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 85FAB6F1D2FE0598BF2E61D7BB084B8D /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 48B235F1026CE20001AA1E1DCDB0B5E7 /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 86D3C675657C8AFE6F73E5D0F209E990 /* NSString+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 01A6D9B9FB85E45B87F3FECFE06246AD /* NSString+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8E64C2E9785DEA585B6F5B1F8F504CE1 /* SUITool+Camera.h in Headers */ = {isa = PBXBuildFile; fileRef = E0C9E4B97056B00CBC37EFB2D3198869 /* SUITool+Camera.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8E82178CC9BD8BE3DBF2C10E33807AEB /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = EC806B19BF45883DF78BC33958C0869E /* AFURLRequestSerialization.m */; }; + 8F68B37533C5AC9C8588BD0449D32673 /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C8F3502771945D97327DFC8DC847853 /* MJRefresh-dummy.m */; }; + 904EC3379A9E226064CB03DC1ACA2EEA /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 2985DC50EAB19FE6D21FEB7CD1B817D5 /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 90E285AE12245BA4B513B2A266B7F834 /* UIButton+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A36C8C20C71E119EEF9B50AF64166DD4 /* UIButton+SUIAdditions.m */; }; + 91CAC2B69903F5F3D7C25A95CA77A600 /* MJPropertyType.h in Headers */ = {isa = PBXBuildFile; fileRef = EA85305CDC1ED3FE27B108DEB99A2034 /* MJPropertyType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9205037BA8C22574B33FC96C5EA829A3 /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = 6945D53B9DCCC7B09C75D5EEE938A478 /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 922ACEFE37E22A36A6F0209742B7B51A /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 90D25DD6BB7C49D98467ACA69B02036C /* MJRefreshConst.m */; }; + 9230119085130B273ECF20F076081DA1 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 6511CB57ABF435B7FBFA0F2D56F9E840 /* MJRefreshComponent.m */; }; + 932430D4A2289A39BE7C50EEAA60246A /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 527B82412EF9A89489DB6F3CA407198B /* UIScrollView+MJExtension.m */; }; + 969A30C2950225042B70124BC0FCC49D /* NSString+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C34A74804543760ADEA0EAF1FC81F94C /* NSString+SUIAdditions.m */; }; + 99D8C610BC84BE231C5D3D280F3B12AF /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 64CFAE66E907BBBE2FF26883B49C6130 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9A6AE1EF2E94AEB6912BE845583E7D57 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3880D624D1E4F92C826F39D1C82158B /* UIKit.framework */; }; + 9AC3422CB0B135DCAD6CE0AB4F7B6DED /* NSArray+SUISafeAccess.m in Sources */ = {isa = PBXBuildFile; fileRef = AAAC39C18FD31AD8514B4689C9332481 /* NSArray+SUISafeAccess.m */; }; + 9BF8D708AC9892125B0AA4E540361FF8 /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1646EB2464CDB0805FAC6B50A2547DEF /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9C44E50363E453B58A0C4C27D57C7F88 /* NSDate+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = A6E6F458B3F0EA7EC6131D07C3F08E22 /* NSDate+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9FA7910C486006F06FE1B75FE8C68D3C /* UIImage+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F2F5B0EA0F20C922774D396EB5A720F /* UIImage+SUIAdditions.m */; }; + A0AD231A11A54F59BC8D486946D2928B /* MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C9FFC7E2EB5094AF57216971637B13 /* MJProperty.m */; }; + A24798553A221FE8AE552EA3E476292A /* NSDictionary+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A36120AF1D091FB49A3C473DC9FAB62 /* NSDictionary+SUIAdditions.m */; }; + A350C5704A1F233DAD830E081E00F8C1 /* FMDatabaseAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4C730DB570BFA1137E286B65838466 /* FMDatabaseAdditions.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + A412A32FBD8792EE58E1F0965492F0BA /* Pods-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 272643F56613CA0D336AE3DBF19DC404 /* Pods-dummy.m */; }; + A44AF130E4C5313CD193D9BF68853026 /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 84AECDBA544FF6804C85DE2F792C2351 /* MASViewAttribute.m */; }; + A5CCE12C36AC552DD53BA1E9E904ECE3 /* SUITableHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = C252CB228FB298444B468C555B0E40D8 /* SUITableHelper.m */; }; + A60A4B3054017180C0B6C7B24E651E0A /* MJPropertyKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 154E803723C473CA91217C773CCD78C8 /* MJPropertyKey.m */; }; + A7D31BD1F3AD4ED4612467FAD332F388 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = BDF6BBCF8945B17E088F889E737F7B8F /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A7F5696E114D72A5868E2D7925E879A7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62D17CB1CE0E78ACF219FD2FC9927222 /* Foundation.framework */; }; + A89B33DBDA4E99005E1F1BDB95A296CC /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = ED0DE82EE46DBB7BC472C1BC398D24D0 /* MJRefreshBackFooter.m */; }; + A8FC6A53F6C1CB4DEFD972664E1AF3B1 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E69656B41F22382A19542C0FB8450771 /* AFNetworking-dummy.m */; }; + ACE9C1A6E8D5121C6C5F907C7A9CFCC9 /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = BBC80239CA3120B87B34606264256A59 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AD0CBF1D68B4D107B089E15DD571D9FA /* UITableView+FDIndexPathHeightCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D3E179233490749A35E839D1D6A0340E /* UITableView+FDIndexPathHeightCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AD359A96DD4AA2C962E50A5CD5524F54 /* UIWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 13EFE309CDE77505F4F0CE1E80780B3F /* UIWebView+AFNetworking.m */; }; + ADB5B298197DCD605E98B3000AAB3918 /* UITableView+SUIHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = FF13891BC8BF32792849908AFA8BCB58 /* UITableView+SUIHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AF62B956405F7734F5A9B8F3FD4B1B96 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D5B2D028EBC7110C561F0E8D8F224FD /* ViewController+MASAdditions.m */; }; + B0BE398350F83A7B0102C3BBAFC51428 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 73A5CEB9750AD2058FDDB3316960F700 /* UIImageView+AFNetworking.m */; }; + B14FB8D45B28E60854FCFBAE5F912155 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3880D624D1E4F92C826F39D1C82158B /* UIKit.framework */; }; + B19CA8B0FD349AEAD2D5A1C6B46AF47D /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FDEB158778A13DC31F77FBE45533089 /* MJRefreshNormalHeader.m */; }; + B2B7C90BA9C4DBD9851C75AC801B0E8E /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D2E8E9CA9DCF510E644D660EFCC40D9F /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B372436C0272E7F46CBA19CAF8740447 /* UIView+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 63B278DFDEC482AE58E326D8CA7D4E22 /* UIView+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B418C9BDCF8C6BAC2E3942F157BB6D4C /* FMDatabaseAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B62596E7666D9F7D65A8C64A10093C77 /* FMDatabaseAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B51AA1F7701DCDBCC9B88A15320F9C2C /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EB50C70E4153FC354C90617AC561A77 /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5A8A60810B99D763E3A3F076F63509D /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8627E5244705445780B7AA542A2E2176 /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5CF67F7870BAB70A76E57479B706B42 /* UIWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 8082BB34546F19918556767A442D909F /* UIWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B9B44F1EDC36C095666CA0AE98371C09 /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 954FD526C33AC86AACD46E86C16C4E3F /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B9C36A50069E553B4B8538E291864BB5 /* NSObject+MJKeyValue.m in Sources */ = {isa = PBXBuildFile; fileRef = C4AC71F55A237D8905B49616722020F4 /* NSObject+MJKeyValue.m */; }; + BBD0FC347576496C58447E19F4AF7E64 /* NSObject+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 792BFF12C1BA0861297C29A5FE6D9B02 /* NSObject+SUIAdditions.m */; }; + BCD4B362C6194513150915437754E2D4 /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = EE9492200C6439CEE56477C570CC3586 /* MASCompositeConstraint.m */; }; + BDD210D7537DD15CFE59AE126005E5F8 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 645B51B1B2A219CD85F322B5A78D7105 /* MASLayoutConstraint.m */; }; + BE024118D329F8F566BD1811A1DC16CB /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C6D62E94476C288AC2BC493EEE578D5 /* MASConstraint.m */; }; + C16442D25F534C602780E6FD44C6A698 /* NSObject+MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 36AE32785D8D0B475021F7CA68D89740 /* NSObject+MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C1B65C3D849FEE4FB5298A8135A765DA /* UIImage+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BD2B2713CD524700B1D7DDDF49EAD1C /* UIImage+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C1DAA515EEE44666FC7C3CCAB35036F9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62D17CB1CE0E78ACF219FD2FC9927222 /* Foundation.framework */; }; + C2201E34603B014192F0967473518496 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 46BA6DC99CD9001C65D4B6A637F6F30E /* AFURLResponseSerialization.m */; }; + C37D2F9A62232C28DAF2E51CF1364F21 /* MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = B2BF5301CC76AC4723749EE29F2D86E8 /* MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C3CC13B67D505233B2389DFECFB20E45 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62D17CB1CE0E78ACF219FD2FC9927222 /* Foundation.framework */; }; + C66A994F14BA080776BB3E2AD8CC55B4 /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = AA4CCDCE7E63385692CFCF9DAE6DD2CC /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C67F32FF951D1979EF0E6B4ADED5E8A8 /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = BDCC350E982DBEC5987DDF7A741D9982 /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C6EE194D232E9FE87097C0F1DF91B9FA /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BE7A201659B1BD889539D50D42A564 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CA027706DD6805766F1F4EC548E72440 /* FMDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FF827AFEAAE10B02CAB219A7762DEC /* FMDatabase.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + CA1EB1DB5C89E63A19ED05C55E35AF23 /* NSObject+MJClass.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AB634F1D7879795514432EC106DA31A /* NSObject+MJClass.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CADA1B444272562B32CF16FB615D96BB /* UIControl+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA1C48832FB5200B88A01C798CB05C1 /* UIControl+SUIAdditions.m */; }; + CB84C5686E993AF4B35F95BE3F89965F /* UITableViewCell+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DD18D95D1680EBA95CB0EE438F5746 /* UITableViewCell+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CC70F0C352D03FF8C1308BED274F7D9F /* UITableView+FDTemplateLayoutCell-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 23759BAA9328DE107B5D2F7AF611D683 /* UITableView+FDTemplateLayoutCell-dummy.m */; }; + CD4CF5F1389281BCE40DF30AD1945D03 /* NSObject+MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 11D0665FA317393D393F93BC2312516B /* NSObject+MJProperty.m */; }; + CDA4DB994BAC351F4CD71EC283055E57 /* NSObject+MJCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E651D45BF73319187C397F0322D79B9 /* NSObject+MJCoding.m */; }; + CE8965366A3B07A6C0615055A31B8B83 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 89A85B9748991CC8E0D07259A71B2E67 /* SystemConfiguration.framework */; }; + D054768D94E678B8A0D7F2AB4FF45E54 /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 774FDE0A53FB938690A2E271AB0A46C2 /* MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0C5FF5485EAA2CDA03E9796B407697A /* FMDatabaseQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = F3DFBB69D0A0127D9C5044F27367BC3D /* FMDatabaseQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0D5FFE53407F16C9CD3D0ECF43ACE93 /* FMDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D349450B4C97916FC25720CBD7AF22C /* FMDatabase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D1D1F11808DACCA88C55636F85A58FD8 /* NSString+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 37501A6789CA261D8A28155F8559F09C /* NSString+MJExtension.m */; }; + D31FEE51AF4BE2A6CC059F80B983CD3B /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B0D432FC8C608847696424029EE6B17 /* AFImageDownloader.m */; }; + D3D9F12613E23AD64C1FA5F7081A3668 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 100ABAF7A3AED7337F3FBD90ED62C3AD /* NSLayoutConstraint+MASDebugAdditions.m */; }; + D42CD13C478715BC1F158C7093C27501 /* NSIndexPath+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EC4B097ED20895E34630BFF56165EB3 /* NSIndexPath+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D595C17C62C58E80EEC6F9EBCCF4050A /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = AD28C3909B847C7560C26722D8A6DE0B /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D6DFE0B3DDDC95671871F5DDA41BF1B6 /* SUITool+OpenURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EC3E4E0E2C6F59025BD28BBEEBD2284 /* SUITool+OpenURL.m */; }; + D727F0260D991A47AC1BDCF9B1CA6FB6 /* SUITool+Camera.m in Sources */ = {isa = PBXBuildFile; fileRef = 68D274771711B0F1FB35E2283B5A84FB /* SUITool+Camera.m */; }; + DA8BAA5F8E5949555BC8B94E309E23D8 /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E7688D1420CF3CC95D9756EFEBA3663 /* MJRefreshAutoGifFooter.m */; }; + DAF1CE8756287B465E0DE48A6133FB79 /* MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = D2F356DCC22D0BA61E1B98D1B0714676 /* MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DBEF28E06243CA47D7EA6074214B609B /* SUITool+OpenURL.h in Headers */ = {isa = PBXBuildFile; fileRef = E9C91AB3C81D2F5B13689C1D8FC67751 /* SUITool+OpenURL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DD1F717B0527C71229B3339324E35E55 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D7FD999A9265707D3F56E8485CAA43A /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DEFA3504695E9DFDE1177DAB22884470 /* FMResultSet.m in Sources */ = {isa = PBXBuildFile; fileRef = CDDE238D34609C0EC7E6B44BF198D54F /* FMResultSet.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + DFDAC8245626953C4BCE5A2DA6BE2A5B /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5B0254402E6886EEA9C80C8943BE69 /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E03C2ABF49D0B5DDAD9FC1438005B28B /* NSNumber+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B946220F60EA46C69D0AE9980FC996 /* NSNumber+SUIAdditions.m */; }; + E0529B7C623EB5752662665A05DAAFBA /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 174D1FE9BD13E5A5C072725E113C5F3B /* MJRefreshAutoNormalFooter.m */; }; + E212C2AA95E8F6EFB69A5F1455F291F8 /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D28CDF2F4217E4293E105CA02BA4161 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4D474A0EE428A14440F36FB3E89E66A /* UITableView+FDTemplateLayoutCellDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = FCAC3FF904364BD9876AFD7452331A3F /* UITableView+FDTemplateLayoutCellDebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E58FA05A5F6099152712EBBF6C17AF3A /* NSString+SUICrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = E996FE6F11C6ED0A2BEB8BE2523AC7C1 /* NSString+SUICrypto.m */; }; + E5D52102945E4B3F9375EA248F8AA101 /* SUITableHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 80A8E587AFA485B9B2E9F9E25588628B /* SUITableHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E6B49FBCE3957DB67F691ACCC4CAF4BE /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 10EE05DBE42A6614DA79D1BEB66A2C92 /* MASViewConstraint.m */; }; + E83767E6CB8DDA3D2C8A48ACD42DEABD /* UITextView+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = F4490E8F89CB5DE90291AF339DC66B26 /* UITextView+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E89187C8BF25AC8BC4B636627830ADA5 /* SUIUtils-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FC25865C412D2AC4A11E9235B60F033E /* SUIUtils-dummy.m */; }; + E9AA8D810B87E3C7FCA80335EBCB1EAE /* UILabel+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B148ABA74C28EEA1A261BC903C741F99 /* UILabel+SUIAdditions.m */; }; + EA03AF12E0E3E8ADC50DA70F2C5BF39E /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 833066B35D867F946A59CA7E70FE89C0 /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EA6D33E42EC3AB57792D60A63B04CF5E /* SUITool+Delay.m in Sources */ = {isa = PBXBuildFile; fileRef = 12B0C6E9CB7E0E689C426E2979D999F8 /* SUITool+Delay.m */; }; + EB02AEF303313F801392DE8D90AFF0F7 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = D3820E233CF00BC12358A6933533641E /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC6CCC98505D2067BC98B4E6223C9DF8 /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = B38EC8FB2195961531DE676FF614A408 /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ED69D9B5A342FE9BD3F170D5CDDEC948 /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B650FB5CDA18AB3B677E9E07DB497F6 /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EFCDCCD66269CA908494B11E024DC736 /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5949775C625EA1EEE420A09C6C6A52BC /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F0D01ED940723EED434E4EF4BCFF53F9 /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 128DF3E39AE465015605CC157F9F7011 /* MJRefreshBackNormalFooter.m */; }; + F0E863063D42CFE489B16EFC538BEA87 /* NSArray+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A043C65981192AACD19CCE749C608CA7 /* NSArray+SUIAdditions.m */; }; + F3774B1449FCE5B3CA3E1B336E11D284 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6346978FC12DB5E561C46AB25E4C7497 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F432A374A040EBAB69C9EABC6C4D699A /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EC0084E645211B1D9723F14DD4F9B01 /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F4B95D2102DC0F66F0106526F1746467 /* UIStoryboardSegue+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = BB061FB031CFB2B3AB6336DB98CAF8C8 /* UIStoryboardSegue+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F58455418F190BC37D1FD19EA3EA5B01 /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = D00AF97A9E3A5EC9DE110424564294E7 /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6DD04DA58C8B7EDA5869C86ED71E46A /* NSDictionary+SUISafeAccess.m in Sources */ = {isa = PBXBuildFile; fileRef = B2BA97EAB4CB18D3B4D069880B7EB934 /* NSDictionary+SUISafeAccess.m */; }; + F7B852F0917A6D6540DAB54F736D681B /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 2981C4EA74A303ACE65E68397D49FEA8 /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F84DD5EF58B33249C72BE91B68F2C5F4 /* UITableView+FDTemplateLayoutCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 42F0EA4C47E83F498AAD00AB96E4CE46 /* UITableView+FDTemplateLayoutCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F94C165438014E7DF781E8657D7F3B76 /* UITextView+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 747DF9AEC1E2C683A56D58DE89297319 /* UITextView+SUIAdditions.m */; }; + F977B243321331B58666E9284634101A /* FMResultSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA4FB66E799732C75C8F75519433E47 /* FMResultSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FBE6852B31DE6199395A3ECB4C5AEEFF /* NSData+SUIAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B3546DDEDC9665FCD9C8E2E1AA3FBE /* NSData+SUIAdditions.m */; }; + FC20389F66FC91E1BDA181376C5C6DF2 /* SUIUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F3FE00B09F558786AF53870B35C20AA /* SUIUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FCDDD3BC67EA205C87238A2A87D5C36C /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 955D7AFD3C6535339061A6C9BE52176B /* AFURLSessionManager.m */; }; + FD39EBE3398E1A99965AC003B273450D /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AD2E16EE8AA02A8628E7EE00F2BF77D5 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FDDD9274E9C6431E0ED4E4AA86B301CE /* NSNumber+SUIAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C374AC3B16E341D6757B40B6BE96BD9 /* NSNumber+SUIAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FDF30F97BDF167F0B956DED0F2C8DA69 /* MJExtensionConst.m in Sources */ = {isa = PBXBuildFile; fileRef = C08C85578AF7228076E0E258F3C3B06B /* MJExtensionConst.m */; }; + FF0D7245D73F1E9CE456F76EDD5738E0 /* UITableView+FDKeyedHeightCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 82EE865D6CC76507007715BBE2532278 /* UITableView+FDKeyedHeightCache.m */; }; + FF1FEB28260D52C222E2F87FBBC05277 /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = EE3BFAD28E86AC9809CA7C2CBFC911E5 /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FF682E8B083BAEBBDF38C52D89D45E37 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = C818A73C3DB66BBBE8622D14AC94F464 /* MASUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0D3291603B9155DA3C2D6B8D41B817C5 /* PBXContainerItemProxy */ = { + 1BCE548D6B52D755E9C6931EAAC5A925 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 9EAB3E42EF957541E6C3C76D35FD008E; - remoteInfo = MJExtension; - }; - 46F894FA8C1C2725FE27D4B3D499D3D3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 928353533005A4198EBDA5B700D37B64; - remoteInfo = AFNetworking; + remoteGlobalIDString = EBF5F1CD8EF09DCCBB9FD0686ECFB511; + remoteInfo = "UITableView+FDTemplateLayoutCell"; }; - 5E083D92B113C00F6C4196944205AA7A /* PBXContainerItemProxy */ = { + 3BC9369FB258EF785F350CE94F446E86 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = 53480ED0BE09FF49E34B1702D485CAAB; remoteInfo = Masonry; }; - 6AD2A9C27EB83731D3B0F10E4AFFCCF9 /* PBXContainerItemProxy */ = { + 6D1546C85298D57A00201AA2C82F3C16 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = 928353533005A4198EBDA5B700D37B64; remoteInfo = AFNetworking; }; - 7207A925E0E2E2261D16E504D3A2A7AE /* PBXContainerItemProxy */ = { + 712DA5298E19DBB26D6DAE505214597E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = 8F74D9EA91F4C43190670066BAC37D44; remoteInfo = MJRefresh; }; - 9C84BEDF9B63A1F1132B113230F2A769 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 927A7C8415E965039D8FC3D5517E431A; - remoteInfo = "UITableView+FDTemplateLayoutCell"; - }; - B25EB65B24D40F915E5F51EAA9FE0125 /* PBXContainerItemProxy */ = { + 8BD034250FB04C068F57018FA8271020 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 927A7C8415E965039D8FC3D5517E431A; - remoteInfo = "UITableView+FDTemplateLayoutCell"; + remoteGlobalIDString = 9EAB3E42EF957541E6C3C76D35FD008E; + remoteInfo = MJExtension; }; - BBEDEA938B8139418B6CAC03A2CD17B2 /* PBXContainerItemProxy */ = { + A0D47E8E662C16FA6B0D418C10BC5889 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 694FBCC94CD4312B41BA76B6DA74EE8F; + remoteGlobalIDString = 302F3E8524A04C89AC13E950D661566F; remoteInfo = SUIUtils; }; - CD9C77E46BE4CDF60AB6F0834D983CD3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 786AB65C802E77BD8A20249245B255A5; - remoteInfo = SUIMVVMStore; - }; - D307E83CDFF6E00CA74831331118BD05 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = CE848D5E1D43BFE24B77A00D5AE5F6EC; - remoteInfo = SUIMVVMNetwork; - }; - D6E39688410A70F15651958DF496A5DC /* PBXContainerItemProxy */ = { + A70AE1C789142E72951C56649DFA68BD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 9F12FB4A63E20F601CFB2E64A65B57C1; - remoteInfo = FMDB; + remoteGlobalIDString = EBF5F1CD8EF09DCCBB9FD0686ECFB511; + remoteInfo = "UITableView+FDTemplateLayoutCell"; }; - D9FC0E6552C16E15FE7748842DB6B348 /* PBXContainerItemProxy */ = { + DE018CB51F015619A8FAE6A5F05D7A27 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = 9F12FB4A63E20F601CFB2E64A65B57C1; remoteInfo = FMDB; }; - F493AF057A523ED87E9EEEBAA45F31AB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 786AB65C802E77BD8A20249245B255A5; - remoteInfo = SUIMVVMStore; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0742744BCAFA8EE6783CCEFCEA510193 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; - 074F90D65D3059B8D5047408A8D1BCF8 /* SUITool+Camera.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SUITool+Camera.h"; path = "SUIUtils/Tool/SUITool+Camera.h"; sourceTree = ""; }; - 0797B901B0C68DF5BD8B8DE81FC2C309 /* SUIMVVMStore.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SUIMVVMStore.xcconfig; sourceTree = ""; }; - 0829AD4965A7AD795CB77E98A1D909CC /* NSObject+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+SUIAdditions.h"; path = "SUIUtils/Foundation/NSObject+SUIAdditions.h"; sourceTree = ""; }; - 084B10BA10224CA99EA0CB8C0F1B877A /* NSString+SUICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+SUICrypto.h"; path = "SUIUtils/Foundation/NSString+SUICrypto.h"; sourceTree = ""; }; - 099F2DBEAB70BCCF1AE52A13DAC016F8 /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = ""; }; - 0A0F204F29D1849564338EEB1628FC7E /* NSDate+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDate+SUIAdditions.h"; path = "SUIUtils/Foundation/NSDate+SUIAdditions.h"; sourceTree = ""; }; - 0D2E113C4CF83339F9CEE08FC4C95F32 /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; - 0E7527328C00EF3D9965A94ACFAC4783 /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = ""; }; - 105F86BE270B468A75E040EC10CE4013 /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; - 1078A47C6D694BB9CCA1A029F31732E0 /* libMasonry.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMasonry.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 00D58A4B1C81F4AF9C06E29625F38F1F /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; + 0170EB7E8B97588555A21D4CB80A1659 /* NSArray+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+SUIAdditions.h"; path = "SUIUtils/Foundation/NSArray+SUIAdditions.h"; sourceTree = ""; }; + 01A6D9B9FB85E45B87F3FECFE06246AD /* NSString+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+MJExtension.h"; path = "MJExtension/NSString+MJExtension.h"; sourceTree = ""; }; + 05CFB9729490DF96FA7E08CC45C93132 /* UIImage+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+SUIAdditions.h"; path = "SUIUtils/UIKit/UIImage+SUIAdditions.h"; sourceTree = ""; }; + 07B3546DDEDC9665FCD9C8E2E1AA3FBE /* NSData+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+SUIAdditions.m"; path = "SUIUtils/Foundation/NSData+SUIAdditions.m"; sourceTree = ""; }; + 08131B0176B146FE74E21107437A73AC /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; + 0AC6109DE3193204D0DC8923A8D71F87 /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = ""; }; + 0D28CDF2F4217E4293E105CA02BA4161 /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; + 0E4650F27E684E295C90BD8855D59503 /* UITableView+FDTemplateLayoutCell-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UITableView+FDTemplateLayoutCell-prefix.pch"; sourceTree = ""; }; + 0E7688D1420CF3CC95D9756EFEBA3663 /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = ""; }; + 0FA4FB66E799732C75C8F75519433E47 /* FMResultSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMResultSet.h; path = src/fmdb/FMResultSet.h; sourceTree = ""; }; + 100ABAF7A3AED7337F3FBD90ED62C3AD /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; 10834806BD7B412BC24F347361FA2C8E /* Pods-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-acknowledgements.plist"; sourceTree = ""; }; - 12BD55E81EEFA074877E19D8C63C7490 /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = ""; }; - 1356790A7E189F390AA23B35FC99A243 /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = ""; }; - 14206B350069E0664CCF2DC97D1265BD /* UITableView+FDTemplateLayoutCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+FDTemplateLayoutCell.h"; path = "Classes/UITableView+FDTemplateLayoutCell.h"; sourceTree = ""; }; - 143087EE7C08F8932D0242F74BA37501 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 1459C3BCB729100AACC07DC6511B5512 /* NSString+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+SUIAdditions.m"; path = "SUIUtils/Foundation/NSString+SUIAdditions.m"; sourceTree = ""; }; - 172F7B55FACC67F63F7C183110DFBCF9 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; - 196D3F6A77CC2F8944FCD5B0E0240988 /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; - 19E9B9FC2AEC6D3B4052565C46758BFE /* NSObject+MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJProperty.m"; path = "MJExtension/NSObject+MJProperty.m"; sourceTree = ""; }; - 1A6AD16D168F70207C9D34A034754FAC /* UIViewController+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+SUIAdditions.m"; path = "SUIUtils/UIKit/UIViewController+SUIAdditions.m"; sourceTree = ""; }; - 1D0CEA9BC23007D731A9973625E0147D /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = ""; }; - 1E1A54374903ADE1D0D8180CE57DD4A9 /* NSArray+SUISafeAccess.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+SUISafeAccess.m"; path = "SUIUtils/Foundation/NSArray+SUISafeAccess.m"; sourceTree = ""; }; - 1F9D7C599886FDE939C0A09D27DCF467 /* UIImage+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+SUIAdditions.h"; path = "SUIUtils/UIKit/UIImage+SUIAdditions.h"; sourceTree = ""; }; - 205E19B5BA07CCEE654F8E6866827F10 /* MJExtensionConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtensionConst.h; path = MJExtension/MJExtensionConst.h; sourceTree = ""; }; - 21687D7F6C320F47C9B017CEBC727FB7 /* SMKSingleton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SMKSingleton.h; path = SUIMVVMNetwork/SUIMVVMNetwork/SMKSingleton.h; sourceTree = ""; }; - 22596A6054104D590833ECB92A35D8BA /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = ""; }; - 22E045358874AE5D9F32F6FA0D6BCA06 /* NSDictionary+SUISafeAccess.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+SUISafeAccess.h"; path = "SUIUtils/Foundation/NSDictionary+SUISafeAccess.h"; sourceTree = ""; }; - 22FCFD75D7B6369E6FB70FE41AC86C10 /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; - 239E2333E0BDF5C4669B5F4FBB549FB6 /* SUITool+OpenURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SUITool+OpenURL.m"; path = "SUIUtils/Tool/SUITool+OpenURL.m"; sourceTree = ""; }; - 23B656232A54290A8F00D0520A2C8C2D /* MJExtension-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-prefix.pch"; sourceTree = ""; }; - 23CC52C6F84114294E5A2709CB63E4FF /* SMKStorePublic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SMKStorePublic.h; path = SUIMVVMStore/SMKStorePublic.h; sourceTree = ""; }; - 24D0D54CBEF4791C19FA202F252961D2 /* NSIndexPath+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSIndexPath+SUIAdditions.h"; path = "SUIUtils/Foundation/NSIndexPath+SUIAdditions.h"; sourceTree = ""; }; - 258C65375275724FA25F6F7DD10C4C5B /* FMDB.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDB.h; path = src/fmdb/FMDB.h; sourceTree = ""; }; - 25F89F70FA69F90324FF88585B1EDDE4 /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; + 10EE05DBE42A6614DA79D1BEB66A2C92 /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; + 11AD10BAF765E6340CF9B6184787E66B /* SUIMacro.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUIMacro.h; path = SUIUtils/Tool/SUIMacro.h; sourceTree = ""; }; + 11D0665FA317393D393F93BC2312516B /* NSObject+MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJProperty.m"; path = "MJExtension/NSObject+MJProperty.m"; sourceTree = ""; }; + 128AD5011BFADA37167C5F6269BB28A6 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + 128DF3E39AE465015605CC157F9F7011 /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = ""; }; + 12B0C6E9CB7E0E689C426E2979D999F8 /* SUITool+Delay.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SUITool+Delay.m"; path = "SUIUtils/Tool/SUITool+Delay.m"; sourceTree = ""; }; + 12FE78F4A6AC4AA4FD9B328A60EC96EE /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = ""; }; + 13EFE309CDE77505F4F0CE1E80780B3F /* UIWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIWebView+AFNetworking.m"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.m"; sourceTree = ""; }; + 146C52C1F8701B0BCEE6CC545372C65F /* MJPropertyKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyKey.h; path = MJExtension/MJPropertyKey.h; sourceTree = ""; }; + 154E803723C473CA91217C773CCD78C8 /* MJPropertyKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyKey.m; path = MJExtension/MJPropertyKey.m; sourceTree = ""; }; + 1646EB2464CDB0805FAC6B50A2547DEF /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = ""; }; + 16BBAE6DF6EA6512C5DA45FF67BAEFA7 /* AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.xcconfig; sourceTree = ""; }; + 174D1FE9BD13E5A5C072725E113C5F3B /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = ""; }; + 1AB957B1EFADA88B53B579276A5D79F9 /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = ""; }; + 1B05901F997BDE533407C8246D826AB4 /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = ""; }; + 1B650FB5CDA18AB3B677E9E07DB497F6 /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; + 1C3ADEDF7BCCDBDA366BDEE15B96F3C8 /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; + 1C8F3502771945D97327DFC8DC847853 /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = ""; }; + 1E5B0254402E6886EEA9C80C8943BE69 /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; + 1EC2A8E52EA723BE035616AA81660D3B /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; + 21BFA2DF5DB3D2516B7A876C45049A00 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; + 22B36B3A2EDBC968348123A2162FB922 /* NSObject+MJCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJCoding.h"; path = "MJExtension/NSObject+MJCoding.h"; sourceTree = ""; }; + 234878F745023CFFA813A103AFA91BAD /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; + 23759BAA9328DE107B5D2F7AF611D683 /* UITableView+FDTemplateLayoutCell-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UITableView+FDTemplateLayoutCell-dummy.m"; sourceTree = ""; }; + 24EB8E1BC934BFAD0BC66E55AD2D5F13 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; + 26EF938AC799C0D606C7F4ADB4E13D7C /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = ""; }; 272643F56613CA0D336AE3DBF19DC404 /* Pods-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-dummy.m"; sourceTree = ""; }; - 2777465211FE64C414CD700B00770EAC /* UIImage+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+AFNetworking.h"; path = "UIKit+AFNetworking/UIImage+AFNetworking.h"; sourceTree = ""; }; - 27A40243CA1737A29F05552C8794FD0A /* UITextField+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextField+SUIAdditions.h"; path = "SUIUtils/UIKit/UITextField+SUIAdditions.h"; sourceTree = ""; }; - 2909D0B94B21F1FE68D7799C988467E6 /* SMKNetworkPublic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SMKNetworkPublic.h; path = SUIMVVMNetwork/SMKNetworkPublic.h; sourceTree = ""; }; - 2A652D1EC525C8447D4325C42D8D4A78 /* SUIUtils-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SUIUtils-prefix.pch"; sourceTree = ""; }; - 2A6C5F3E9EB26D1E5C33444190211353 /* libUITableView+FDTemplateLayoutCell.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libUITableView+FDTemplateLayoutCell.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 2ACBD701C4E26F6B8E3EDD632C87D24F /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; - 2B30D5291A3086ECA54C2278B024C219 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; - 2C4787307285D68350674D5E573702CD /* SMKDataService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SMKDataService.m; path = SUIMVVMNetwork/SUIMVVMNetwork/SMKDataService.m; sourceTree = ""; }; - 2FF2DB5E6B54E61B27C40DFA79934CD3 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; - 3185C56893BCA988650AA78810A09536 /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; - 326913FF2522C04BFF71622FB2468488 /* UITableViewCell+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableViewCell+SUIAdditions.h"; path = "SUIUtils/UIKit/UITableViewCell+SUIAdditions.h"; sourceTree = ""; }; - 34B3478207A0C925375FF3CD62AE31AE /* NSObject+MJKeyValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJKeyValue.m"; path = "MJExtension/NSObject+MJKeyValue.m"; sourceTree = ""; }; - 35D4E01881C47E795F53AC7E92BEA1EA /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; - 3664C8ED47E6ECC65DB53A5BB4F4C4AD /* UITableView+FDTemplateLayoutCell.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "UITableView+FDTemplateLayoutCell.xcconfig"; sourceTree = ""; }; + 27FD7FE9D27FA5303FDCE45E79560EBF /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; + 297CD5762F6DFCFDC679B16CA9E4F764 /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; + 2981C4EA74A303ACE65E68397D49FEA8 /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = ""; }; + 2985DC50EAB19FE6D21FEB7CD1B817D5 /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = ""; }; + 2989F03D5CC816DAD1E9E0414A3F8E8F /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; + 2C2E80FB44796910980A89F36738048B /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; + 2C98530EBD2516774211F8604D4BBFD2 /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = ""; }; + 3099C4A3494968896EEE4827E1FA8E13 /* NSArray+SUISafeAccess.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+SUISafeAccess.h"; path = "SUIUtils/Foundation/NSArray+SUISafeAccess.h"; sourceTree = ""; }; + 30B946220F60EA46C69D0AE9980FC996 /* NSNumber+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNumber+SUIAdditions.m"; path = "SUIUtils/Foundation/NSNumber+SUIAdditions.m"; sourceTree = ""; }; + 32FF827AFEAAE10B02CAB219A7762DEC /* FMDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabase.m; path = src/fmdb/FMDatabase.m; sourceTree = ""; }; + 3414F4C550FA431170325B86F4DE82C8 /* MJFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJFoundation.h; path = MJExtension/MJFoundation.h; sourceTree = ""; }; + 35FBBC21D25A678957D981A4E56B9D85 /* UINavigationController+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UINavigationController+SUIAdditions.m"; path = "SUIUtils/UIKit/UINavigationController+SUIAdditions.m"; sourceTree = ""; }; + 36602C6E2F7F1BD32E7205A3EEB7E444 /* SUITool+FileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SUITool+FileManager.m"; path = "SUIUtils/Tool/SUITool+FileManager.m"; sourceTree = ""; }; + 366E9F7825323F79B15713376F21B3F0 /* MJFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJFoundation.m; path = MJExtension/MJFoundation.m; sourceTree = ""; }; + 36AE32785D8D0B475021F7CA68D89740 /* NSObject+MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJProperty.h"; path = "MJExtension/NSObject+MJProperty.h"; sourceTree = ""; }; + 36BAD56C58FAE5092512CC8003A1EE52 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; + 37501A6789CA261D8A28155F8559F09C /* NSString+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+MJExtension.m"; path = "MJExtension/NSString+MJExtension.m"; sourceTree = ""; }; + 37B6D2457C0E379732EB073179CA4922 /* libSUIUtils.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSUIUtils.a; sourceTree = BUILT_PRODUCTS_DIR; }; 37DB56D75062CC75FCB0966E1C6E8A8E /* Pods-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-acknowledgements.markdown"; sourceTree = ""; }; - 392BEFF04768FB68D06A1631D268A5A0 /* libAFNetworking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAFNetworking.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 393D9178B063973629F1D237657FD1A1 /* UIWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIWebView+AFNetworking.m"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.m"; sourceTree = ""; }; - 3AD21E9D043BC8BC8F8731ED4B4B901E /* UILabel+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+SUIAdditions.h"; path = "SUIUtils/UIKit/UILabel+SUIAdditions.h"; sourceTree = ""; }; - 3CA09D509ED5C3CE048090DC68D0FB60 /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; - 3E1339508316363FEF5BAFBE18B9AAD5 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; - 3E5049EB9380E01D36CC2B4C562E4E52 /* NSObject+MJClass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJClass.h"; path = "MJExtension/NSObject+MJClass.h"; sourceTree = ""; }; - 3E52C5C1E169F6534FB47D920576E12E /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 3EC75283423A9956DB985007269B05E4 /* FMDB-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FMDB-dummy.m"; sourceTree = ""; }; - 3F55CD144C9B8F055A690A714235D1A7 /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = ""; }; - 400F4EFADF28ED5C3876C868221C91BE /* NSDictionary+SUISafeAccess.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+SUISafeAccess.m"; path = "SUIUtils/Foundation/NSDictionary+SUISafeAccess.m"; sourceTree = ""; }; - 40616BE86694452804F1FB3E5D62A5AD /* NSObject+MJCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJCoding.m"; path = "MJExtension/NSObject+MJCoding.m"; sourceTree = ""; }; - 414B706CA4AE49D37D9EE5011DF868C6 /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = ""; }; - 4245AAAD01A988A69824F26E18A2551E /* MJFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJFoundation.m; path = MJExtension/MJFoundation.m; sourceTree = ""; }; - 44C44A8F46E615F6A1F5DC91314EEC94 /* UITextField+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextField+SUIAdditions.m"; path = "SUIUtils/UIKit/UITextField+SUIAdditions.m"; sourceTree = ""; }; - 45877DD7EF3684BB4D18151E52F63F40 /* SUIUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUIUtils.h; path = SUIUtils/SUIUtils.h; sourceTree = ""; }; - 45E39B518A44FB352550CBF7F20E4E95 /* NSString+SUICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+SUICrypto.m"; path = "SUIUtils/Foundation/NSString+SUICrypto.m"; sourceTree = ""; }; - 46A45C99967416595E861C0F26D2E713 /* MJPropertyKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyKey.m; path = MJExtension/MJPropertyKey.m; sourceTree = ""; }; - 470B3C1867212BE94D66D940E6B6DBBC /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = ""; }; - 475110B5B36843BC6E17F59E7BA31EE8 /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; - 477CF0FBC6BE2288CCCEA8156E364FFE /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; - 486A1018F6E527411363F7CF672132F1 /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = ""; }; - 4964B2B6A7E55E69F740DF4D08557ED0 /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; - 4C2FABC300313B446B8A7BA09C3A5488 /* NSString+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+SUIAdditions.h"; path = "SUIUtils/Foundation/NSString+SUIAdditions.h"; sourceTree = ""; }; - 4CFCED97A4E4862F7062640EFD288AEF /* UIWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIWebView+AFNetworking.h"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.h"; sourceTree = ""; }; - 4D550B2FC901BE85A06F67A2B20B683E /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; + 3BBCCBED0A07ABAC6418845CD175DFDE /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; + 3C6D62E94476C288AC2BC493EEE578D5 /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; + 3CD547F0425C53067BF8C0730657D51E /* NSIndexPath+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSIndexPath+SUIAdditions.m"; path = "SUIUtils/Foundation/NSIndexPath+SUIAdditions.m"; sourceTree = ""; }; + 3CEC3489B2F200CCDC511865114BC2A8 /* NSData+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+SUIAdditions.h"; path = "SUIUtils/Foundation/NSData+SUIAdditions.h"; sourceTree = ""; }; + 3D349450B4C97916FC25720CBD7AF22C /* FMDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabase.h; path = src/fmdb/FMDatabase.h; sourceTree = ""; }; + 3D7FD999A9265707D3F56E8485CAA43A /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; + 3E35BD8FFF0387F46C46E61FE0E27815 /* libFMDB.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFMDB.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 3EB50C70E4153FC354C90617AC561A77 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; + 4212E390690F97D84CEE986298302BB4 /* SUIUtils-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SUIUtils-prefix.pch"; sourceTree = ""; }; + 42F0EA4C47E83F498AAD00AB96E4CE46 /* UITableView+FDTemplateLayoutCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+FDTemplateLayoutCell.h"; path = "Classes/UITableView+FDTemplateLayoutCell.h"; sourceTree = ""; }; + 45F3DC08FD1D8CF98ACB05301D875F52 /* UIViewController+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+SUIAdditions.m"; path = "SUIUtils/UIKit/UIViewController+SUIAdditions.m"; sourceTree = ""; }; + 46695837FC54A49FA403EBD926A863A3 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + 46B70318359006A5737977B177CD39B0 /* FMDatabaseQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabaseQueue.m; path = src/fmdb/FMDatabaseQueue.m; sourceTree = ""; }; + 46BA6DC99CD9001C65D4B6A637F6F30E /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; + 48B235F1026CE20001AA1E1DCDB0B5E7 /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; + 4A5C91651E9F9ED24E134C4272C67F02 /* NSString+SUICrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+SUICrypto.h"; path = "SUIUtils/Foundation/NSString+SUICrypto.h"; sourceTree = ""; }; + 4B0D432FC8C608847696424029EE6B17 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; + 4C374AC3B16E341D6757B40B6BE96BD9 /* NSNumber+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNumber+SUIAdditions.h"; path = "SUIUtils/Foundation/NSNumber+SUIAdditions.h"; sourceTree = ""; }; + 4C4C730DB570BFA1137E286B65838466 /* FMDatabaseAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabaseAdditions.m; path = src/fmdb/FMDatabaseAdditions.m; sourceTree = ""; }; + 4D5B2D028EBC7110C561F0E8D8F224FD /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; 4E762F23EC34ED4A6FF3312D84E33A40 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.debug.xcconfig; sourceTree = ""; }; - 4ECE77B92335AC850E12E1F04681CD16 /* SUITool+OpenURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SUITool+OpenURL.h"; path = "SUIUtils/Tool/SUITool+OpenURL.h"; sourceTree = ""; }; - 4ED83818A33CB5369A4C228050A64946 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; - 4FC7341F2223027217659EA0C1BC121D /* UIScrollView+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+SUIAdditions.h"; path = "SUIUtils/UIKit/UIScrollView+SUIAdditions.h"; sourceTree = ""; }; - 50EB75C23F491560780EDA86EE2E9750 /* MJExtension.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.xcconfig; sourceTree = ""; }; - 52AC8CB9CBC4F66E52562D956AB4C9FB /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = ""; }; - 5355076C0155FE2A5CA037DC21A78888 /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = ""; }; - 55A29F20E93BF3A47E3D76A1ACFABD61 /* UILabel+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+SUIAdditions.m"; path = "SUIUtils/UIKit/UILabel+SUIAdditions.m"; sourceTree = ""; }; - 55E90F1474272922BAB1FB9E1AC82534 /* FMDB.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FMDB.xcconfig; sourceTree = ""; }; - 565B4CC718F4015B066030386FA81222 /* SUIMVVMNetwork-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SUIMVVMNetwork-prefix.pch"; sourceTree = ""; }; - 571F7285DA548BE22041ACD0267CC7DF /* YTKKeyValueStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YTKKeyValueStore.h; path = SUIMVVMStore/YTKKeyValueStore/YTKKeyValueStore.h; sourceTree = ""; }; - 58EED4A76CE924CB7802D03BF0F6C5CB /* UINavigationController+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UINavigationController+SUIAdditions.m"; path = "SUIUtils/UIKit/UINavigationController+SUIAdditions.m"; sourceTree = ""; }; - 591D3827BDE11A5F7660F6DD29DD9264 /* libSUIUtils.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSUIUtils.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 597BB9E2812AEC266E883DAB9D231DFA /* UITableView+FDKeyedHeightCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+FDKeyedHeightCache.m"; path = "Classes/UITableView+FDKeyedHeightCache.m"; sourceTree = ""; }; - 59EF264AC4BDF4CC77D669C44BA52A3C /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; - 5A01AD49F6651BDDACF4DFF1E7F3D13D /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; - 5BA60C00B7F90F1152FE9AE9D9532100 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = ""; }; - 5D8067639CAD63B7BE8AD7E46AB0BA29 /* NSObject+MJClass.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJClass.m"; path = "MJExtension/NSObject+MJClass.m"; sourceTree = ""; }; - 5DA5741DA7D754AD9BD62B0422C540D5 /* SUITool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SUITool.m; path = SUIUtils/Tool/SUITool.m; sourceTree = ""; }; - 5F4FD7841330E99C3480A34479A206AA /* SUITool+FileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SUITool+FileManager.m"; path = "SUIUtils/Tool/SUITool+FileManager.m"; sourceTree = ""; }; - 5F7A03E306D1DEBDDB37E417C28F1BB9 /* NSObject+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+SUIAdditions.m"; path = "SUIUtils/Foundation/NSObject+SUIAdditions.m"; sourceTree = ""; }; - 5FFAC2869A7D4CCB7B971B1E10AE1099 /* MJPropertyType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyType.m; path = MJExtension/MJPropertyType.m; sourceTree = ""; }; - 60028BC73F561EA3D12C50B23308AA31 /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; - 6313B6B56FDE1002848AC08C1BD6BB29 /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = ""; }; - 636A388E7E85331440A677A8A511162A /* YTKKeyValueStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YTKKeyValueStore.m; path = SUIMVVMStore/YTKKeyValueStore/YTKKeyValueStore.m; sourceTree = ""; }; - 675AD442FB68BF8EDBE94A893169796A /* SUITool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUITool.h; path = SUIUtils/Tool/SUITool.h; sourceTree = ""; }; - 67C229228E40C4153120EC09887CFFE2 /* SMKHttp.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SMKHttp.m; path = SUIMVVMNetwork/SUIMVVMNetwork/SMKHttp.m; sourceTree = ""; }; - 6906B081946E4252A9735718B7C58853 /* NSData+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+SUIAdditions.h"; path = "SUIUtils/Foundation/NSData+SUIAdditions.h"; sourceTree = ""; }; + 4EC0084E645211B1D9723F14DD4F9B01 /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = ""; }; + 4EC4B097ED20895E34630BFF56165EB3 /* NSIndexPath+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSIndexPath+SUIAdditions.h"; path = "SUIUtils/Foundation/NSIndexPath+SUIAdditions.h"; sourceTree = ""; }; + 51100B3FF1A00DC8D19DB1DAE49E2318 /* MJExtensionConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtensionConst.h; path = MJExtension/MJExtensionConst.h; sourceTree = ""; }; + 527B82412EF9A89489DB6F3CA407198B /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = ""; }; + 5480F9CD23E86F3A5EDA07228946FAEC /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = ""; }; + 551C0B4180F1504F4B64BE1060061610 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; + 564CE3E609BCF7BD4A16DD5A07C19667 /* SUITool+Delay.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SUITool+Delay.h"; path = "SUIUtils/Tool/SUITool+Delay.h"; sourceTree = ""; }; + 573741D5E106B0418B43067016E273C1 /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; + 57B71F9C3EF932B34D6ED3A7AFCAC22E /* FMDB-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FMDB-prefix.pch"; sourceTree = ""; }; + 5949775C625EA1EEE420A09C6C6A52BC /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = ""; }; + 5973A05F30D00F7B7ABF6F7578EE823A /* NSDictionary+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+SUIAdditions.h"; path = "SUIUtils/Foundation/NSDictionary+SUIAdditions.h"; sourceTree = ""; }; + 5A36120AF1D091FB49A3C473DC9FAB62 /* NSDictionary+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+SUIAdditions.m"; path = "SUIUtils/Foundation/NSDictionary+SUIAdditions.m"; sourceTree = ""; }; + 5A95BC7C0334402FA569FDE2B3D0DBAF /* NSObject+MJKeyValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJKeyValue.h"; path = "MJExtension/NSObject+MJKeyValue.h"; sourceTree = ""; }; + 5AB634F1D7879795514432EC106DA31A /* NSObject+MJClass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJClass.h"; path = "MJExtension/NSObject+MJClass.h"; sourceTree = ""; }; + 5AF4110F05F21D931BA61267A30AFB5B /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = ""; }; + 5BD6B278BBEF46C4CB5E53491EA7B614 /* FMDB.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDB.h; path = src/fmdb/FMDB.h; sourceTree = ""; }; + 5DA1C48832FB5200B88A01C798CB05C1 /* UIControl+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIControl+SUIAdditions.m"; path = "SUIUtils/UIKit/UIControl+SUIAdditions.m"; sourceTree = ""; }; + 5E791BF1025ED56E4A8BAAF1356E9154 /* NSString+SUIRegex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+SUIRegex.m"; path = "SUIUtils/Foundation/NSString+SUIRegex.m"; sourceTree = ""; }; + 5F5D2242F64B2AE2A06BEAC9549DC731 /* UITableView+FDTemplateLayoutCellDebug.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+FDTemplateLayoutCellDebug.m"; path = "Classes/UITableView+FDTemplateLayoutCellDebug.m"; sourceTree = ""; }; + 5FDEB158778A13DC31F77FBE45533089 /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = ""; }; + 603FD613E65A16D1BC2544FD6AF61CEB /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; + 60EED3980878DCC5C9AB59E7F4F11AF9 /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; + 6287B179A06F0473DB6967600DFEF9E5 /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = ""; }; + 62AEFDF5C8A3AAD8C217265D4C201E41 /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = ""; }; + 62D17CB1CE0E78ACF219FD2FC9927222 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 6346978FC12DB5E561C46AB25E4C7497 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; + 63B278DFDEC482AE58E326D8CA7D4E22 /* UIView+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+SUIAdditions.h"; path = "SUIUtils/UIKit/UIView+SUIAdditions.h"; sourceTree = ""; }; + 643F1FF72C3DB7B28497C2F887D044C0 /* SUITool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUITool.h; path = SUIUtils/Tool/SUITool.h; sourceTree = ""; }; + 645B51B1B2A219CD85F322B5A78D7105 /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; + 64CFAE66E907BBBE2FF26883B49C6130 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; + 6511CB57ABF435B7FBFA0F2D56F9E840 /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = ""; }; + 65BF0A1BAC37C2E1D7F464800403B960 /* UIStoryboardSegue+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIStoryboardSegue+SUIAdditions.m"; path = "SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.m"; sourceTree = ""; }; + 65DD18D95D1680EBA95CB0EE438F5746 /* UITableViewCell+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableViewCell+SUIAdditions.h"; path = "SUIUtils/UIKit/UITableViewCell+SUIAdditions.h"; sourceTree = ""; }; + 68B0BD32C89BBF031D54B5E8CE71412F /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; + 68D274771711B0F1FB35E2283B5A84FB /* SUITool+Camera.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SUITool+Camera.m"; path = "SUIUtils/Tool/SUITool+Camera.m"; sourceTree = ""; }; 6911BECA35E7518D864239B7E898EEF3 /* Pods-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-frameworks.sh"; sourceTree = ""; }; - 69D9BDD170979529631E1AA585692EA4 /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; - 6A9125B27E709E8E21D1B5C42E208A0D /* SUIMVVMNetwork-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SUIMVVMNetwork-dummy.m"; sourceTree = ""; }; - 6B6127B169607F03E6F34DC500F268D2 /* FMDB-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FMDB-prefix.pch"; sourceTree = ""; }; - 6FAC87B3160B76A49B6B2DBA0A500620 /* NSString+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+MJExtension.m"; path = "MJExtension/NSString+MJExtension.m"; sourceTree = ""; }; - 71354AD77DCFE0EABF899A0691CF60ED /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = ""; }; - 72B5C8351F905FE80D77B150904C433E /* SMKDataService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SMKDataService.h; path = SUIMVVMNetwork/SUIMVVMNetwork/SMKDataService.h; sourceTree = ""; }; - 72F71C18C1470AB10885E2C81142B333 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 73BCAF452DB35CA61B7EE3A7D73043E8 /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = ""; }; - 7419F6054C443C52A63B9A448146AD4A /* MJPropertyType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyType.h; path = MJExtension/MJPropertyType.h; sourceTree = ""; }; - 7590DD847FC493D6841975D239803BEE /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = ""; }; - 76610991AF6C4C46E375C5DB72A48B1C /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; - 78127506E73A0CF72E04DB634DE3A46E /* NSNumber+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNumber+SUIAdditions.m"; path = "SUIUtils/Foundation/NSNumber+SUIAdditions.m"; sourceTree = ""; }; - 7888AAFCE0557E3E5CCAD524E7B83EB3 /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = ""; }; - 7950573D520C979A197B8AA6BC02CBCB /* MJRefresh.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.xcconfig; sourceTree = ""; }; - 7B636E943EAE7E510EB4C81B668473E7 /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = ""; }; - 7BFA38E3AD09F29CA20E144A1FD4DF71 /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; - 7D74D8977A08B1BCCF9F91FE53BAA8FF /* UITableView+FDIndexPathHeightCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+FDIndexPathHeightCache.m"; path = "Classes/UITableView+FDIndexPathHeightCache.m"; sourceTree = ""; }; - 7DBF9CD0D99E0C57AD094ACF2C8FCC01 /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; - 7E14E05AAF2C09432FD57FF45EC463B1 /* UITableViewCell+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableViewCell+SUIAdditions.m"; path = "SUIUtils/UIKit/UITableViewCell+SUIAdditions.m"; sourceTree = ""; }; - 7E94EC7803E3334ED96387D5D5D62D7C /* NSString+SUIRegex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+SUIRegex.m"; path = "SUIUtils/Foundation/NSString+SUIRegex.m"; sourceTree = ""; }; - 7F20F5303729E78AB3F821F82F9C1E91 /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; - 7F4C872929BCFAAA2E13A2F9AFCB0625 /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = ""; }; - 8093A801250243C264FC0137421343AB /* UITableView+FDTemplateLayoutCellDebug.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+FDTemplateLayoutCellDebug.m"; path = "Classes/UITableView+FDTemplateLayoutCellDebug.m"; sourceTree = ""; }; - 8150593B594AC228A007401525DB3F47 /* UIButton+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+SUIAdditions.m"; path = "SUIUtils/UIKit/UIButton+SUIAdditions.m"; sourceTree = ""; }; - 82E42A184544DB153569C29431E0AA3F /* SUITableHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUITableHelper.h; path = SUIUtils/Helper/SUITableHelper.h; sourceTree = ""; }; - 83EBFC68975E5F156614B8C429E0BCEF /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; - 852B91AF8A9F24D682B8D906916F955E /* NSArray+SUISafeAccess.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+SUISafeAccess.h"; path = "SUIUtils/Foundation/NSArray+SUISafeAccess.h"; sourceTree = ""; }; - 85A9D068D46A7B40282F447B23EEDC90 /* FMDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabase.m; path = src/fmdb/FMDatabase.m; sourceTree = ""; }; - 86B5FD785C160C714F247719BE8C9B1F /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; - 87AACDB48DC29A497C7B1BE20D004B67 /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; - 87E3FB062300CE3AC93081880D9A6A50 /* NSObject+MJCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJCoding.h"; path = "MJExtension/NSObject+MJCoding.h"; sourceTree = ""; }; - 88D938C58CC019A545DA7E20581A92F8 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; - 8955BE8BF33D620050025F8FA6CEF3D5 /* SMKStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SMKStore.h; path = SUIMVVMStore/SUIMVVMStore/SMKStore.h; sourceTree = ""; }; - 89CA691706B769045986250EB5CCC5F6 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; - 8AC9AA15A00CDB35165A35B9B4F8B105 /* NSDate+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDate+SUIAdditions.m"; path = "SUIUtils/Foundation/NSDate+SUIAdditions.m"; sourceTree = ""; }; - 8C315A73039BA6459702CA757E1C536F /* FMDatabasePool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabasePool.m; path = src/fmdb/FMDatabasePool.m; sourceTree = ""; }; - 8C6BC469E2207E664975319E670FD9DB /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = ""; }; - 8D130B5F2882E3BF012E9379DB719D40 /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = ""; }; - 8D8D6C5F12932E5F987C2CA7BECB7587 /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; - 8DCA6FD2ED577FCB5C8E19D333C8A71F /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; - 8E8F796EBB6FDC3DF6F80E3C46C65CE5 /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = ""; }; - 8EF11E3745619E54C3500457158FB2F4 /* MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJProperty.m; path = MJExtension/MJProperty.m; sourceTree = ""; }; - 8FD957C842F110ACE2FBFD24BA5511FE /* libMJRefresh.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMJRefresh.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 8FF70B649599928AF7A64A3C319E8577 /* NSArray+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+SUIAdditions.m"; path = "SUIUtils/Foundation/NSArray+SUIAdditions.m"; sourceTree = ""; }; - 90658C9D292741B7909192C70406F173 /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; - 90E768556D287A05668796B51C74E055 /* UITextView+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextView+SUIAdditions.h"; path = "SUIUtils/UIKit/UITextView+SUIAdditions.h"; sourceTree = ""; }; - 911EAAAC17F7C265314ED1815D6E5DFA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 9180BF8088F82A519829D835F8D858F4 /* UIView+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+SUIAdditions.h"; path = "SUIUtils/UIKit/UIView+SUIAdditions.h"; sourceTree = ""; }; - 91B40443DBC59E879FCEE7E0B67BEFC7 /* FMDatabaseQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabaseQueue.h; path = src/fmdb/FMDatabaseQueue.h; sourceTree = ""; }; - 9547A011F03137EA35A4E8E57C622BFF /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = ""; }; - 9640AE2AE84AE31DDE3BBD720104A17C /* libFMDB.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFMDB.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 9651138BA89E7B3E33A47554DC55E3F4 /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = ""; }; - 97ABC0CB824F2E643E041DB7AA28EC2A /* UIControl+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIControl+SUIAdditions.m"; path = "SUIUtils/UIKit/UIControl+SUIAdditions.m"; sourceTree = ""; }; - 97EA9A230546A22B76C80426F8A958C0 /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = ""; }; - 97EDA3DC09E3C99DACCFF4D32F502818 /* NSDictionary+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+SUIAdditions.m"; path = "SUIUtils/Foundation/NSDictionary+SUIAdditions.m"; sourceTree = ""; }; - 9888B3D31D806F032B78092C4F4BB8F9 /* MJExtension-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJExtension-dummy.m"; sourceTree = ""; }; + 6945D53B9DCCC7B09C75D5EEE938A478 /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; + 6E651D45BF73319187C397F0322D79B9 /* NSObject+MJCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJCoding.m"; path = "MJExtension/NSObject+MJCoding.m"; sourceTree = ""; }; + 6EC3E4E0E2C6F59025BD28BBEEBD2284 /* SUITool+OpenURL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SUITool+OpenURL.m"; path = "SUIUtils/Tool/SUITool+OpenURL.m"; sourceTree = ""; }; + 6F3FE00B09F558786AF53870B35C20AA /* SUIUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUIUtils.h; path = SUIUtils/SUIUtils.h; sourceTree = ""; }; + 73A5CEB9750AD2058FDDB3316960F700 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; + 747DF9AEC1E2C683A56D58DE89297319 /* UITextView+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextView+SUIAdditions.m"; path = "SUIUtils/UIKit/UITextView+SUIAdditions.m"; sourceTree = ""; }; + 75AC9848BEDE12BDEE13FCE070C14013 /* libAFNetworking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAFNetworking.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 774FDE0A53FB938690A2E271AB0A46C2 /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = ""; }; + 7840D32EC7FB60CD40F3C7297EA5ADB2 /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = ""; }; + 792BFF12C1BA0861297C29A5FE6D9B02 /* NSObject+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+SUIAdditions.m"; path = "SUIUtils/Foundation/NSObject+SUIAdditions.m"; sourceTree = ""; }; + 7A2D319406551C6E7A0D6B60A783F0B2 /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; + 7A2E85FBB5F16330D7FAE2D79407A245 /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; + 7B2F2C29D530ADB64496F14DCFFC6323 /* FMDB-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FMDB-dummy.m"; sourceTree = ""; }; + 7BD2B2713CD524700B1D7DDDF49EAD1C /* UIImage+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+AFNetworking.h"; path = "UIKit+AFNetworking/UIImage+AFNetworking.h"; sourceTree = ""; }; + 7EC8FE231A6D7E5A49163CF31867DF6E /* NSDictionary+SUISafeAccess.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+SUISafeAccess.h"; path = "SUIUtils/Foundation/NSDictionary+SUISafeAccess.h"; sourceTree = ""; }; + 7FE28F10F33202D9F1E5F352064BEFE4 /* UITableView+SUIHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+SUIHelper.m"; path = "SUIUtils/Helper/UITableView+SUIHelper.m"; sourceTree = ""; }; + 8082BB34546F19918556767A442D909F /* UIWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIWebView+AFNetworking.h"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.h"; sourceTree = ""; }; + 80A8E587AFA485B9B2E9F9E25588628B /* SUITableHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUITableHelper.h; path = SUIUtils/Helper/SUITableHelper.h; sourceTree = ""; }; + 8177EAAF91603A5CD9BD667763E0C122 /* libMJRefresh.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMJRefresh.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 81FCE53C759AAC4789567BB356228FC6 /* NSDate+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDate+SUIAdditions.m"; path = "SUIUtils/Foundation/NSDate+SUIAdditions.m"; sourceTree = ""; }; + 822154FDF3283964E4EB7AAF417198CF /* UIScrollView+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+SUIAdditions.h"; path = "SUIUtils/UIKit/UIScrollView+SUIAdditions.h"; sourceTree = ""; }; + 828CE2ABBC2B706222297001ECA4A563 /* FMDatabasePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabasePool.h; path = src/fmdb/FMDatabasePool.h; sourceTree = ""; }; + 82EE865D6CC76507007715BBE2532278 /* UITableView+FDKeyedHeightCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+FDKeyedHeightCache.m"; path = "Classes/UITableView+FDKeyedHeightCache.m"; sourceTree = ""; }; + 833066B35D867F946A59CA7E70FE89C0 /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = ""; }; + 838FE5FE3828FE91506CA671571FEC7B /* MJRefresh.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.xcconfig; sourceTree = ""; }; + 84AECDBA544FF6804C85DE2F792C2351 /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; + 8515DB09F2850606C80E7ACA02038157 /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = ""; }; + 8627E5244705445780B7AA542A2E2176 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = ""; }; + 86B844E4F895FFADBCA6CF6BFC4AD028 /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; + 8998D966A52D961DCEDF1F1EA5827C9B /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; + 89A85B9748991CC8E0D07259A71B2E67 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; + 8C25FA8B31AFCBBD11167C56F5DFF614 /* SUITool+FileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SUITool+FileManager.h"; path = "SUIUtils/Tool/SUITool+FileManager.h"; sourceTree = ""; }; + 8F2F5B0EA0F20C922774D396EB5A720F /* UIImage+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+SUIAdditions.m"; path = "SUIUtils/UIKit/UIImage+SUIAdditions.m"; sourceTree = ""; }; + 90D25DD6BB7C49D98467ACA69B02036C /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = ""; }; + 9105CB29073E853F54BF40AF80226ED4 /* MJExtension.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.xcconfig; sourceTree = ""; }; + 91EA8C1F3939A2455B65421DF16DA817 /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; + 954FD526C33AC86AACD46E86C16C4E3F /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = ""; }; + 955D7AFD3C6535339061A6C9BE52176B /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; 98C98CDFB3F20F2925F6CD1F141BB14F /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.release.xcconfig; sourceTree = ""; }; - 990476090F2956D7717793EC56EEF10E /* UIStoryboardSegue+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIStoryboardSegue+SUIAdditions.h"; path = "SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.h"; sourceTree = ""; }; - 99436AC1024C5581E54F05F3CDBF0CB4 /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = ""; }; - 996B4443A7B909320364350F8140535E /* NSIndexPath+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSIndexPath+SUIAdditions.m"; path = "SUIUtils/Foundation/NSIndexPath+SUIAdditions.m"; sourceTree = ""; }; - 9A048B4A1ABD0AD2EE7F08BC2FB4B3D1 /* SUITool+Camera.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SUITool+Camera.m"; path = "SUIUtils/Tool/SUITool+Camera.m"; sourceTree = ""; }; - 9B9E83B38B5D1AFEEB781B508B5FE916 /* UIStoryboardSegue+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIStoryboardSegue+SUIAdditions.m"; path = "SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.m"; sourceTree = ""; }; - 9BF2DA53C42ABA1A9F083B6E3DE74D1C /* UITableView+FDTemplateLayoutCell-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UITableView+FDTemplateLayoutCell-prefix.pch"; sourceTree = ""; }; - 9C62A36172DB13FF4774AFD897515052 /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = ""; }; - 9C7760C531F2B1243782F464D341D581 /* UIScrollView+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+SUIAdditions.m"; path = "SUIUtils/UIKit/UIScrollView+SUIAdditions.m"; sourceTree = ""; }; - 9D4190C455A6175B48589924F50C141F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 9DE8804A36EFF9F00FFA83EBDF79F301 /* libSUIMVVMStore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSUIMVVMStore.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 9E8742705CF6EC8AC0DFB233B4E84857 /* UITableViewCell+SUIHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableViewCell+SUIHelper.m"; path = "SUIUtils/Helper/UITableViewCell+SUIHelper.m"; sourceTree = ""; }; - A014B6C747F64C8FFE81D53C55C80649 /* FMResultSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMResultSet.m; path = src/fmdb/FMResultSet.m; sourceTree = ""; }; - A0A9958A1357585665416D0293D6410E /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; + 990FF3331544D6F2E5CDBAA924AA4E64 /* UILabel+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+SUIAdditions.h"; path = "SUIUtils/UIKit/UILabel+SUIAdditions.h"; sourceTree = ""; }; + 9CA08DF71E931CE6EDE8D8BE6A810FEA /* UITextField+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextField+SUIAdditions.m"; path = "SUIUtils/UIKit/UITextField+SUIAdditions.m"; sourceTree = ""; }; + 9EE6726B6D184945B3B051AB6C28D6B1 /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = ""; }; + A043C65981192AACD19CCE749C608CA7 /* NSArray+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+SUIAdditions.m"; path = "SUIUtils/Foundation/NSArray+SUIAdditions.m"; sourceTree = ""; }; A1A36D34413696BE466E2CA0AFF194DA /* Pods-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-resources.sh"; sourceTree = ""; }; - A243EADC33B0D5A83FA3B22956481381 /* FMDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabase.h; path = src/fmdb/FMDatabase.h; sourceTree = ""; }; - A29B5117DED59B7DC3580DFA14D1EC49 /* UIImage+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+SUIAdditions.m"; path = "SUIUtils/UIKit/UIImage+SUIAdditions.m"; sourceTree = ""; }; - A30A4AB892328586893E5B2241D4E0A0 /* NSObject+MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJProperty.h"; path = "MJExtension/NSObject+MJProperty.h"; sourceTree = ""; }; - A4C423B2E9EA9F6B7DF3C0BC1D604B75 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; - A50D0CD737A10DEF326EAAB8DB44E12F /* SUITool+FileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SUITool+FileManager.h"; path = "SUIUtils/Tool/SUITool+FileManager.h"; sourceTree = ""; }; - A5461B71452DEEACAD280DBBE524CC00 /* SMKHttpConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SMKHttpConfig.m; path = SUIMVVMNetwork/SUIMVVMNetwork/SMKHttpConfig.m; sourceTree = ""; }; - A5F106A48E98E58675062A6494B09A08 /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = ""; }; - A9282DBEF7E5669EA48167DD5891119B /* MJExtensionConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJExtensionConst.m; path = MJExtension/MJExtensionConst.m; sourceTree = ""; }; - A9E3E35533AE3B1434EEF4FABBCAF4FB /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = ""; }; - AA3E0B0762EDAC5A5F7D5D699BDC3D64 /* UIView+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+SUIAdditions.m"; path = "SUIUtils/UIKit/UIView+SUIAdditions.m"; sourceTree = ""; }; - ABB35875277969B9BEFAB3CCEB7533C1 /* SUITableHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SUITableHelper.m; path = SUIUtils/Helper/SUITableHelper.m; sourceTree = ""; }; - AD063A4E43D8190A6DCDDBABEF66F4D5 /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; - AF0DDFFD30C5F8F0B5DEBB9B30EDFDA4 /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; - AFE5C7A0256AAF05F9839FDD5796044F /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = ""; }; - B0BE7A25335F2139B318BDF827650809 /* UITableView+FDTemplateLayoutCellDebug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+FDTemplateLayoutCellDebug.h"; path = "Classes/UITableView+FDTemplateLayoutCellDebug.h"; sourceTree = ""; }; - B2DF68490EDE7B14DEE4B56891B5D225 /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = ""; }; - B316933A8FFC76E5D67C6D29C085D00A /* SMKHttpConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SMKHttpConfig.h; path = SUIMVVMNetwork/SUIMVVMNetwork/SMKHttpConfig.h; sourceTree = ""; }; - B476185581B97F3781206472D2763EA9 /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = ""; }; - B4CC07474D361009AE0E241A9F712066 /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = ""; }; - B55294722C799E2CA1CE8E4AED8224E7 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; - B792CF9055249AA2FD5FF1F7B2D17B57 /* MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJProperty.h; path = MJExtension/MJProperty.h; sourceTree = ""; }; - B875012EC22C88328263F8025DC392C8 /* UITableView+FDTemplateLayoutCell-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UITableView+FDTemplateLayoutCell-dummy.m"; sourceTree = ""; }; - BA51D00344BCDF2BF83B65B39DEED02A /* SMKHttp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SMKHttp.h; path = SUIMVVMNetwork/SUIMVVMNetwork/SMKHttp.h; sourceTree = ""; }; - BA5392BB42AA23D72DE349090E22786D /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; + A206BBDD832099989F9DBFAA083BEB02 /* MJExtension-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJExtension-dummy.m"; sourceTree = ""; }; + A36C8C20C71E119EEF9B50AF64166DD4 /* UIButton+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+SUIAdditions.m"; path = "SUIUtils/UIKit/UIButton+SUIAdditions.m"; sourceTree = ""; }; + A51EE899282B7B264EEA75F944EC6A13 /* UITableView+FDIndexPathHeightCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+FDIndexPathHeightCache.m"; path = "Classes/UITableView+FDIndexPathHeightCache.m"; sourceTree = ""; }; + A6E6F458B3F0EA7EC6131D07C3F08E22 /* NSDate+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDate+SUIAdditions.h"; path = "SUIUtils/Foundation/NSDate+SUIAdditions.h"; sourceTree = ""; }; + A7642A6856DC087866B2A9EFE47148C4 /* MJExtension-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-prefix.pch"; sourceTree = ""; }; + A80208FE75F5DB14C4A13663290EA81F /* SUIUtils.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SUIUtils.xcconfig; sourceTree = ""; }; + AA4CCDCE7E63385692CFCF9DAE6DD2CC /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = ""; }; + AAA7911D1170B1B26C80E689A6E9E963 /* NSObject+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+SUIAdditions.h"; path = "SUIUtils/Foundation/NSObject+SUIAdditions.h"; sourceTree = ""; }; + AAAC39C18FD31AD8514B4689C9332481 /* NSArray+SUISafeAccess.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+SUISafeAccess.m"; path = "SUIUtils/Foundation/NSArray+SUISafeAccess.m"; sourceTree = ""; }; + AD28C3909B847C7560C26722D8A6DE0B /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = ""; }; + AD2E16EE8AA02A8628E7EE00F2BF77D5 /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; + B136986315687D15D70F94EE0895A747 /* NSString+SUIRegex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+SUIRegex.h"; path = "SUIUtils/Foundation/NSString+SUIRegex.h"; sourceTree = ""; }; + B148ABA74C28EEA1A261BC903C741F99 /* UILabel+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+SUIAdditions.m"; path = "SUIUtils/UIKit/UILabel+SUIAdditions.m"; sourceTree = ""; }; + B2BA97EAB4CB18D3B4D069880B7EB934 /* NSDictionary+SUISafeAccess.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+SUISafeAccess.m"; path = "SUIUtils/Foundation/NSDictionary+SUISafeAccess.m"; sourceTree = ""; }; + B2BF5301CC76AC4723749EE29F2D86E8 /* MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtension.h; path = MJExtension/MJExtension.h; sourceTree = ""; }; + B38EC8FB2195961531DE676FF614A408 /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; + B54B65B232233F092549B4D5A3B03AFD /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = ""; }; + B5A4E24CB981FE111C54F81C272F6AF9 /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = ""; }; + B62596E7666D9F7D65A8C64A10093C77 /* FMDatabaseAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabaseAdditions.h; path = src/fmdb/FMDatabaseAdditions.h; sourceTree = ""; }; + B635DC8BAF40362F2E593D1D665906EA /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; + B73769E85A147C3C154D12CC097DC89B /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; + B839529CB6565699E0C6465A2A69F5F9 /* UIButton+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+SUIAdditions.h"; path = "SUIUtils/UIKit/UIButton+SUIAdditions.h"; sourceTree = ""; }; + B858A4726F8436F49BF424DFFFE69780 /* libUITableView+FDTemplateLayoutCell.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libUITableView+FDTemplateLayoutCell.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B92439FC023C6AC4698E23DF854D6E1B /* NSString+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+SUIAdditions.h"; path = "SUIUtils/Foundation/NSString+SUIAdditions.h"; sourceTree = ""; }; + B9E66F5779DEBF1C9365E1D6C61156F4 /* FMDatabasePool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabasePool.m; path = src/fmdb/FMDatabasePool.m; sourceTree = ""; }; BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - BAE12B2ECAE15979CF1FCDE345984783 /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; - BE84E01E627335A30E79C0730F99A87A /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = ""; }; - BED0567F44F355586B84E585DB07A5F6 /* FMDatabasePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabasePool.h; path = src/fmdb/FMDatabasePool.h; sourceTree = ""; }; - BF687BB405A387DCB054002771545AD3 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; - C498DED67DF29B2243B7F50DC7F41740 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; - C597BA6C6047926F12E9F0012A8DCF0F /* UITableView+FDKeyedHeightCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+FDKeyedHeightCache.h"; path = "Classes/UITableView+FDKeyedHeightCache.h"; sourceTree = ""; }; - C642305BD8446842D0C5F00811D7F77A /* NSString+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+MJExtension.h"; path = "MJExtension/NSString+MJExtension.h"; sourceTree = ""; }; - C68EBFC8D1999EB705E1D817E80B53F4 /* NSData+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+SUIAdditions.m"; path = "SUIUtils/Foundation/NSData+SUIAdditions.m"; sourceTree = ""; }; - C68EECFB4ECFED6D3FDA046391F8F37F /* MJFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJFoundation.h; path = MJExtension/MJFoundation.h; sourceTree = ""; }; - C78EFE41ECD981C1B4ADA370F3315C8E /* FMResultSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMResultSet.h; path = src/fmdb/FMResultSet.h; sourceTree = ""; }; - C7EE08933193DAA46C80C10EA141747F /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = ""; }; - C84CE66AACE57DC27BFF352499DD1BEA /* UITableView+SUIHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+SUIHelper.h"; path = "SUIUtils/Helper/UITableView+SUIHelper.h"; sourceTree = ""; }; - C88E4E46109E1A90EE6143882F8F572E /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; - C8A456A42C7E47747499CEADE8B12FD1 /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; - C91A760EEAECB3EF7329E12C168CFDD9 /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; - CC071CA45D55BF95DF9C1EC22797B38F /* Masonry.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.xcconfig; sourceTree = ""; }; - CD7C38AC54050D4E1A20EDB09D8A6CCC /* SUIMVVMStore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SUIMVVMStore-dummy.m"; sourceTree = ""; }; - CDDE955FAEDA3675119E3E458E3E81FD /* SMKStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SMKStore.m; path = SUIMVVMStore/SUIMVVMStore/SMKStore.m; sourceTree = ""; }; - CF25332764673C29E5C2F47352ECAADF /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = ""; }; - D05245DC2FABBD733226C0AFDF72510D /* NSDictionary+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+SUIAdditions.h"; path = "SUIUtils/Foundation/NSDictionary+SUIAdditions.h"; sourceTree = ""; }; - D08204C0B221D79FA036C459E966B058 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; - D0CDFCA3D33178C70D0E824F1027BB47 /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = ""; }; - D15A417FA139D9BA0C53981B8D7463BF /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = ""; }; - D3B6865FFDC1F2755F0F582EFE1C9B66 /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; - D5D3C174FF59C9579724FE750B56CAF8 /* FMDatabaseAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabaseAdditions.m; path = src/fmdb/FMDatabaseAdditions.m; sourceTree = ""; }; - D752AF623773B86CBA2C1CF45F59F6C5 /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; - D847E958B62337FA4DF048263D51DC5E /* UITableView+FDTemplateLayoutCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+FDTemplateLayoutCell.m"; path = "Classes/UITableView+FDTemplateLayoutCell.m"; sourceTree = ""; }; - D8DCE125D44D619256F04ECF2E994F67 /* UINavigationController+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UINavigationController+SUIAdditions.h"; path = "SUIUtils/UIKit/UINavigationController+SUIAdditions.h"; sourceTree = ""; }; - D9A1F1810E4963CF67D74819F2651638 /* libSUIMVVMNetwork.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSUIMVVMNetwork.a; sourceTree = BUILT_PRODUCTS_DIR; }; - D9F84F737228F7BB1AABB654A1F97A9D /* MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtension.h; path = MJExtension/MJExtension.h; sourceTree = ""; }; - DA73ED129794C22F0B534F1E4A81C854 /* UITableView+FDIndexPathHeightCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+FDIndexPathHeightCache.h"; path = "Classes/UITableView+FDIndexPathHeightCache.h"; sourceTree = ""; }; - DAE94DD1B536C492E1BB6542782E0DA0 /* UITextView+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextView+SUIAdditions.m"; path = "SUIUtils/UIKit/UITextView+SUIAdditions.m"; sourceTree = ""; }; - DB3A5B0370A408058BFF3728AF72603B /* SUIMVVMStore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SUIMVVMStore-prefix.pch"; sourceTree = ""; }; - DB7ACAE97B5D9B061BDB4FB0336FFA23 /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; - DB922DCA16B651DB8A7D1EA81BDCC46B /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; - DCCB0CC5E4E5363DF0D6213928AEBC5C /* SUITool+Delay.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SUITool+Delay.m"; path = "SUIUtils/Tool/SUITool+Delay.m"; sourceTree = ""; }; - DD1B5432C41770EB20F5E1B30D0D8BEA /* libMJExtension.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMJExtension.a; sourceTree = BUILT_PRODUCTS_DIR; }; - DE5E5CC01A522925814D1B7CFF30551D /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; - DFE8BC28B49921E4DD5BE5B40D1B5517 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; - E056D742A32E21D8A10B96266AC9EE8D /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; - E2511A580BF5B0BA04101BBA2365BFE9 /* NSObject+MJKeyValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJKeyValue.h"; path = "MJExtension/NSObject+MJKeyValue.h"; sourceTree = ""; }; - E43B0B39E0BAA65A6DC31AF13ECB0B7E /* NSString+SUIRegex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+SUIRegex.h"; path = "SUIUtils/Foundation/NSString+SUIRegex.h"; sourceTree = ""; }; - E5A72197DC34B5BDB7942C65DF84F514 /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; - E706A1E81734860EC2F652CA197D94D8 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; - EA414B85F8471D09D3EEE84AA664C405 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; - EC2B30EA59585F5DF87D928DC82EDBFB /* SUIMacro.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUIMacro.h; path = SUIUtils/Tool/SUIMacro.h; sourceTree = ""; }; - EC2BCB85BA1EEBDFE50E2A440AE64D62 /* FMDatabaseAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabaseAdditions.h; path = src/fmdb/FMDatabaseAdditions.h; sourceTree = ""; }; - EC6C864F80F372CD71886EF0770E0AB7 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; - EC7BDCBE6B2530C1177D048A4D9D11BA /* NSNumber+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNumber+SUIAdditions.h"; path = "SUIUtils/Foundation/NSNumber+SUIAdditions.h"; sourceTree = ""; }; - EC961FC0913E999F7762F82C1C4F3E23 /* FMDatabaseQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabaseQueue.m; path = src/fmdb/FMDatabaseQueue.m; sourceTree = ""; }; - EFBE4A92DBDBAA9B69BC859D895ABCA0 /* MJPropertyKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyKey.h; path = MJExtension/MJPropertyKey.h; sourceTree = ""; }; - F38A2A22E72ADE8BF7F3F161E58BA6D7 /* SUITool+Delay.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SUITool+Delay.h"; path = "SUIUtils/Tool/SUITool+Delay.h"; sourceTree = ""; }; - F45BDD15E43C8E3D05D90C0A3C8F631D /* UIControl+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIControl+SUIAdditions.h"; path = "SUIUtils/UIKit/UIControl+SUIAdditions.h"; sourceTree = ""; }; - F71EEBEFB8037CF3E1E49B52DFB4B72D /* UITableView+SUIHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+SUIHelper.m"; path = "SUIUtils/Helper/UITableView+SUIHelper.m"; sourceTree = ""; }; - F7594597A97B6F7780FE8117B205516E /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; - F780F90A8A2D331BB38DC453ED1506EB /* SUIUtils.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SUIUtils.xcconfig; sourceTree = ""; }; - F7DA7C08778A10B83102E1C82422B821 /* SUIMVVMNetwork.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SUIMVVMNetwork.xcconfig; sourceTree = ""; }; - F7F6793D25FBC29CCBF7E606ECFE8082 /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = ""; }; - F8162B38F2CBEDC3DE84717C4A13BBC3 /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; - F873C6388770EC12608957EB0E16A457 /* UIViewController+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+SUIAdditions.h"; path = "SUIUtils/UIKit/UIViewController+SUIAdditions.h"; sourceTree = ""; }; - F952C1E10086C3BCDEEF2B7A385D7E93 /* UITableViewCell+SUIHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableViewCell+SUIHelper.h"; path = "SUIUtils/Helper/UITableViewCell+SUIHelper.h"; sourceTree = ""; }; - FA0F39788DE6E6576E42160F4D9D6B2B /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; - FAEE1D0175C79ECCE4440CA9D0FF9F53 /* SUIUtils-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SUIUtils-dummy.m"; sourceTree = ""; }; - FBB07B6FB3352583758E377B68E4277A /* AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.xcconfig; sourceTree = ""; }; - FD402C814389A8191C1EC7A838830C33 /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; - FE8364C409B39E7A5405DEEAFB9EF78B /* NSArray+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+SUIAdditions.h"; path = "SUIUtils/Foundation/NSArray+SUIAdditions.h"; sourceTree = ""; }; - FFE0CE98BAD9FB9A19DDCAC6E100CC73 /* UIButton+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+SUIAdditions.h"; path = "SUIUtils/UIKit/UIButton+SUIAdditions.h"; sourceTree = ""; }; + BB061FB031CFB2B3AB6336DB98CAF8C8 /* UIStoryboardSegue+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIStoryboardSegue+SUIAdditions.h"; path = "SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.h"; sourceTree = ""; }; + BB3F1E239BE92C7B5FB7CAA579846AFD /* FMDB.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FMDB.xcconfig; sourceTree = ""; }; + BBC80239CA3120B87B34606264256A59 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; + BBE2CAA88E47AC6792EA30EAC8208990 /* libMasonry.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMasonry.a; sourceTree = BUILT_PRODUCTS_DIR; }; + BDCC350E982DBEC5987DDF7A741D9982 /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = ""; }; + BDF6BBCF8945B17E088F889E737F7B8F /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; + BECCCE1FF9703FFD536406645F720F6A /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; + C08C85578AF7228076E0E258F3C3B06B /* MJExtensionConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJExtensionConst.m; path = MJExtension/MJExtensionConst.m; sourceTree = ""; }; + C1FA70D055E440F568A54A8CB0241F8D /* libMJExtension.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMJExtension.a; sourceTree = BUILT_PRODUCTS_DIR; }; + C252CB228FB298444B468C555B0E40D8 /* SUITableHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SUITableHelper.m; path = SUIUtils/Helper/SUITableHelper.m; sourceTree = ""; }; + C3095A893F3F2F721D805D6C11407886 /* Masonry.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.xcconfig; sourceTree = ""; }; + C33076EE4363713F72219644C0CCE918 /* UIControl+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIControl+SUIAdditions.h"; path = "SUIUtils/UIKit/UIControl+SUIAdditions.h"; sourceTree = ""; }; + C34A74804543760ADEA0EAF1FC81F94C /* NSString+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+SUIAdditions.m"; path = "SUIUtils/Foundation/NSString+SUIAdditions.m"; sourceTree = ""; }; + C4AC71F55A237D8905B49616722020F4 /* NSObject+MJKeyValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJKeyValue.m"; path = "MJExtension/NSObject+MJKeyValue.m"; sourceTree = ""; }; + C5BFDFD05569DA3EE616C3DA025D8F38 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; + C818A73C3DB66BBBE8622D14AC94F464 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; + CC21954084A4806F2A2A0380877ECA34 /* UINavigationController+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UINavigationController+SUIAdditions.h"; path = "SUIUtils/UIKit/UINavigationController+SUIAdditions.h"; sourceTree = ""; }; + CD45825EEBD0163EE9FB8EEDC7A0F90D /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = ""; }; + CDDE238D34609C0EC7E6B44BF198D54F /* FMResultSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMResultSet.m; path = src/fmdb/FMResultSet.m; sourceTree = ""; }; + D00AF97A9E3A5EC9DE110424564294E7 /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = ""; }; + D2E8E9CA9DCF510E644D660EFCC40D9F /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; + D2F356DCC22D0BA61E1B98D1B0714676 /* MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJProperty.h; path = MJExtension/MJProperty.h; sourceTree = ""; }; + D376CD704B71D663D36312616FFCA034 /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; + D3820E233CF00BC12358A6933533641E /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; + D3880D624D1E4F92C826F39D1C82158B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + D3E179233490749A35E839D1D6A0340E /* UITableView+FDIndexPathHeightCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+FDIndexPathHeightCache.h"; path = "Classes/UITableView+FDIndexPathHeightCache.h"; sourceTree = ""; }; + D4EB07DF0E0FC4632B99DD66919C6897 /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = ""; }; + D8128557F88891C3F605E0FC2B360BAD /* UITableViewCell+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableViewCell+SUIAdditions.m"; path = "SUIUtils/UIKit/UITableViewCell+SUIAdditions.m"; sourceTree = ""; }; + DC572A52432CD358A8D91DDDE2957AAF /* UITextField+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextField+SUIAdditions.h"; path = "SUIUtils/UIKit/UITextField+SUIAdditions.h"; sourceTree = ""; }; + DE8AF5379B06547F366A30A27FEE32AF /* MJPropertyType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyType.m; path = MJExtension/MJPropertyType.m; sourceTree = ""; }; + E0C9E4B97056B00CBC37EFB2D3198869 /* SUITool+Camera.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SUITool+Camera.h"; path = "SUIUtils/Tool/SUITool+Camera.h"; sourceTree = ""; }; + E15E41AD5E71788F624BF72F2ABDE6F7 /* UITableViewCell+SUIHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableViewCell+SUIHelper.h"; path = "SUIUtils/Helper/UITableViewCell+SUIHelper.h"; sourceTree = ""; }; + E3A5E39BACE21307BC35A98C91BE9B69 /* SUITool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SUITool.m; path = SUIUtils/Tool/SUITool.m; sourceTree = ""; }; + E69656B41F22382A19542C0FB8450771 /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; + E8E7AEFC749E0FBE091423147258C431 /* UITableView+FDTemplateLayoutCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+FDTemplateLayoutCell.m"; path = "Classes/UITableView+FDTemplateLayoutCell.m"; sourceTree = ""; }; + E8EBE6A0D5C237D73D59B1D8E75BACA1 /* UITableViewCell+SUIHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableViewCell+SUIHelper.m"; path = "SUIUtils/Helper/UITableViewCell+SUIHelper.m"; sourceTree = ""; }; + E996FE6F11C6ED0A2BEB8BE2523AC7C1 /* NSString+SUICrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+SUICrypto.m"; path = "SUIUtils/Foundation/NSString+SUICrypto.m"; sourceTree = ""; }; + E9C91AB3C81D2F5B13689C1D8FC67751 /* SUITool+OpenURL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SUITool+OpenURL.h"; path = "SUIUtils/Tool/SUITool+OpenURL.h"; sourceTree = ""; }; + E9C9FFC7E2EB5094AF57216971637B13 /* MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJProperty.m; path = MJExtension/MJProperty.m; sourceTree = ""; }; + EA628141284DBF7E37AC34CD2F35EB85 /* UIViewController+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+SUIAdditions.h"; path = "SUIUtils/UIKit/UIViewController+SUIAdditions.h"; sourceTree = ""; }; + EA85305CDC1ED3FE27B108DEB99A2034 /* MJPropertyType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyType.h; path = MJExtension/MJPropertyType.h; sourceTree = ""; }; + EADDFB5200B7C4AF37456A2DA592D0BD /* UIView+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+SUIAdditions.m"; path = "SUIUtils/UIKit/UIView+SUIAdditions.m"; sourceTree = ""; }; + EAFC4E85EA642DF75B75DF88DA6A14A4 /* UIScrollView+SUIAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+SUIAdditions.m"; path = "SUIUtils/UIKit/UIScrollView+SUIAdditions.m"; sourceTree = ""; }; + EC806B19BF45883DF78BC33958C0869E /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; + ED0DE82EE46DBB7BC472C1BC398D24D0 /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = ""; }; + EDEE4F7430EDD726548780E81ACAD73C /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; + EE3BFAD28E86AC9809CA7C2CBFC911E5 /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = ""; }; + EE9492200C6439CEE56477C570CC3586 /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; + EEFAFF46A706C92A3873B65015BBAA79 /* UITableView+FDKeyedHeightCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+FDKeyedHeightCache.h"; path = "Classes/UITableView+FDKeyedHeightCache.h"; sourceTree = ""; }; + F3B266E6508DF4DB9178725F987D2119 /* NSObject+MJClass.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJClass.m"; path = "MJExtension/NSObject+MJClass.m"; sourceTree = ""; }; + F3DFBB69D0A0127D9C5044F27367BC3D /* FMDatabaseQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabaseQueue.h; path = src/fmdb/FMDatabaseQueue.h; sourceTree = ""; }; + F4490E8F89CB5DE90291AF339DC66B26 /* UITextView+SUIAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextView+SUIAdditions.h"; path = "SUIUtils/UIKit/UITextView+SUIAdditions.h"; sourceTree = ""; }; + F81E8CC85FC6DA82D9996E25553C66B0 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; + F993C72E89533B38F1A18D169719CD41 /* UITableView+FDTemplateLayoutCell.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "UITableView+FDTemplateLayoutCell.xcconfig"; sourceTree = ""; }; + F9BE7A201659B1BD889539D50D42A564 /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; + FAAEB32BAEB603048640C60A8F32476D /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; + FC25865C412D2AC4A11E9235B60F033E /* SUIUtils-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SUIUtils-dummy.m"; sourceTree = ""; }; + FCAC3FF904364BD9876AFD7452331A3F /* UITableView+FDTemplateLayoutCellDebug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+FDTemplateLayoutCellDebug.h"; path = "Classes/UITableView+FDTemplateLayoutCellDebug.h"; sourceTree = ""; }; + FCCD832F66D06A508E52A264551009A7 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FF13891BC8BF32792849908AFA8BCB58 /* UITableView+SUIHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+SUIHelper.h"; path = "SUIUtils/Helper/UITableView+SUIHelper.h"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 3A72B6F69CD85241DC3AF9B2786F202B /* Frameworks */ = { + 303C8CAFD861DA53B6D204C8B3342D84 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A7F5696E114D72A5868E2D7925E879A7 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 42F84C02576E1C17C27EBCA1C67ECF9A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9C2B50F915D9186BA6EFEB68FEA58E96 /* CoreGraphics.framework in Frameworks */, - B32254166A7D1F17BE0D8810FF9D9429 /* Foundation.framework in Frameworks */, - 3D6D40A518C4B968E965B13730C73CE0 /* QuartzCore.framework in Frameworks */, - 3C7B1E6B24EFAE09F216ED9817F1D56E /* UIKit.framework in Frameworks */, + 762145742E006CE574A9C8225B11E272 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -652,11 +579,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 813FB1530F457BD76DABCDC7545352D8 /* Frameworks */ = { + 749A000D62471601BC68E14DF137965C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 95A549BD8C2FD19D10BE784C75FD0895 /* Foundation.framework in Frameworks */, + 51D10A800C77C043093EA772E7707892 /* CoreGraphics.framework in Frameworks */, + C3CC13B67D505233B2389DFECFB20E45 /* Foundation.framework in Frameworks */, + 404D3302A6C00B88B9A14EFE6B0D6719 /* QuartzCore.framework in Frameworks */, + B14FB8D45B28E60854FCFBAE5F912155 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -668,26 +598,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B064E30DDF6B22E71DD9600E5E04D801 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 692D640842B77CD56B7BF2F2B556DDEC /* CoreFoundation.framework in Frameworks */, - 177FBBF485076E1E845FEF9F9FBDF38A /* Foundation.framework in Frameworks */, - 2D9BB0C2793C70882A110FEEC30285AE /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D5D579072D9E78F6CDEF56F08D9212C7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 6C51CCBB888F68AF663FEEE28B7C49E4 /* CoreFoundation.framework in Frameworks */, - 1413150F027574F648FB114483ED4E38 /* Foundation.framework in Frameworks */, - 83DC9367C7543199BEDF1550FA1C4053 /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; F6AAF5593D0C5E24B3377E5C3999D0AA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -705,14 +615,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - FDBC3BADAFE6700941603123B6A29E76 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 5D344AD15F64E59CDA35D5F40D3C80DB /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -724,398 +626,341 @@ name = "Targets Support Files"; sourceTree = ""; }; - 09647F4D05B50E932F14C65C3B901C38 /* Support Files */ = { + 05899F7BF8C49137D23EC5012BCB3E5B /* Pods */ = { isa = PBXGroup; children = ( - F780F90A8A2D331BB38DC453ED1506EB /* SUIUtils.xcconfig */, - FAEE1D0175C79ECCE4440CA9D0FF9F53 /* SUIUtils-dummy.m */, - 2A652D1EC525C8447D4325C42D8D4A78 /* SUIUtils-prefix.pch */, + C9FF19A42AD69A41069DA62972A3FBA4 /* AFNetworking */, + 685E61BF0441A062F6BD27B401CDC7AE /* FMDB */, + 6B23C5C8420DA339AFB09F38B43E05C4 /* Masonry */, + 4AEE808388C77FA634966A710A8773E9 /* MJExtension */, + 781326E53CC5A1D82B27DA262E83A65E /* MJRefresh */, + 3D33AEBCBB661251BF7CB63C08009A0D /* SUIUtils */, + 37DCA2F9C146E44961450F4203844479 /* UITableView+FDTemplateLayoutCell */, ); - name = "Support Files"; - path = "../Target Support Files/SUIUtils"; + name = Pods; sourceTree = ""; }; - 09B75363315FDCA5050AC07B9F585C3C /* YTKKeyValueStore */ = { + 0609349F02E90B20478686C19E5658D3 /* Support Files */ = { isa = PBXGroup; children = ( - 571F7285DA548BE22041ACD0267CC7DF /* YTKKeyValueStore.h */, - 636A388E7E85331440A677A8A511162A /* YTKKeyValueStore.m */, + C3095A893F3F2F721D805D6C11407886 /* Masonry.xcconfig */, + 24EB8E1BC934BFAD0BC66E55AD2D5F13 /* Masonry-dummy.m */, + B635DC8BAF40362F2E593D1D665906EA /* Masonry-prefix.pch */, ); - name = YTKKeyValueStore; - sourceTree = ""; - }; - 0A40C78AA21AFB443D991932571E0CE4 /* SUIMVVMNetwork */ = { - isa = PBXGroup; - children = ( - 72B5C8351F905FE80D77B150904C433E /* SMKDataService.h */, - 2C4787307285D68350674D5E573702CD /* SMKDataService.m */, - BA51D00344BCDF2BF83B65B39DEED02A /* SMKHttp.h */, - 67C229228E40C4153120EC09887CFFE2 /* SMKHttp.m */, - B316933A8FFC76E5D67C6D29C085D00A /* SMKHttpConfig.h */, - A5461B71452DEEACAD280DBBE524CC00 /* SMKHttpConfig.m */, - 21687D7F6C320F47C9B017CEBC727FB7 /* SMKSingleton.h */, - ); - name = SUIMVVMNetwork; + name = "Support Files"; + path = "../Target Support Files/Masonry"; sourceTree = ""; }; - 1A205E3B728EC15BAEF78FDC4F38CD12 /* Support Files */ = { + 0BCA37D590D86F83F8C1E9E2F1EC3704 /* Resources */ = { isa = PBXGroup; children = ( - 55E90F1474272922BAB1FB9E1AC82534 /* FMDB.xcconfig */, - 3EC75283423A9956DB985007269B05E4 /* FMDB-dummy.m */, - 6B6127B169607F03E6F34DC500F268D2 /* FMDB-prefix.pch */, + 26EF938AC799C0D606C7F4ADB4E13D7C /* MJRefresh.bundle */, ); - name = "Support Files"; - path = "../Target Support Files/FMDB"; + name = Resources; sourceTree = ""; }; - 1B09957B72DE6EED382B913F1BEFB096 /* Foundation */ = { + 336D910CCEE0EF72765AF5FF0F2FF036 /* iOS */ = { isa = PBXGroup; children = ( - FE8364C409B39E7A5405DEEAFB9EF78B /* NSArray+SUIAdditions.h */, - 8FF70B649599928AF7A64A3C319E8577 /* NSArray+SUIAdditions.m */, - 852B91AF8A9F24D682B8D906916F955E /* NSArray+SUISafeAccess.h */, - 1E1A54374903ADE1D0D8180CE57DD4A9 /* NSArray+SUISafeAccess.m */, - 6906B081946E4252A9735718B7C58853 /* NSData+SUIAdditions.h */, - C68EBFC8D1999EB705E1D817E80B53F4 /* NSData+SUIAdditions.m */, - 0A0F204F29D1849564338EEB1628FC7E /* NSDate+SUIAdditions.h */, - 8AC9AA15A00CDB35165A35B9B4F8B105 /* NSDate+SUIAdditions.m */, - D05245DC2FABBD733226C0AFDF72510D /* NSDictionary+SUIAdditions.h */, - 97EDA3DC09E3C99DACCFF4D32F502818 /* NSDictionary+SUIAdditions.m */, - 22E045358874AE5D9F32F6FA0D6BCA06 /* NSDictionary+SUISafeAccess.h */, - 400F4EFADF28ED5C3876C868221C91BE /* NSDictionary+SUISafeAccess.m */, - 24D0D54CBEF4791C19FA202F252961D2 /* NSIndexPath+SUIAdditions.h */, - 996B4443A7B909320364350F8140535E /* NSIndexPath+SUIAdditions.m */, - EC7BDCBE6B2530C1177D048A4D9D11BA /* NSNumber+SUIAdditions.h */, - 78127506E73A0CF72E04DB634DE3A46E /* NSNumber+SUIAdditions.m */, - 0829AD4965A7AD795CB77E98A1D909CC /* NSObject+SUIAdditions.h */, - 5F7A03E306D1DEBDDB37E417C28F1BB9 /* NSObject+SUIAdditions.m */, - 4C2FABC300313B446B8A7BA09C3A5488 /* NSString+SUIAdditions.h */, - 1459C3BCB729100AACC07DC6511B5512 /* NSString+SUIAdditions.m */, - 084B10BA10224CA99EA0CB8C0F1B877A /* NSString+SUICrypto.h */, - 45E39B518A44FB352550CBF7F20E4E95 /* NSString+SUICrypto.m */, - E43B0B39E0BAA65A6DC31AF13ECB0B7E /* NSString+SUIRegex.h */, - 7E94EC7803E3334ED96387D5D5D62D7C /* NSString+SUIRegex.m */, + 128AD5011BFADA37167C5F6269BB28A6 /* CoreGraphics.framework */, + 62D17CB1CE0E78ACF219FD2FC9927222 /* Foundation.framework */, + 551C0B4180F1504F4B64BE1060061610 /* MobileCoreServices.framework */, + 46695837FC54A49FA403EBD926A863A3 /* QuartzCore.framework */, + 00D58A4B1C81F4AF9C06E29625F38F1F /* Security.framework */, + 89A85B9748991CC8E0D07259A71B2E67 /* SystemConfiguration.framework */, + D3880D624D1E4F92C826F39D1C82158B /* UIKit.framework */, ); - name = Foundation; + name = iOS; sourceTree = ""; }; - 2542A353E19CA9369BAF8523094F486F /* SUIMVVMNetwork */ = { + 37DCA2F9C146E44961450F4203844479 /* UITableView+FDTemplateLayoutCell */ = { isa = PBXGroup; children = ( - 2909D0B94B21F1FE68D7799C988467E6 /* SMKNetworkPublic.h */, - 0A40C78AA21AFB443D991932571E0CE4 /* SUIMVVMNetwork */, - 3B75A8F36A73BEBA346930B10CE5F35E /* Support Files */, + D3E179233490749A35E839D1D6A0340E /* UITableView+FDIndexPathHeightCache.h */, + A51EE899282B7B264EEA75F944EC6A13 /* UITableView+FDIndexPathHeightCache.m */, + EEFAFF46A706C92A3873B65015BBAA79 /* UITableView+FDKeyedHeightCache.h */, + 82EE865D6CC76507007715BBE2532278 /* UITableView+FDKeyedHeightCache.m */, + 42F0EA4C47E83F498AAD00AB96E4CE46 /* UITableView+FDTemplateLayoutCell.h */, + E8E7AEFC749E0FBE091423147258C431 /* UITableView+FDTemplateLayoutCell.m */, + FCAC3FF904364BD9876AFD7452331A3F /* UITableView+FDTemplateLayoutCellDebug.h */, + 5F5D2242F64B2AE2A06BEAC9549DC731 /* UITableView+FDTemplateLayoutCellDebug.m */, + 830A5FBA2F18FA7AF5C7F055997F268C /* Support Files */, ); - path = SUIMVVMNetwork; + path = "UITableView+FDTemplateLayoutCell"; sourceTree = ""; }; - 2E6C1FD120021C25738010A74DD481FE /* Serialization */ = { + 3D33AEBCBB661251BF7CB63C08009A0D /* SUIUtils */ = { isa = PBXGroup; children = ( - D08204C0B221D79FA036C459E966B058 /* AFURLRequestSerialization.h */, - 60028BC73F561EA3D12C50B23308AA31 /* AFURLRequestSerialization.m */, - 2ACBD701C4E26F6B8E3EDD632C87D24F /* AFURLResponseSerialization.h */, - F7594597A97B6F7780FE8117B205516E /* AFURLResponseSerialization.m */, + 6F3FE00B09F558786AF53870B35C20AA /* SUIUtils.h */, + E0CC0511C249066DBC2C39B467E139CD /* Foundation */, + C2DF267A2A1826B7201B9994C9DCC078 /* Helper */, + F865FA1FEC462A34B6E3C91CFD8DEDC0 /* Support Files */, + C4712B80EF0ECAED6410EEE835B94262 /* Tool */, + 609C856634156883859F84D264D4D321 /* UIKit */, ); - name = Serialization; + path = SUIUtils; sourceTree = ""; }; - 3B75A8F36A73BEBA346930B10CE5F35E /* Support Files */ = { + 4AEE808388C77FA634966A710A8773E9 /* MJExtension */ = { isa = PBXGroup; children = ( - F7DA7C08778A10B83102E1C82422B821 /* SUIMVVMNetwork.xcconfig */, - 6A9125B27E709E8E21D1B5C42E208A0D /* SUIMVVMNetwork-dummy.m */, - 565B4CC718F4015B066030386FA81222 /* SUIMVVMNetwork-prefix.pch */, + B2BF5301CC76AC4723749EE29F2D86E8 /* MJExtension.h */, + 51100B3FF1A00DC8D19DB1DAE49E2318 /* MJExtensionConst.h */, + C08C85578AF7228076E0E258F3C3B06B /* MJExtensionConst.m */, + 3414F4C550FA431170325B86F4DE82C8 /* MJFoundation.h */, + 366E9F7825323F79B15713376F21B3F0 /* MJFoundation.m */, + D2F356DCC22D0BA61E1B98D1B0714676 /* MJProperty.h */, + E9C9FFC7E2EB5094AF57216971637B13 /* MJProperty.m */, + 146C52C1F8701B0BCEE6CC545372C65F /* MJPropertyKey.h */, + 154E803723C473CA91217C773CCD78C8 /* MJPropertyKey.m */, + EA85305CDC1ED3FE27B108DEB99A2034 /* MJPropertyType.h */, + DE8AF5379B06547F366A30A27FEE32AF /* MJPropertyType.m */, + 5AB634F1D7879795514432EC106DA31A /* NSObject+MJClass.h */, + F3B266E6508DF4DB9178725F987D2119 /* NSObject+MJClass.m */, + 22B36B3A2EDBC968348123A2162FB922 /* NSObject+MJCoding.h */, + 6E651D45BF73319187C397F0322D79B9 /* NSObject+MJCoding.m */, + 5A95BC7C0334402FA569FDE2B3D0DBAF /* NSObject+MJKeyValue.h */, + C4AC71F55A237D8905B49616722020F4 /* NSObject+MJKeyValue.m */, + 36AE32785D8D0B475021F7CA68D89740 /* NSObject+MJProperty.h */, + 11D0665FA317393D393F93BC2312516B /* NSObject+MJProperty.m */, + 01A6D9B9FB85E45B87F3FECFE06246AD /* NSString+MJExtension.h */, + 37501A6789CA261D8A28155F8559F09C /* NSString+MJExtension.m */, + 86FE0E79FEC7E23D1B86F193C075F189 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/SUIMVVMNetwork"; + path = MJExtension; sourceTree = ""; }; - 3F34E50C3E9E3E5271FDE3A60E7096E9 /* Resources */ = { + 609C856634156883859F84D264D4D321 /* UIKit */ = { isa = PBXGroup; children = ( - B476185581B97F3781206472D2763EA9 /* MJRefresh.bundle */, + B839529CB6565699E0C6465A2A69F5F9 /* UIButton+SUIAdditions.h */, + A36C8C20C71E119EEF9B50AF64166DD4 /* UIButton+SUIAdditions.m */, + C33076EE4363713F72219644C0CCE918 /* UIControl+SUIAdditions.h */, + 5DA1C48832FB5200B88A01C798CB05C1 /* UIControl+SUIAdditions.m */, + 05CFB9729490DF96FA7E08CC45C93132 /* UIImage+SUIAdditions.h */, + 8F2F5B0EA0F20C922774D396EB5A720F /* UIImage+SUIAdditions.m */, + 990FF3331544D6F2E5CDBAA924AA4E64 /* UILabel+SUIAdditions.h */, + B148ABA74C28EEA1A261BC903C741F99 /* UILabel+SUIAdditions.m */, + CC21954084A4806F2A2A0380877ECA34 /* UINavigationController+SUIAdditions.h */, + 35FBBC21D25A678957D981A4E56B9D85 /* UINavigationController+SUIAdditions.m */, + 822154FDF3283964E4EB7AAF417198CF /* UIScrollView+SUIAdditions.h */, + EAFC4E85EA642DF75B75DF88DA6A14A4 /* UIScrollView+SUIAdditions.m */, + BB061FB031CFB2B3AB6336DB98CAF8C8 /* UIStoryboardSegue+SUIAdditions.h */, + 65BF0A1BAC37C2E1D7F464800403B960 /* UIStoryboardSegue+SUIAdditions.m */, + 65DD18D95D1680EBA95CB0EE438F5746 /* UITableViewCell+SUIAdditions.h */, + D8128557F88891C3F605E0FC2B360BAD /* UITableViewCell+SUIAdditions.m */, + DC572A52432CD358A8D91DDDE2957AAF /* UITextField+SUIAdditions.h */, + 9CA08DF71E931CE6EDE8D8BE6A810FEA /* UITextField+SUIAdditions.m */, + F4490E8F89CB5DE90291AF339DC66B26 /* UITextView+SUIAdditions.h */, + 747DF9AEC1E2C683A56D58DE89297319 /* UITextView+SUIAdditions.m */, + 63B278DFDEC482AE58E326D8CA7D4E22 /* UIView+SUIAdditions.h */, + EADDFB5200B7C4AF37456A2DA592D0BD /* UIView+SUIAdditions.m */, + EA628141284DBF7E37AC34CD2F35EB85 /* UIViewController+SUIAdditions.h */, + 45F3DC08FD1D8CF98ACB05301D875F52 /* UIViewController+SUIAdditions.m */, ); - name = Resources; + name = UIKit; sourceTree = ""; }; - 40FC3226EBB9F5BD44B190BC58CAAE7D /* Support Files */ = { + 6762AE95B181A28B077BB14EFB2DE8D5 /* UIKit */ = { isa = PBXGroup; children = ( - 3664C8ED47E6ECC65DB53A5BB4F4C4AD /* UITableView+FDTemplateLayoutCell.xcconfig */, - B875012EC22C88328263F8025DC392C8 /* UITableView+FDTemplateLayoutCell-dummy.m */, - 9BF2DA53C42ABA1A9F083B6E3DE74D1C /* UITableView+FDTemplateLayoutCell-prefix.pch */, + 603FD613E65A16D1BC2544FD6AF61CEB /* AFAutoPurgingImageCache.h */, + 2989F03D5CC816DAD1E9E0414A3F8E8F /* AFAutoPurgingImageCache.m */, + FAAEB32BAEB603048640C60A8F32476D /* AFImageDownloader.h */, + 4B0D432FC8C608847696424029EE6B17 /* AFImageDownloader.m */, + 2C2E80FB44796910980A89F36738048B /* AFNetworkActivityIndicatorManager.h */, + 68B0BD32C89BBF031D54B5E8CE71412F /* AFNetworkActivityIndicatorManager.m */, + 3BBCCBED0A07ABAC6418845CD175DFDE /* UIActivityIndicatorView+AFNetworking.h */, + 7A2D319406551C6E7A0D6B60A783F0B2 /* UIActivityIndicatorView+AFNetworking.m */, + 0D28CDF2F4217E4293E105CA02BA4161 /* UIButton+AFNetworking.h */, + 08131B0176B146FE74E21107437A73AC /* UIButton+AFNetworking.m */, + 7BD2B2713CD524700B1D7DDDF49EAD1C /* UIImage+AFNetworking.h */, + 21BFA2DF5DB3D2516B7A876C45049A00 /* UIImageView+AFNetworking.h */, + 73A5CEB9750AD2058FDDB3316960F700 /* UIImageView+AFNetworking.m */, + 48B235F1026CE20001AA1E1DCDB0B5E7 /* UIKit+AFNetworking.h */, + 234878F745023CFFA813A103AFA91BAD /* UIProgressView+AFNetworking.h */, + 573741D5E106B0418B43067016E273C1 /* UIProgressView+AFNetworking.m */, + BBC80239CA3120B87B34606264256A59 /* UIRefreshControl+AFNetworking.h */, + 60EED3980878DCC5C9AB59E7F4F11AF9 /* UIRefreshControl+AFNetworking.m */, + 8082BB34546F19918556767A442D909F /* UIWebView+AFNetworking.h */, + 13EFE309CDE77505F4F0CE1E80780B3F /* UIWebView+AFNetworking.m */, ); - name = "Support Files"; - path = "../Target Support Files/UITableView+FDTemplateLayoutCell"; + name = UIKit; sourceTree = ""; }; - 52ADFC58CFEE47CE973023B793A057D2 /* MJRefresh */ = { + 685E61BF0441A062F6BD27B401CDC7AE /* FMDB */ = { isa = PBXGroup; children = ( - 0E7527328C00EF3D9965A94ACFAC4783 /* MJRefresh.h */, - 52AC8CB9CBC4F66E52562D956AB4C9FB /* MJRefreshAutoFooter.h */, - 3F55CD144C9B8F055A690A714235D1A7 /* MJRefreshAutoFooter.m */, - 486A1018F6E527411363F7CF672132F1 /* MJRefreshAutoGifFooter.h */, - 7F4C872929BCFAAA2E13A2F9AFCB0625 /* MJRefreshAutoGifFooter.m */, - 6313B6B56FDE1002848AC08C1BD6BB29 /* MJRefreshAutoNormalFooter.h */, - 7590DD847FC493D6841975D239803BEE /* MJRefreshAutoNormalFooter.m */, - 71354AD77DCFE0EABF899A0691CF60ED /* MJRefreshAutoStateFooter.h */, - 73BCAF452DB35CA61B7EE3A7D73043E8 /* MJRefreshAutoStateFooter.m */, - 5BA60C00B7F90F1152FE9AE9D9532100 /* MJRefreshBackFooter.h */, - F7F6793D25FBC29CCBF7E606ECFE8082 /* MJRefreshBackFooter.m */, - CF25332764673C29E5C2F47352ECAADF /* MJRefreshBackGifFooter.h */, - 9C62A36172DB13FF4774AFD897515052 /* MJRefreshBackGifFooter.m */, - A5F106A48E98E58675062A6494B09A08 /* MJRefreshBackNormalFooter.h */, - C7EE08933193DAA46C80C10EA141747F /* MJRefreshBackNormalFooter.m */, - AFE5C7A0256AAF05F9839FDD5796044F /* MJRefreshBackStateFooter.h */, - 414B706CA4AE49D37D9EE5011DF868C6 /* MJRefreshBackStateFooter.m */, - 12BD55E81EEFA074877E19D8C63C7490 /* MJRefreshComponent.h */, - B2DF68490EDE7B14DEE4B56891B5D225 /* MJRefreshComponent.m */, - 9547A011F03137EA35A4E8E57C622BFF /* MJRefreshConst.h */, - 97EA9A230546A22B76C80426F8A958C0 /* MJRefreshConst.m */, - 8C6BC469E2207E664975319E670FD9DB /* MJRefreshFooter.h */, - D15A417FA139D9BA0C53981B8D7463BF /* MJRefreshFooter.m */, - 099F2DBEAB70BCCF1AE52A13DAC016F8 /* MJRefreshGifHeader.h */, - 7B636E943EAE7E510EB4C81B668473E7 /* MJRefreshGifHeader.m */, - 8E8F796EBB6FDC3DF6F80E3C46C65CE5 /* MJRefreshHeader.h */, - B4CC07474D361009AE0E241A9F712066 /* MJRefreshHeader.m */, - A9E3E35533AE3B1434EEF4FABBCAF4FB /* MJRefreshNormalHeader.h */, - 7888AAFCE0557E3E5CCAD524E7B83EB3 /* MJRefreshNormalHeader.m */, - 1D0CEA9BC23007D731A9973625E0147D /* MJRefreshStateHeader.h */, - 5355076C0155FE2A5CA037DC21A78888 /* MJRefreshStateHeader.m */, - 8D130B5F2882E3BF012E9379DB719D40 /* UIScrollView+MJExtension.h */, - 22596A6054104D590833ECB92A35D8BA /* UIScrollView+MJExtension.m */, - 99436AC1024C5581E54F05F3CDBF0CB4 /* UIScrollView+MJRefresh.h */, - 1356790A7E189F390AA23B35FC99A243 /* UIScrollView+MJRefresh.m */, - BE84E01E627335A30E79C0730F99A87A /* UIView+MJExtension.h */, - 9651138BA89E7B3E33A47554DC55E3F4 /* UIView+MJExtension.m */, - 3F34E50C3E9E3E5271FDE3A60E7096E9 /* Resources */, - 8ED603CEDCC20E313C5F44BBB9E16564 /* Support Files */, + E13475A6C9865342030A7A83989DD58C /* standard */, + C9E16A036E65A56BCCA17EE4A9A1DA67 /* Support Files */, ); - path = MJRefresh; + path = FMDB; sourceTree = ""; }; - 547DC16311DC7E50C1C0BF9E2B8CD211 /* Masonry */ = { + 6B23C5C8420DA339AFB09F38B43E05C4 /* Masonry */ = { isa = PBXGroup; children = ( - 2B30D5291A3086ECA54C2278B024C219 /* MASCompositeConstraint.h */, - A0A9958A1357585665416D0293D6410E /* MASCompositeConstraint.m */, - 89CA691706B769045986250EB5CCC5F6 /* MASConstraint.h */, - FA0F39788DE6E6576E42160F4D9D6B2B /* MASConstraint.m */, - 7DBF9CD0D99E0C57AD094ACF2C8FCC01 /* MASConstraint+Private.h */, - E056D742A32E21D8A10B96266AC9EE8D /* MASConstraintMaker.h */, - DE5E5CC01A522925814D1B7CFF30551D /* MASConstraintMaker.m */, - 8D8D6C5F12932E5F987C2CA7BECB7587 /* MASLayoutConstraint.h */, - 87AACDB48DC29A497C7B1BE20D004B67 /* MASLayoutConstraint.m */, - 477CF0FBC6BE2288CCCEA8156E364FFE /* Masonry.h */, - E706A1E81734860EC2F652CA197D94D8 /* MASUtilities.h */, - 35D4E01881C47E795F53AC7E92BEA1EA /* MASViewAttribute.h */, - C88E4E46109E1A90EE6143882F8F572E /* MASViewAttribute.m */, - 90658C9D292741B7909192C70406F173 /* MASViewConstraint.h */, - BAE12B2ECAE15979CF1FCDE345984783 /* MASViewConstraint.m */, - 76610991AF6C4C46E375C5DB72A48B1C /* NSArray+MASAdditions.h */, - BA5392BB42AA23D72DE349090E22786D /* NSArray+MASAdditions.m */, - 86B5FD785C160C714F247719BE8C9B1F /* NSArray+MASShorthandAdditions.h */, - 25F89F70FA69F90324FF88585B1EDDE4 /* NSLayoutConstraint+MASDebugAdditions.h */, - DB7ACAE97B5D9B061BDB4FB0336FFA23 /* NSLayoutConstraint+MASDebugAdditions.m */, - 0742744BCAFA8EE6783CCEFCEA510193 /* View+MASAdditions.h */, - 0D2E113C4CF83339F9CEE08FC4C95F32 /* View+MASAdditions.m */, - DB922DCA16B651DB8A7D1EA81BDCC46B /* View+MASShorthandAdditions.h */, - A4C423B2E9EA9F6B7DF3C0BC1D604B75 /* ViewController+MASAdditions.h */, - F8162B38F2CBEDC3DE84717C4A13BBC3 /* ViewController+MASAdditions.m */, - 60AE639890BB9C5BE433A6D8AF8C0FA0 /* Support Files */, + 64CFAE66E907BBBE2FF26883B49C6130 /* MASCompositeConstraint.h */, + EE9492200C6439CEE56477C570CC3586 /* MASCompositeConstraint.m */, + C5BFDFD05569DA3EE616C3DA025D8F38 /* MASConstraint.h */, + 3C6D62E94476C288AC2BC493EEE578D5 /* MASConstraint.m */, + D2E8E9CA9DCF510E644D660EFCC40D9F /* MASConstraint+Private.h */, + B38EC8FB2195961531DE676FF614A408 /* MASConstraintMaker.h */, + EDEE4F7430EDD726548780E81ACAD73C /* MASConstraintMaker.m */, + F9BE7A201659B1BD889539D50D42A564 /* MASLayoutConstraint.h */, + 645B51B1B2A219CD85F322B5A78D7105 /* MASLayoutConstraint.m */, + 6945D53B9DCCC7B09C75D5EEE938A478 /* Masonry.h */, + C818A73C3DB66BBBE8622D14AC94F464 /* MASUtilities.h */, + 91EA8C1F3939A2455B65421DF16DA817 /* MASViewAttribute.h */, + 84AECDBA544FF6804C85DE2F792C2351 /* MASViewAttribute.m */, + D3820E233CF00BC12358A6933533641E /* MASViewConstraint.h */, + 10EE05DBE42A6614DA79D1BEB66A2C92 /* MASViewConstraint.m */, + AD2E16EE8AA02A8628E7EE00F2BF77D5 /* NSArray+MASAdditions.h */, + 7A2E85FBB5F16330D7FAE2D79407A245 /* NSArray+MASAdditions.m */, + BDF6BBCF8945B17E088F889E737F7B8F /* NSArray+MASShorthandAdditions.h */, + 86B844E4F895FFADBCA6CF6BFC4AD028 /* NSLayoutConstraint+MASDebugAdditions.h */, + 100ABAF7A3AED7337F3FBD90ED62C3AD /* NSLayoutConstraint+MASDebugAdditions.m */, + 3D7FD999A9265707D3F56E8485CAA43A /* View+MASAdditions.h */, + 1EC2A8E52EA723BE035616AA81660D3B /* View+MASAdditions.m */, + D376CD704B71D663D36312616FFCA034 /* View+MASShorthandAdditions.h */, + F81E8CC85FC6DA82D9996E25553C66B0 /* ViewController+MASAdditions.h */, + 4D5B2D028EBC7110C561F0E8D8F224FD /* ViewController+MASAdditions.m */, + 0609349F02E90B20478686C19E5658D3 /* Support Files */, ); path = Masonry; sourceTree = ""; }; - 5581FE04080C38739F704DF383FA1F99 /* AFNetworking */ = { + 781326E53CC5A1D82B27DA262E83A65E /* MJRefresh */ = { isa = PBXGroup; children = ( - 2FF2DB5E6B54E61B27C40DFA79934CD3 /* AFNetworking.h */, - 966B0D8142772C87DDA98C91ECFDE676 /* NSURLSession */, - DB8484AC53BF75C00EF1527132EFD5FD /* Reachability */, - F7134A06D82A3DC0B7B6425D7BE160C2 /* Security */, - 2E6C1FD120021C25738010A74DD481FE /* Serialization */, - FBFCE1F5FB947E9E857B2345ECCD395D /* Support Files */, - A5C62862FF09606C793CE96F48A47959 /* UIKit */, + 774FDE0A53FB938690A2E271AB0A46C2 /* MJRefresh.h */, + EE3BFAD28E86AC9809CA7C2CBFC911E5 /* MJRefreshAutoFooter.h */, + CD45825EEBD0163EE9FB8EEDC7A0F90D /* MJRefreshAutoFooter.m */, + 5949775C625EA1EEE420A09C6C6A52BC /* MJRefreshAutoGifFooter.h */, + 0E7688D1420CF3CC95D9756EFEBA3663 /* MJRefreshAutoGifFooter.m */, + 1646EB2464CDB0805FAC6B50A2547DEF /* MJRefreshAutoNormalFooter.h */, + 174D1FE9BD13E5A5C072725E113C5F3B /* MJRefreshAutoNormalFooter.m */, + AA4CCDCE7E63385692CFCF9DAE6DD2CC /* MJRefreshAutoStateFooter.h */, + 2C98530EBD2516774211F8604D4BBFD2 /* MJRefreshAutoStateFooter.m */, + 8627E5244705445780B7AA542A2E2176 /* MJRefreshBackFooter.h */, + ED0DE82EE46DBB7BC472C1BC398D24D0 /* MJRefreshBackFooter.m */, + 0AC6109DE3193204D0DC8923A8D71F87 /* MJRefreshBackGifFooter.h */, + 1B05901F997BDE533407C8246D826AB4 /* MJRefreshBackGifFooter.m */, + 7840D32EC7FB60CD40F3C7297EA5ADB2 /* MJRefreshBackNormalFooter.h */, + 128DF3E39AE465015605CC157F9F7011 /* MJRefreshBackNormalFooter.m */, + D00AF97A9E3A5EC9DE110424564294E7 /* MJRefreshBackStateFooter.h */, + 12FE78F4A6AC4AA4FD9B328A60EC96EE /* MJRefreshBackStateFooter.m */, + 4EC0084E645211B1D9723F14DD4F9B01 /* MJRefreshComponent.h */, + 6511CB57ABF435B7FBFA0F2D56F9E840 /* MJRefreshComponent.m */, + 2981C4EA74A303ACE65E68397D49FEA8 /* MJRefreshConst.h */, + 90D25DD6BB7C49D98467ACA69B02036C /* MJRefreshConst.m */, + 9EE6726B6D184945B3B051AB6C28D6B1 /* MJRefreshFooter.h */, + 1AB957B1EFADA88B53B579276A5D79F9 /* MJRefreshFooter.m */, + AD28C3909B847C7560C26722D8A6DE0B /* MJRefreshGifHeader.h */, + D4EB07DF0E0FC4632B99DD66919C6897 /* MJRefreshGifHeader.m */, + 833066B35D867F946A59CA7E70FE89C0 /* MJRefreshHeader.h */, + B54B65B232233F092549B4D5A3B03AFD /* MJRefreshHeader.m */, + BDCC350E982DBEC5987DDF7A741D9982 /* MJRefreshNormalHeader.h */, + 5FDEB158778A13DC31F77FBE45533089 /* MJRefreshNormalHeader.m */, + 5AF4110F05F21D931BA61267A30AFB5B /* MJRefreshStateHeader.h */, + B5A4E24CB981FE111C54F81C272F6AF9 /* MJRefreshStateHeader.m */, + 954FD526C33AC86AACD46E86C16C4E3F /* UIScrollView+MJExtension.h */, + 527B82412EF9A89489DB6F3CA407198B /* UIScrollView+MJExtension.m */, + 2985DC50EAB19FE6D21FEB7CD1B817D5 /* UIScrollView+MJRefresh.h */, + 8515DB09F2850606C80E7ACA02038157 /* UIScrollView+MJRefresh.m */, + 5480F9CD23E86F3A5EDA07228946FAEC /* UIView+MJExtension.h */, + 62AEFDF5C8A3AAD8C217265D4C201E41 /* UIView+MJExtension.m */, + 0BCA37D590D86F83F8C1E9E2F1EC3704 /* Resources */, + 9F43CECA58F8A5B1E86D141D409130E5 /* Support Files */, ); - path = AFNetworking; + path = MJRefresh; sourceTree = ""; }; - 59DB63C2B4F1E312EC7A8E4A871139B8 /* Tool */ = { + 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( - EC2B30EA59585F5DF87D928DC82EDBFB /* SUIMacro.h */, - 675AD442FB68BF8EDBE94A893169796A /* SUITool.h */, - 5DA5741DA7D754AD9BD62B0422C540D5 /* SUITool.m */, - 074F90D65D3059B8D5047408A8D1BCF8 /* SUITool+Camera.h */, - 9A048B4A1ABD0AD2EE7F08BC2FB4B3D1 /* SUITool+Camera.m */, - F38A2A22E72ADE8BF7F3F161E58BA6D7 /* SUITool+Delay.h */, - DCCB0CC5E4E5363DF0D6213928AEBC5C /* SUITool+Delay.m */, - A50D0CD737A10DEF326EAAB8DB44E12F /* SUITool+FileManager.h */, - 5F4FD7841330E99C3480A34479A206AA /* SUITool+FileManager.m */, - 4ECE77B92335AC850E12E1F04681CD16 /* SUITool+OpenURL.h */, - 239E2333E0BDF5C4669B5F4FBB549FB6 /* SUITool+OpenURL.m */, + BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, + F4CDA5FA9197A41E0081E84F932906EB /* Frameworks */, + 05899F7BF8C49137D23EC5012BCB3E5B /* Pods */, + BDD0D718EBDEE2EAA6AB8E9B99814913 /* Products */, + 037C0CA694176A3C0915F62C9D20B3E6 /* Targets Support Files */, ); - name = Tool; sourceTree = ""; }; - 60AE639890BB9C5BE433A6D8AF8C0FA0 /* Support Files */ = { + 830A5FBA2F18FA7AF5C7F055997F268C /* Support Files */ = { isa = PBXGroup; children = ( - CC071CA45D55BF95DF9C1EC22797B38F /* Masonry.xcconfig */, - 4ED83818A33CB5369A4C228050A64946 /* Masonry-dummy.m */, - 475110B5B36843BC6E17F59E7BA31EE8 /* Masonry-prefix.pch */, + F993C72E89533B38F1A18D169719CD41 /* UITableView+FDTemplateLayoutCell.xcconfig */, + 23759BAA9328DE107B5D2F7AF611D683 /* UITableView+FDTemplateLayoutCell-dummy.m */, + 0E4650F27E684E295C90BD8855D59503 /* UITableView+FDTemplateLayoutCell-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/Masonry"; - sourceTree = ""; - }; - 612604AA0BAEBD167AA58C88363FCFC2 /* SUIUtils */ = { - isa = PBXGroup; - children = ( - 45877DD7EF3684BB4D18151E52F63F40 /* SUIUtils.h */, - 1B09957B72DE6EED382B913F1BEFB096 /* Foundation */, - 7BC418D6EBC2CC8D94A8059B12FA6090 /* Helper */, - 09647F4D05B50E932F14C65C3B901C38 /* Support Files */, - 59DB63C2B4F1E312EC7A8E4A871139B8 /* Tool */, - FBBFFC6F99CC168CD243ABE4C9E86266 /* UIKit */, - ); - path = SUIUtils; - sourceTree = ""; - }; - 785553737B06AFC3DA711DDEB7D56194 /* Frameworks */ = { - isa = PBXGroup; - children = ( - F2E5A70EAD3F7482D3515F9ACE048AC8 /* iOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - 7BC418D6EBC2CC8D94A8059B12FA6090 /* Helper */ = { - isa = PBXGroup; - children = ( - 82E42A184544DB153569C29431E0AA3F /* SUITableHelper.h */, - ABB35875277969B9BEFAB3CCEB7533C1 /* SUITableHelper.m */, - C84CE66AACE57DC27BFF352499DD1BEA /* UITableView+SUIHelper.h */, - F71EEBEFB8037CF3E1E49B52DFB4B72D /* UITableView+SUIHelper.m */, - F952C1E10086C3BCDEEF2B7A385D7E93 /* UITableViewCell+SUIHelper.h */, - 9E8742705CF6EC8AC0DFB233B4E84857 /* UITableViewCell+SUIHelper.m */, - ); - name = Helper; - sourceTree = ""; - }; - 7DB346D0F39D3F0E887471402A8071AB = { - isa = PBXGroup; - children = ( - BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, - 785553737B06AFC3DA711DDEB7D56194 /* Frameworks */, - D1B7768BF0F2875269197324A01843D4 /* Pods */, - D8C103A920468519A1946B8225BD6B82 /* Products */, - 037C0CA694176A3C0915F62C9D20B3E6 /* Targets Support Files */, - ); + path = "../Target Support Files/UITableView+FDTemplateLayoutCell"; sourceTree = ""; }; - 7E8BA4F083801A1201FAEE5668BE65FA /* FMDB */ = { + 843A60FC9DEC19E0045CB88D6E9B40FC /* Security */ = { isa = PBXGroup; children = ( - 89932AD188309CE04CEB308A800AC720 /* standard */, - 1A205E3B728EC15BAEF78FDC4F38CD12 /* Support Files */, + 1E5B0254402E6886EEA9C80C8943BE69 /* AFSecurityPolicy.h */, + 1C3ADEDF7BCCDBDA366BDEE15B96F3C8 /* AFSecurityPolicy.m */, ); - path = FMDB; + name = Security; sourceTree = ""; }; - 86F3456961273F0A8CC710E7FCBB2501 /* Support Files */ = { + 86FE0E79FEC7E23D1B86F193C075F189 /* Support Files */ = { isa = PBXGroup; children = ( - 0797B901B0C68DF5BD8B8DE81FC2C309 /* SUIMVVMStore.xcconfig */, - CD7C38AC54050D4E1A20EDB09D8A6CCC /* SUIMVVMStore-dummy.m */, - DB3A5B0370A408058BFF3728AF72603B /* SUIMVVMStore-prefix.pch */, + 9105CB29073E853F54BF40AF80226ED4 /* MJExtension.xcconfig */, + A206BBDD832099989F9DBFAA083BEB02 /* MJExtension-dummy.m */, + A7642A6856DC087866B2A9EFE47148C4 /* MJExtension-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/SUIMVVMStore"; + path = "../Target Support Files/MJExtension"; sourceTree = ""; }; - 89932AD188309CE04CEB308A800AC720 /* standard */ = { + 95BCAA79676E262D1C870B4E468E9730 /* Support Files */ = { isa = PBXGroup; children = ( - A243EADC33B0D5A83FA3B22956481381 /* FMDatabase.h */, - 85A9D068D46A7B40282F447B23EEDC90 /* FMDatabase.m */, - EC2BCB85BA1EEBDFE50E2A440AE64D62 /* FMDatabaseAdditions.h */, - D5D3C174FF59C9579724FE750B56CAF8 /* FMDatabaseAdditions.m */, - BED0567F44F355586B84E585DB07A5F6 /* FMDatabasePool.h */, - 8C315A73039BA6459702CA757E1C536F /* FMDatabasePool.m */, - 91B40443DBC59E879FCEE7E0B67BEFC7 /* FMDatabaseQueue.h */, - EC961FC0913E999F7762F82C1C4F3E23 /* FMDatabaseQueue.m */, - 258C65375275724FA25F6F7DD10C4C5B /* FMDB.h */, - C78EFE41ECD981C1B4ADA370F3315C8E /* FMResultSet.h */, - A014B6C747F64C8FFE81D53C55C80649 /* FMResultSet.m */, + 16BBAE6DF6EA6512C5DA45FF67BAEFA7 /* AFNetworking.xcconfig */, + E69656B41F22382A19542C0FB8450771 /* AFNetworking-dummy.m */, + 8998D966A52D961DCEDF1F1EA5827C9B /* AFNetworking-prefix.pch */, ); - name = standard; + name = "Support Files"; + path = "../Target Support Files/AFNetworking"; sourceTree = ""; }; - 8A65BC32619538C31AB1903845351373 /* SUIMVVMStore */ = { + 9CC6931E19D35E8A2E82BE3BE090B5FC /* Reachability */ = { isa = PBXGroup; children = ( - 23CC52C6F84114294E5A2709CB63E4FF /* SMKStorePublic.h */, - FBFA49E4D3CA2BC8D3B3B5588EB816CA /* SUIMVVMStore */, - 86F3456961273F0A8CC710E7FCBB2501 /* Support Files */, - 09B75363315FDCA5050AC07B9F585C3C /* YTKKeyValueStore */, + 1B650FB5CDA18AB3B677E9E07DB497F6 /* AFNetworkReachabilityManager.h */, + 297CD5762F6DFCFDC679B16CA9E4F764 /* AFNetworkReachabilityManager.m */, ); - path = SUIMVVMStore; + name = Reachability; sourceTree = ""; }; - 8ED603CEDCC20E313C5F44BBB9E16564 /* Support Files */ = { + 9F43CECA58F8A5B1E86D141D409130E5 /* Support Files */ = { isa = PBXGroup; children = ( - 7950573D520C979A197B8AA6BC02CBCB /* MJRefresh.xcconfig */, - D0CDFCA3D33178C70D0E824F1027BB47 /* MJRefresh-dummy.m */, - 470B3C1867212BE94D66D940E6B6DBBC /* MJRefresh-prefix.pch */, + 838FE5FE3828FE91506CA671571FEC7B /* MJRefresh.xcconfig */, + 1C8F3502771945D97327DFC8DC847853 /* MJRefresh-dummy.m */, + 6287B179A06F0473DB6967600DFEF9E5 /* MJRefresh-prefix.pch */, ); name = "Support Files"; path = "../Target Support Files/MJRefresh"; sourceTree = ""; }; - 966B0D8142772C87DDA98C91ECFDE676 /* NSURLSession */ = { + A6225E96ACCF32D3C7B96826D4C274AC /* NSURLSession */ = { isa = PBXGroup; children = ( - 88D938C58CC019A545DA7E20581A92F8 /* AFHTTPSessionManager.h */, - C498DED67DF29B2243B7F50DC7F41740 /* AFHTTPSessionManager.m */, - 3185C56893BCA988650AA78810A09536 /* AFURLSessionManager.h */, - 7F20F5303729E78AB3F821F82F9C1E91 /* AFURLSessionManager.m */, + 6346978FC12DB5E561C46AB25E4C7497 /* AFHTTPSessionManager.h */, + B73769E85A147C3C154D12CC097DC89B /* AFHTTPSessionManager.m */, + BECCCE1FF9703FFD536406645F720F6A /* AFURLSessionManager.h */, + 955D7AFD3C6535339061A6C9BE52176B /* AFURLSessionManager.m */, ); name = NSURLSession; sourceTree = ""; }; - A5C62862FF09606C793CE96F48A47959 /* UIKit */ = { - isa = PBXGroup; - children = ( - C8A456A42C7E47747499CEADE8B12FD1 /* AFAutoPurgingImageCache.h */, - C91A760EEAECB3EF7329E12C168CFDD9 /* AFAutoPurgingImageCache.m */, - D3B6865FFDC1F2755F0F582EFE1C9B66 /* AFImageDownloader.h */, - BF687BB405A387DCB054002771545AD3 /* AFImageDownloader.m */, - 4D550B2FC901BE85A06F67A2B20B683E /* AFNetworkActivityIndicatorManager.h */, - 105F86BE270B468A75E040EC10CE4013 /* AFNetworkActivityIndicatorManager.m */, - AD063A4E43D8190A6DCDDBABEF66F4D5 /* UIActivityIndicatorView+AFNetworking.h */, - 5A01AD49F6651BDDACF4DFF1E7F3D13D /* UIActivityIndicatorView+AFNetworking.m */, - 7BFA38E3AD09F29CA20E144A1FD4DF71 /* UIButton+AFNetworking.h */, - B55294722C799E2CA1CE8E4AED8224E7 /* UIButton+AFNetworking.m */, - 2777465211FE64C414CD700B00770EAC /* UIImage+AFNetworking.h */, - 83EBFC68975E5F156614B8C429E0BCEF /* UIImageView+AFNetworking.h */, - 172F7B55FACC67F63F7C183110DFBCF9 /* UIImageView+AFNetworking.m */, - 3CA09D509ED5C3CE048090DC68D0FB60 /* UIKit+AFNetworking.h */, - D752AF623773B86CBA2C1CF45F59F6C5 /* UIProgressView+AFNetworking.h */, - 4964B2B6A7E55E69F740DF4D08557ED0 /* UIProgressView+AFNetworking.m */, - 3E1339508316363FEF5BAFBE18B9AAD5 /* UIRefreshControl+AFNetworking.h */, - AF0DDFFD30C5F8F0B5DEBB9B30EDFDA4 /* UIRefreshControl+AFNetworking.m */, - 4CFCED97A4E4862F7062640EFD288AEF /* UIWebView+AFNetworking.h */, - 393D9178B063973629F1D237657FD1A1 /* UIWebView+AFNetworking.m */, - ); - name = UIKit; - sourceTree = ""; - }; B3D1D13E0C6553800746CB8FD61CF946 /* Pods */ = { isa = PBXGroup; children = ( @@ -1131,177 +976,154 @@ path = "Target Support Files/Pods"; sourceTree = ""; }; - CCD17360328ED5E91B12080AA3C6E327 /* Support Files */ = { - isa = PBXGroup; - children = ( - 50EB75C23F491560780EDA86EE2E9750 /* MJExtension.xcconfig */, - 9888B3D31D806F032B78092C4F4BB8F9 /* MJExtension-dummy.m */, - 23B656232A54290A8F00D0520A2C8C2D /* MJExtension-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/MJExtension"; - sourceTree = ""; - }; - D1B7768BF0F2875269197324A01843D4 /* Pods */ = { + BDD0D718EBDEE2EAA6AB8E9B99814913 /* Products */ = { isa = PBXGroup; children = ( - 5581FE04080C38739F704DF383FA1F99 /* AFNetworking */, - 7E8BA4F083801A1201FAEE5668BE65FA /* FMDB */, - 547DC16311DC7E50C1C0BF9E2B8CD211 /* Masonry */, - FA29258E08520F3899614D17BABACD27 /* MJExtension */, - 52ADFC58CFEE47CE973023B793A057D2 /* MJRefresh */, - 2542A353E19CA9369BAF8523094F486F /* SUIMVVMNetwork */, - 8A65BC32619538C31AB1903845351373 /* SUIMVVMStore */, - 612604AA0BAEBD167AA58C88363FCFC2 /* SUIUtils */, - EC1E8A38D41B0016D17E38FB479C137E /* UITableView+FDTemplateLayoutCell */, + 75AC9848BEDE12BDEE13FCE070C14013 /* libAFNetworking.a */, + 3E35BD8FFF0387F46C46E61FE0E27815 /* libFMDB.a */, + BBE2CAA88E47AC6792EA30EAC8208990 /* libMasonry.a */, + C1FA70D055E440F568A54A8CB0241F8D /* libMJExtension.a */, + 8177EAAF91603A5CD9BD667763E0C122 /* libMJRefresh.a */, + FCCD832F66D06A508E52A264551009A7 /* libPods.a */, + 37B6D2457C0E379732EB073179CA4922 /* libSUIUtils.a */, + B858A4726F8436F49BF424DFFFE69780 /* libUITableView+FDTemplateLayoutCell.a */, ); - name = Pods; + name = Products; sourceTree = ""; }; - D8C103A920468519A1946B8225BD6B82 /* Products */ = { + C2DF267A2A1826B7201B9994C9DCC078 /* Helper */ = { isa = PBXGroup; children = ( - 392BEFF04768FB68D06A1631D268A5A0 /* libAFNetworking.a */, - 9640AE2AE84AE31DDE3BBD720104A17C /* libFMDB.a */, - 1078A47C6D694BB9CCA1A029F31732E0 /* libMasonry.a */, - DD1B5432C41770EB20F5E1B30D0D8BEA /* libMJExtension.a */, - 8FD957C842F110ACE2FBFD24BA5511FE /* libMJRefresh.a */, - 143087EE7C08F8932D0242F74BA37501 /* libPods.a */, - D9A1F1810E4963CF67D74819F2651638 /* libSUIMVVMNetwork.a */, - 9DE8804A36EFF9F00FFA83EBDF79F301 /* libSUIMVVMStore.a */, - 591D3827BDE11A5F7660F6DD29DD9264 /* libSUIUtils.a */, - 2A6C5F3E9EB26D1E5C33444190211353 /* libUITableView+FDTemplateLayoutCell.a */, + 80A8E587AFA485B9B2E9F9E25588628B /* SUITableHelper.h */, + C252CB228FB298444B468C555B0E40D8 /* SUITableHelper.m */, + FF13891BC8BF32792849908AFA8BCB58 /* UITableView+SUIHelper.h */, + 7FE28F10F33202D9F1E5F352064BEFE4 /* UITableView+SUIHelper.m */, + E15E41AD5E71788F624BF72F2ABDE6F7 /* UITableViewCell+SUIHelper.h */, + E8EBE6A0D5C237D73D59B1D8E75BACA1 /* UITableViewCell+SUIHelper.m */, ); - name = Products; + name = Helper; sourceTree = ""; }; - DB8484AC53BF75C00EF1527132EFD5FD /* Reachability */ = { + C4712B80EF0ECAED6410EEE835B94262 /* Tool */ = { isa = PBXGroup; children = ( - E5A72197DC34B5BDB7942C65DF84F514 /* AFNetworkReachabilityManager.h */, - 196D3F6A77CC2F8944FCD5B0E0240988 /* AFNetworkReachabilityManager.m */, + 11AD10BAF765E6340CF9B6184787E66B /* SUIMacro.h */, + 643F1FF72C3DB7B28497C2F887D044C0 /* SUITool.h */, + E3A5E39BACE21307BC35A98C91BE9B69 /* SUITool.m */, + E0C9E4B97056B00CBC37EFB2D3198869 /* SUITool+Camera.h */, + 68D274771711B0F1FB35E2283B5A84FB /* SUITool+Camera.m */, + 564CE3E609BCF7BD4A16DD5A07C19667 /* SUITool+Delay.h */, + 12B0C6E9CB7E0E689C426E2979D999F8 /* SUITool+Delay.m */, + 8C25FA8B31AFCBBD11167C56F5DFF614 /* SUITool+FileManager.h */, + 36602C6E2F7F1BD32E7205A3EEB7E444 /* SUITool+FileManager.m */, + E9C91AB3C81D2F5B13689C1D8FC67751 /* SUITool+OpenURL.h */, + 6EC3E4E0E2C6F59025BD28BBEEBD2284 /* SUITool+OpenURL.m */, ); - name = Reachability; + name = Tool; sourceTree = ""; }; - EC1E8A38D41B0016D17E38FB479C137E /* UITableView+FDTemplateLayoutCell */ = { + C9E16A036E65A56BCCA17EE4A9A1DA67 /* Support Files */ = { isa = PBXGroup; children = ( - DA73ED129794C22F0B534F1E4A81C854 /* UITableView+FDIndexPathHeightCache.h */, - 7D74D8977A08B1BCCF9F91FE53BAA8FF /* UITableView+FDIndexPathHeightCache.m */, - C597BA6C6047926F12E9F0012A8DCF0F /* UITableView+FDKeyedHeightCache.h */, - 597BB9E2812AEC266E883DAB9D231DFA /* UITableView+FDKeyedHeightCache.m */, - 14206B350069E0664CCF2DC97D1265BD /* UITableView+FDTemplateLayoutCell.h */, - D847E958B62337FA4DF048263D51DC5E /* UITableView+FDTemplateLayoutCell.m */, - B0BE7A25335F2139B318BDF827650809 /* UITableView+FDTemplateLayoutCellDebug.h */, - 8093A801250243C264FC0137421343AB /* UITableView+FDTemplateLayoutCellDebug.m */, - 40FC3226EBB9F5BD44B190BC58CAAE7D /* Support Files */, + BB3F1E239BE92C7B5FB7CAA579846AFD /* FMDB.xcconfig */, + 7B2F2C29D530ADB64496F14DCFFC6323 /* FMDB-dummy.m */, + 57B71F9C3EF932B34D6ED3A7AFCAC22E /* FMDB-prefix.pch */, ); - path = "UITableView+FDTemplateLayoutCell"; + name = "Support Files"; + path = "../Target Support Files/FMDB"; sourceTree = ""; }; - F2E5A70EAD3F7482D3515F9ACE048AC8 /* iOS */ = { + C9FF19A42AD69A41069DA62972A3FBA4 /* AFNetworking */ = { isa = PBXGroup; children = ( - EA414B85F8471D09D3EEE84AA664C405 /* CoreFoundation.framework */, - 3E52C5C1E169F6534FB47D920576E12E /* CoreGraphics.framework */, - 911EAAAC17F7C265314ED1815D6E5DFA /* Foundation.framework */, - DFE8BC28B49921E4DD5BE5B40D1B5517 /* MobileCoreServices.framework */, - 72F71C18C1470AB10885E2C81142B333 /* QuartzCore.framework */, - 59EF264AC4BDF4CC77D669C44BA52A3C /* Security.framework */, - EC6C864F80F372CD71886EF0770E0AB7 /* SystemConfiguration.framework */, - 9D4190C455A6175B48589924F50C141F /* UIKit.framework */, + 27FD7FE9D27FA5303FDCE45E79560EBF /* AFNetworking.h */, + A6225E96ACCF32D3C7B96826D4C274AC /* NSURLSession */, + 9CC6931E19D35E8A2E82BE3BE090B5FC /* Reachability */, + 843A60FC9DEC19E0045CB88D6E9B40FC /* Security */, + F6E156F7C5BB035FF54FF2E69222733F /* Serialization */, + 95BCAA79676E262D1C870B4E468E9730 /* Support Files */, + 6762AE95B181A28B077BB14EFB2DE8D5 /* UIKit */, ); - name = iOS; + path = AFNetworking; sourceTree = ""; }; - F7134A06D82A3DC0B7B6425D7BE160C2 /* Security */ = { + E0CC0511C249066DBC2C39B467E139CD /* Foundation */ = { isa = PBXGroup; children = ( - 22FCFD75D7B6369E6FB70FE41AC86C10 /* AFSecurityPolicy.h */, - 69D9BDD170979529631E1AA585692EA4 /* AFSecurityPolicy.m */, + 0170EB7E8B97588555A21D4CB80A1659 /* NSArray+SUIAdditions.h */, + A043C65981192AACD19CCE749C608CA7 /* NSArray+SUIAdditions.m */, + 3099C4A3494968896EEE4827E1FA8E13 /* NSArray+SUISafeAccess.h */, + AAAC39C18FD31AD8514B4689C9332481 /* NSArray+SUISafeAccess.m */, + 3CEC3489B2F200CCDC511865114BC2A8 /* NSData+SUIAdditions.h */, + 07B3546DDEDC9665FCD9C8E2E1AA3FBE /* NSData+SUIAdditions.m */, + A6E6F458B3F0EA7EC6131D07C3F08E22 /* NSDate+SUIAdditions.h */, + 81FCE53C759AAC4789567BB356228FC6 /* NSDate+SUIAdditions.m */, + 5973A05F30D00F7B7ABF6F7578EE823A /* NSDictionary+SUIAdditions.h */, + 5A36120AF1D091FB49A3C473DC9FAB62 /* NSDictionary+SUIAdditions.m */, + 7EC8FE231A6D7E5A49163CF31867DF6E /* NSDictionary+SUISafeAccess.h */, + B2BA97EAB4CB18D3B4D069880B7EB934 /* NSDictionary+SUISafeAccess.m */, + 4EC4B097ED20895E34630BFF56165EB3 /* NSIndexPath+SUIAdditions.h */, + 3CD547F0425C53067BF8C0730657D51E /* NSIndexPath+SUIAdditions.m */, + 4C374AC3B16E341D6757B40B6BE96BD9 /* NSNumber+SUIAdditions.h */, + 30B946220F60EA46C69D0AE9980FC996 /* NSNumber+SUIAdditions.m */, + AAA7911D1170B1B26C80E689A6E9E963 /* NSObject+SUIAdditions.h */, + 792BFF12C1BA0861297C29A5FE6D9B02 /* NSObject+SUIAdditions.m */, + B92439FC023C6AC4698E23DF854D6E1B /* NSString+SUIAdditions.h */, + C34A74804543760ADEA0EAF1FC81F94C /* NSString+SUIAdditions.m */, + 4A5C91651E9F9ED24E134C4272C67F02 /* NSString+SUICrypto.h */, + E996FE6F11C6ED0A2BEB8BE2523AC7C1 /* NSString+SUICrypto.m */, + B136986315687D15D70F94EE0895A747 /* NSString+SUIRegex.h */, + 5E791BF1025ED56E4A8BAAF1356E9154 /* NSString+SUIRegex.m */, ); - name = Security; + name = Foundation; sourceTree = ""; }; - FA29258E08520F3899614D17BABACD27 /* MJExtension */ = { + E13475A6C9865342030A7A83989DD58C /* standard */ = { isa = PBXGroup; children = ( - D9F84F737228F7BB1AABB654A1F97A9D /* MJExtension.h */, - 205E19B5BA07CCEE654F8E6866827F10 /* MJExtensionConst.h */, - A9282DBEF7E5669EA48167DD5891119B /* MJExtensionConst.m */, - C68EECFB4ECFED6D3FDA046391F8F37F /* MJFoundation.h */, - 4245AAAD01A988A69824F26E18A2551E /* MJFoundation.m */, - B792CF9055249AA2FD5FF1F7B2D17B57 /* MJProperty.h */, - 8EF11E3745619E54C3500457158FB2F4 /* MJProperty.m */, - EFBE4A92DBDBAA9B69BC859D895ABCA0 /* MJPropertyKey.h */, - 46A45C99967416595E861C0F26D2E713 /* MJPropertyKey.m */, - 7419F6054C443C52A63B9A448146AD4A /* MJPropertyType.h */, - 5FFAC2869A7D4CCB7B971B1E10AE1099 /* MJPropertyType.m */, - 3E5049EB9380E01D36CC2B4C562E4E52 /* NSObject+MJClass.h */, - 5D8067639CAD63B7BE8AD7E46AB0BA29 /* NSObject+MJClass.m */, - 87E3FB062300CE3AC93081880D9A6A50 /* NSObject+MJCoding.h */, - 40616BE86694452804F1FB3E5D62A5AD /* NSObject+MJCoding.m */, - E2511A580BF5B0BA04101BBA2365BFE9 /* NSObject+MJKeyValue.h */, - 34B3478207A0C925375FF3CD62AE31AE /* NSObject+MJKeyValue.m */, - A30A4AB892328586893E5B2241D4E0A0 /* NSObject+MJProperty.h */, - 19E9B9FC2AEC6D3B4052565C46758BFE /* NSObject+MJProperty.m */, - C642305BD8446842D0C5F00811D7F77A /* NSString+MJExtension.h */, - 6FAC87B3160B76A49B6B2DBA0A500620 /* NSString+MJExtension.m */, - CCD17360328ED5E91B12080AA3C6E327 /* Support Files */, + 3D349450B4C97916FC25720CBD7AF22C /* FMDatabase.h */, + 32FF827AFEAAE10B02CAB219A7762DEC /* FMDatabase.m */, + B62596E7666D9F7D65A8C64A10093C77 /* FMDatabaseAdditions.h */, + 4C4C730DB570BFA1137E286B65838466 /* FMDatabaseAdditions.m */, + 828CE2ABBC2B706222297001ECA4A563 /* FMDatabasePool.h */, + B9E66F5779DEBF1C9365E1D6C61156F4 /* FMDatabasePool.m */, + F3DFBB69D0A0127D9C5044F27367BC3D /* FMDatabaseQueue.h */, + 46B70318359006A5737977B177CD39B0 /* FMDatabaseQueue.m */, + 5BD6B278BBEF46C4CB5E53491EA7B614 /* FMDB.h */, + 0FA4FB66E799732C75C8F75519433E47 /* FMResultSet.h */, + CDDE238D34609C0EC7E6B44BF198D54F /* FMResultSet.m */, ); - path = MJExtension; + name = standard; sourceTree = ""; }; - FBBFFC6F99CC168CD243ABE4C9E86266 /* UIKit */ = { + F4CDA5FA9197A41E0081E84F932906EB /* Frameworks */ = { isa = PBXGroup; children = ( - FFE0CE98BAD9FB9A19DDCAC6E100CC73 /* UIButton+SUIAdditions.h */, - 8150593B594AC228A007401525DB3F47 /* UIButton+SUIAdditions.m */, - F45BDD15E43C8E3D05D90C0A3C8F631D /* UIControl+SUIAdditions.h */, - 97ABC0CB824F2E643E041DB7AA28EC2A /* UIControl+SUIAdditions.m */, - 1F9D7C599886FDE939C0A09D27DCF467 /* UIImage+SUIAdditions.h */, - A29B5117DED59B7DC3580DFA14D1EC49 /* UIImage+SUIAdditions.m */, - 3AD21E9D043BC8BC8F8731ED4B4B901E /* UILabel+SUIAdditions.h */, - 55A29F20E93BF3A47E3D76A1ACFABD61 /* UILabel+SUIAdditions.m */, - D8DCE125D44D619256F04ECF2E994F67 /* UINavigationController+SUIAdditions.h */, - 58EED4A76CE924CB7802D03BF0F6C5CB /* UINavigationController+SUIAdditions.m */, - 4FC7341F2223027217659EA0C1BC121D /* UIScrollView+SUIAdditions.h */, - 9C7760C531F2B1243782F464D341D581 /* UIScrollView+SUIAdditions.m */, - 990476090F2956D7717793EC56EEF10E /* UIStoryboardSegue+SUIAdditions.h */, - 9B9E83B38B5D1AFEEB781B508B5FE916 /* UIStoryboardSegue+SUIAdditions.m */, - 326913FF2522C04BFF71622FB2468488 /* UITableViewCell+SUIAdditions.h */, - 7E14E05AAF2C09432FD57FF45EC463B1 /* UITableViewCell+SUIAdditions.m */, - 27A40243CA1737A29F05552C8794FD0A /* UITextField+SUIAdditions.h */, - 44C44A8F46E615F6A1F5DC91314EEC94 /* UITextField+SUIAdditions.m */, - 90E768556D287A05668796B51C74E055 /* UITextView+SUIAdditions.h */, - DAE94DD1B536C492E1BB6542782E0DA0 /* UITextView+SUIAdditions.m */, - 9180BF8088F82A519829D835F8D858F4 /* UIView+SUIAdditions.h */, - AA3E0B0762EDAC5A5F7D5D699BDC3D64 /* UIView+SUIAdditions.m */, - F873C6388770EC12608957EB0E16A457 /* UIViewController+SUIAdditions.h */, - 1A6AD16D168F70207C9D34A034754FAC /* UIViewController+SUIAdditions.m */, + 336D910CCEE0EF72765AF5FF0F2FF036 /* iOS */, ); - name = UIKit; + name = Frameworks; sourceTree = ""; }; - FBFA49E4D3CA2BC8D3B3B5588EB816CA /* SUIMVVMStore */ = { + F6E156F7C5BB035FF54FF2E69222733F /* Serialization */ = { isa = PBXGroup; children = ( - 8955BE8BF33D620050025F8FA6CEF3D5 /* SMKStore.h */, - CDDE955FAEDA3675119E3E458E3E81FD /* SMKStore.m */, + 36BAD56C58FAE5092512CC8003A1EE52 /* AFURLRequestSerialization.h */, + EC806B19BF45883DF78BC33958C0869E /* AFURLRequestSerialization.m */, + 3EB50C70E4153FC354C90617AC561A77 /* AFURLResponseSerialization.h */, + 46BA6DC99CD9001C65D4B6A637F6F30E /* AFURLResponseSerialization.m */, ); - name = SUIMVVMStore; + name = Serialization; sourceTree = ""; }; - FBFCE1F5FB947E9E857B2345ECCD395D /* Support Files */ = { + F865FA1FEC462A34B6E3C91CFD8DEDC0 /* Support Files */ = { isa = PBXGroup; children = ( - FBB07B6FB3352583758E377B68E4277A /* AFNetworking.xcconfig */, - 8DCA6FD2ED577FCB5C8E19D333C8A71F /* AFNetworking-dummy.m */, - FD402C814389A8191C1EC7A838830C33 /* AFNetworking-prefix.pch */, + A80208FE75F5DB14C4A13663290EA81F /* SUIUtils.xcconfig */, + FC25865C412D2AC4A11E9235B60F033E /* SUIUtils-dummy.m */, + 4212E390690F97D84CEE986298302BB4 /* SUIUtils-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/AFNetworking"; + path = "../Target Support Files/SUIUtils"; sourceTree = ""; }; /* End PBXGroup section */ @@ -1333,14 +1155,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 2B8463370E81AEEACF68C3706FD29706 /* Headers */ = { + 0EF90345C6974BD9C1036F604B6309CD /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B3083EF6495C527A6BFE0F090E82789D /* UITableView+FDIndexPathHeightCache.h in Headers */, - 2D3B3C70AFF05F5382CC7B96D52F87BC /* UITableView+FDKeyedHeightCache.h in Headers */, - CD147296D923A3825A66E67E1E45165F /* UITableView+FDTemplateLayoutCell.h in Headers */, - 9CA89532BC0DBA2BF7612518FDA24421 /* UITableView+FDTemplateLayoutCellDebug.h in Headers */, + AD0CBF1D68B4D107B089E15DD571D9FA /* UITableView+FDIndexPathHeightCache.h in Headers */, + 5B133888FC8BB8482229BB9589E9FD52 /* UITableView+FDKeyedHeightCache.h in Headers */, + F84DD5EF58B33249C72BE91B68F2C5F4 /* UITableView+FDTemplateLayoutCell.h in Headers */, + E4D474A0EE428A14440F36FB3E89E66A /* UITableView+FDTemplateLayoutCellDebug.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1379,54 +1201,44 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 8FCE7F64DA407D27A89CB58631778A9E /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - D5CD34E04C8057BCA1BC62DEF53DA7A9 /* SMKStore.h in Headers */, - 962AFA18C572B2C2471789AFB6B5DE3F /* SMKStorePublic.h in Headers */, - D48B9DD2D6947B38958FE0F2094F5046 /* YTKKeyValueStore.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B593E01263B389661286531003EBE42C /* Headers */ = { + 9E13D790846463E6B5DC146926B5B219 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 607E89BF81883EA1AA7B9ECE3D3C9AE4 /* NSArray+SUIAdditions.h in Headers */, - 1193250A62D6F0C228E9E7F9A26966C9 /* NSArray+SUISafeAccess.h in Headers */, - B1C79607B754B6275C09FD6F60E302EE /* NSData+SUIAdditions.h in Headers */, - B32AB59E5013889D47FD4B53CFF642EA /* NSDate+SUIAdditions.h in Headers */, - FC368AE8BE0F1AC15E29048347B2E421 /* NSDictionary+SUIAdditions.h in Headers */, - 631F40BD5A8938181AECF4B56BA75728 /* NSDictionary+SUISafeAccess.h in Headers */, - 622A8B0195845AFACD007DAD1B1F227F /* NSIndexPath+SUIAdditions.h in Headers */, - 4B58D0B52C05323CDFE6B741ABED2CF9 /* NSNumber+SUIAdditions.h in Headers */, - B7778D0631AAB46C9D385E43E692BEDE /* NSObject+SUIAdditions.h in Headers */, - 11DAB4024920217532822DC428BB9CB8 /* NSString+SUIAdditions.h in Headers */, - C29DF627F41B7438B3B37ADD4AB27DE1 /* NSString+SUICrypto.h in Headers */, - 8C5B28EC428120AA784D773B284A4DE5 /* NSString+SUIRegex.h in Headers */, - BD116C311C547E8B050EC9ECF2B02ACD /* SUIMacro.h in Headers */, - 6FDF583204FA3ABB8690BAB45631537D /* SUITableHelper.h in Headers */, - E0EB542E028854CA91A18AE42881132D /* SUITool+Camera.h in Headers */, - B830C1BE45CD2C60AC06CCDD86FDA443 /* SUITool+Delay.h in Headers */, - EFA628D6E506005AF550AAEC59E5CB0E /* SUITool+FileManager.h in Headers */, - B91534E72FAE30BB0FE1DCEED16745E4 /* SUITool+OpenURL.h in Headers */, - 3BC5FF07EC4490F9545FC810A262D5A7 /* SUITool.h in Headers */, - 4BDE3F2C9BA65FFF3F71DA3F26718F70 /* SUIUtils.h in Headers */, - 7BAC7266EBD2E1420C9B3009555D6E40 /* UIButton+SUIAdditions.h in Headers */, - F5434E3992B0EF2690B034BAEC262A5A /* UIControl+SUIAdditions.h in Headers */, - F34556ACC4246F75F6F8E2EDC153CB6C /* UIImage+SUIAdditions.h in Headers */, - 7EF258E2949C98D0B48D5E2595886C48 /* UILabel+SUIAdditions.h in Headers */, - FA25FAC125B9F2CA29AAF0FCB1345B0F /* UINavigationController+SUIAdditions.h in Headers */, - 577A24B1BD2D6079AA405ED1AC805E4B /* UIScrollView+SUIAdditions.h in Headers */, - 63CBFD719FD58B11F96D99248C807C53 /* UIStoryboardSegue+SUIAdditions.h in Headers */, - B8E1509B2656A469D2CAC9F86193F8E6 /* UITableView+SUIHelper.h in Headers */, - CA265C51C89714E149E4AE00A65C10D7 /* UITableViewCell+SUIAdditions.h in Headers */, - 5BAAB79E15C8B31032FF80BEE81D54A2 /* UITableViewCell+SUIHelper.h in Headers */, - FC9288F546BA266AC32D5752DDC425D9 /* UITextField+SUIAdditions.h in Headers */, - 4F7E08FD16EB7576B6937C2F10DDB80E /* UITextView+SUIAdditions.h in Headers */, - 8933CDC7595BF3CC651D36A8BF0FF467 /* UIView+SUIAdditions.h in Headers */, - 8939901056B29562834A4566B0A77493 /* UIViewController+SUIAdditions.h in Headers */, + 0E9CC9CE86CD9E25E751565F26ED9D0A /* NSArray+SUIAdditions.h in Headers */, + 42840353A7FA0C803A3451F09FBEA4B1 /* NSArray+SUISafeAccess.h in Headers */, + 4AD56C60A99482C5E948597A038942E6 /* NSData+SUIAdditions.h in Headers */, + 9C44E50363E453B58A0C4C27D57C7F88 /* NSDate+SUIAdditions.h in Headers */, + 0D5C0360253C25079582B4738D835EDD /* NSDictionary+SUIAdditions.h in Headers */, + 844741D70A8C623A7916C1E81BB69211 /* NSDictionary+SUISafeAccess.h in Headers */, + D42CD13C478715BC1F158C7093C27501 /* NSIndexPath+SUIAdditions.h in Headers */, + FDDD9274E9C6431E0ED4E4AA86B301CE /* NSNumber+SUIAdditions.h in Headers */, + 05D6282BFB984B52C4AA179DED8648D9 /* NSObject+SUIAdditions.h in Headers */, + 0984A026D8B0F948E7A12869D5B48CA0 /* NSString+SUIAdditions.h in Headers */, + 3742B40E9674A19D5DBAF287B47837F0 /* NSString+SUICrypto.h in Headers */, + 0FE0D3FBB070A8F51C124CA0C842691B /* NSString+SUIRegex.h in Headers */, + 810274661317B992EEF07BACFFDB6CF3 /* SUIMacro.h in Headers */, + E5D52102945E4B3F9375EA248F8AA101 /* SUITableHelper.h in Headers */, + 8E64C2E9785DEA585B6F5B1F8F504CE1 /* SUITool+Camera.h in Headers */, + 3D154E0580CB18625F5FA28B4B8EBBA9 /* SUITool+Delay.h in Headers */, + 0741FF4B3A48E898E7B2EBD53E7331DA /* SUITool+FileManager.h in Headers */, + DBEF28E06243CA47D7EA6074214B609B /* SUITool+OpenURL.h in Headers */, + 579D2AAEE420D435F8A41E11DF99F3F3 /* SUITool.h in Headers */, + FC20389F66FC91E1BDA181376C5C6DF2 /* SUIUtils.h in Headers */, + 33634D35DE3745B445A1291F6785896E /* UIButton+SUIAdditions.h in Headers */, + 288565BAD234D2AB112D42563BA40757 /* UIControl+SUIAdditions.h in Headers */, + 7889B8B31B03759B298E46626BCF6AEB /* UIImage+SUIAdditions.h in Headers */, + 1200E7640F89B5561A73D70F27DAC366 /* UILabel+SUIAdditions.h in Headers */, + 5AD390BEA253E9E8A17BC0C962F88170 /* UINavigationController+SUIAdditions.h in Headers */, + 4D08A7D2DD62F3106495CC380F5DA61F /* UIScrollView+SUIAdditions.h in Headers */, + F4B95D2102DC0F66F0106526F1746467 /* UIStoryboardSegue+SUIAdditions.h in Headers */, + ADB5B298197DCD605E98B3000AAB3918 /* UITableView+SUIHelper.h in Headers */, + CB84C5686E993AF4B35F95BE3F89965F /* UITableViewCell+SUIAdditions.h in Headers */, + 8273AE0860821264EA610912A694AADC /* UITableViewCell+SUIHelper.h in Headers */, + 1EA2BF2F62083E34B6434EAEBA5EBAD2 /* UITextField+SUIAdditions.h in Headers */, + E83767E6CB8DDA3D2C8A48ACD42DEABD /* UITextView+SUIAdditions.h in Headers */, + B372436C0272E7F46CBA19CAF8740447 /* UIView+SUIAdditions.h in Headers */, + 82D39D8B5AAE287332CC36580E41622A /* UIViewController+SUIAdditions.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1455,18 +1267,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E024426E66964A060E568537426D7712 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - F60A2B84B40CB737A1FA98BFB3FDDD27 /* SMKDataService.h in Headers */, - 3B2DF3D61CE9BE6BA8AB517072064324 /* SMKHttp.h in Headers */, - 9BC54E7F40F6A6635E32D5D13CD3FC1A /* SMKHttpConfig.h in Headers */, - 9C7615F9A7B5FC00EBDB0524AFC85F4D /* SMKNetworkPublic.h in Headers */, - A69B93EBD2CEAAEEFB1C13EA0D139B4A /* SMKSingleton.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; F95AF419D96CDED026D79CDD7A3B3023 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -1488,57 +1288,62 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 53480ED0BE09FF49E34B1702D485CAAB /* Masonry */ = { + 28F672B68C1588F15D7D680D5E25F30D /* Pods */ = { isa = PBXNativeTarget; - buildConfigurationList = B6653DB75D219E078020C341A7D83ECE /* Build configuration list for PBXNativeTarget "Masonry" */; + buildConfigurationList = 556C4A141EDB0A0BE926865F9A962038 /* Build configuration list for PBXNativeTarget "Pods" */; buildPhases = ( - DC8579C657135E3C32AB580A48C6D524 /* Sources */, - FAB9E9D9BBDB93399D3C2B91469EC4B6 /* Frameworks */, - 657D857047A6A935B5A2E9BD049194F2 /* Headers */, + C68A1BEF2F31BD945F578E4B943631F1 /* Sources */, + 42F84C02576E1C17C27EBCA1C67ECF9A /* Frameworks */, ); buildRules = ( ); dependencies = ( + 93EECBA21CD609C7B706413DC7179434 /* PBXTargetDependency */, + B47285ECFA1D52909FC567BCC065BF31 /* PBXTargetDependency */, + 7A467C6E7139909AA48920D7B18557CD /* PBXTargetDependency */, + C08DC78F703141CC223DE7C264C46D9C /* PBXTargetDependency */, + BEBE1225F3A27B9A858EF44008D36ABC /* PBXTargetDependency */, + 74D2BFA124EFB3D38DE9A21599F8A5A9 /* PBXTargetDependency */, + B82E01B45FDAB7922CA4BD05034E7014 /* PBXTargetDependency */, ); - name = Masonry; - productName = Masonry; - productReference = 1078A47C6D694BB9CCA1A029F31732E0 /* libMasonry.a */; + name = Pods; + productName = Pods; + productReference = FCCD832F66D06A508E52A264551009A7 /* libPods.a */; productType = "com.apple.product-type.library.static"; }; - 694FBCC94CD4312B41BA76B6DA74EE8F /* SUIUtils */ = { + 302F3E8524A04C89AC13E950D661566F /* SUIUtils */ = { isa = PBXNativeTarget; - buildConfigurationList = E3075258EFB7D0F2C4A1F29B04D939D0 /* Build configuration list for PBXNativeTarget "SUIUtils" */; + buildConfigurationList = BA098629EE97B2CF11AF87060D06FBE1 /* Build configuration list for PBXNativeTarget "SUIUtils" */; buildPhases = ( - 5B7DFB79A34730F05E2FFA5C3D824B28 /* Sources */, - 3A72B6F69CD85241DC3AF9B2786F202B /* Frameworks */, - B593E01263B389661286531003EBE42C /* Headers */, + 393766C4E462FEEBA99E8DC0D4F9D59C /* Sources */, + 749A000D62471601BC68E14DF137965C /* Frameworks */, + 9E13D790846463E6B5DC146926B5B219 /* Headers */, ); buildRules = ( ); dependencies = ( - 6D0D0DB65C8924E2E32E207A44DF6E7A /* PBXTargetDependency */, + 5F181A2C6B41C62B739CD2333C9871E6 /* PBXTargetDependency */, ); name = SUIUtils; productName = SUIUtils; - productReference = 591D3827BDE11A5F7660F6DD29DD9264 /* libSUIUtils.a */; + productReference = 37B6D2457C0E379732EB073179CA4922 /* libSUIUtils.a */; productType = "com.apple.product-type.library.static"; }; - 786AB65C802E77BD8A20249245B255A5 /* SUIMVVMStore */ = { + 53480ED0BE09FF49E34B1702D485CAAB /* Masonry */ = { isa = PBXNativeTarget; - buildConfigurationList = 8B63EC9995B84752F801B123A9A1E24D /* Build configuration list for PBXNativeTarget "SUIMVVMStore" */; + buildConfigurationList = B6653DB75D219E078020C341A7D83ECE /* Build configuration list for PBXNativeTarget "Masonry" */; buildPhases = ( - C8E954B943DFEDFF0B21D95AB84BDB2D /* Sources */, - B064E30DDF6B22E71DD9600E5E04D801 /* Frameworks */, - 8FCE7F64DA407D27A89CB58631778A9E /* Headers */, + DC8579C657135E3C32AB580A48C6D524 /* Sources */, + FAB9E9D9BBDB93399D3C2B91469EC4B6 /* Frameworks */, + 657D857047A6A935B5A2E9BD049194F2 /* Headers */, ); buildRules = ( ); dependencies = ( - D46485C9161930FD3A8C6FE36D8596DC /* PBXTargetDependency */, ); - name = SUIMVVMStore; - productName = SUIMVVMStore; - productReference = 9DE8804A36EFF9F00FFA83EBDF79F301 /* libSUIMVVMStore.a */; + name = Masonry; + productName = Masonry; + productReference = BBE2CAA88E47AC6792EA30EAC8208990 /* libMasonry.a */; productType = "com.apple.product-type.library.static"; }; 8F74D9EA91F4C43190670066BAC37D44 /* MJRefresh */ = { @@ -1555,24 +1360,7 @@ ); name = MJRefresh; productName = MJRefresh; - productReference = 8FD957C842F110ACE2FBFD24BA5511FE /* libMJRefresh.a */; - productType = "com.apple.product-type.library.static"; - }; - 927A7C8415E965039D8FC3D5517E431A /* UITableView+FDTemplateLayoutCell */ = { - isa = PBXNativeTarget; - buildConfigurationList = 62FEF5F7B82A71158A4242D694A169DA /* Build configuration list for PBXNativeTarget "UITableView+FDTemplateLayoutCell" */; - buildPhases = ( - 093E02374E0325332016F016824C1277 /* Sources */, - FDBC3BADAFE6700941603123B6A29E76 /* Frameworks */, - 2B8463370E81AEEACF68C3706FD29706 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "UITableView+FDTemplateLayoutCell"; - productName = "UITableView+FDTemplateLayoutCell"; - productReference = 2A6C5F3E9EB26D1E5C33444190211353 /* libUITableView+FDTemplateLayoutCell.a */; + productReference = 8177EAAF91603A5CD9BD667763E0C122 /* libMJRefresh.a */; productType = "com.apple.product-type.library.static"; }; 928353533005A4198EBDA5B700D37B64 /* AFNetworking */ = { @@ -1589,7 +1377,7 @@ ); name = AFNetworking; productName = AFNetworking; - productReference = 392BEFF04768FB68D06A1631D268A5A0 /* libAFNetworking.a */; + productReference = 75AC9848BEDE12BDEE13FCE070C14013 /* libAFNetworking.a */; productType = "com.apple.product-type.library.static"; }; 9EAB3E42EF957541E6C3C76D35FD008E /* MJExtension */ = { @@ -1606,7 +1394,7 @@ ); name = MJExtension; productName = MJExtension; - productReference = DD1B5432C41770EB20F5E1B30D0D8BEA /* libMJExtension.a */; + productReference = C1FA70D055E440F568A54A8CB0241F8D /* libMJExtension.a */; productType = "com.apple.product-type.library.static"; }; 9F12FB4A63E20F601CFB2E64A65B57C1 /* FMDB */ = { @@ -1623,51 +1411,24 @@ ); name = FMDB; productName = FMDB; - productReference = 9640AE2AE84AE31DDE3BBD720104A17C /* libFMDB.a */; - productType = "com.apple.product-type.library.static"; - }; - AB9A6857505BBD43950487C929E69A0E /* Pods */ = { - isa = PBXNativeTarget; - buildConfigurationList = 318A4247B238FF36DB8F5434BC27625A /* Build configuration list for PBXNativeTarget "Pods" */; - buildPhases = ( - 06DC024BF9413F8370624A0E22E221A0 /* Sources */, - 813FB1530F457BD76DABCDC7545352D8 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 21D4009EB9E5C6F05FE572BCA103400C /* PBXTargetDependency */, - 7C0EC2556AF8E50E753EDE96FD1F7A15 /* PBXTargetDependency */, - 23915C0E0F4AE620F0F7D33C90092859 /* PBXTargetDependency */, - 47AECE6BC816D579A658B97C488C82A5 /* PBXTargetDependency */, - 1E7002875850411298904D263C0EAAE2 /* PBXTargetDependency */, - 623AC01ED79D07393DF6699C3AC4338C /* PBXTargetDependency */, - 9078D71DF4FFA397D852D9C1FEEC1DDA /* PBXTargetDependency */, - F07A8924EB5095E8F9E20B0B88975AEE /* PBXTargetDependency */, - ABAEE09319C66165D83C6EC72DE589C2 /* PBXTargetDependency */, - ); - name = Pods; - productName = Pods; - productReference = 143087EE7C08F8932D0242F74BA37501 /* libPods.a */; + productReference = 3E35BD8FFF0387F46C46E61FE0E27815 /* libFMDB.a */; productType = "com.apple.product-type.library.static"; }; - CE848D5E1D43BFE24B77A00D5AE5F6EC /* SUIMVVMNetwork */ = { + EBF5F1CD8EF09DCCBB9FD0686ECFB511 /* UITableView+FDTemplateLayoutCell */ = { isa = PBXNativeTarget; - buildConfigurationList = 387BF1714BAD3DD3155B00A751D79B88 /* Build configuration list for PBXNativeTarget "SUIMVVMNetwork" */; + buildConfigurationList = 5C2DB5CECC7498F332FF63202D227FFA /* Build configuration list for PBXNativeTarget "UITableView+FDTemplateLayoutCell" */; buildPhases = ( - 6011108DD6AEDA503F9EE80929F6C6E3 /* Sources */, - D5D579072D9E78F6CDEF56F08D9212C7 /* Frameworks */, - E024426E66964A060E568537426D7712 /* Headers */, + DDE56653CECA82C394F97F0D199F7FAA /* Sources */, + 303C8CAFD861DA53B6D204C8B3342D84 /* Frameworks */, + 0EF90345C6974BD9C1036F604B6309CD /* Headers */, ); buildRules = ( ); dependencies = ( - 25610B89A7800135716B288C347E975E /* PBXTargetDependency */, - B9D960272F29CF5B518DF356C9245E94 /* PBXTargetDependency */, ); - name = SUIMVVMNetwork; - productName = SUIMVVMNetwork; - productReference = D9A1F1810E4963CF67D74819F2651638 /* libSUIMVVMNetwork.a */; + name = "UITableView+FDTemplateLayoutCell"; + productName = "UITableView+FDTemplateLayoutCell"; + productReference = B858A4726F8436F49BF424DFFFE69780 /* libUITableView+FDTemplateLayoutCell.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -1687,7 +1448,7 @@ en, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = D8C103A920468519A1946B8225BD6B82 /* Products */; + productRefGroup = BDD0D718EBDEE2EAA6AB8E9B99814913 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( @@ -1696,11 +1457,9 @@ 53480ED0BE09FF49E34B1702D485CAAB /* Masonry */, 9EAB3E42EF957541E6C3C76D35FD008E /* MJExtension */, 8F74D9EA91F4C43190670066BAC37D44 /* MJRefresh */, - AB9A6857505BBD43950487C929E69A0E /* Pods */, - CE848D5E1D43BFE24B77A00D5AE5F6EC /* SUIMVVMNetwork */, - 786AB65C802E77BD8A20249245B255A5 /* SUIMVVMStore */, - 694FBCC94CD4312B41BA76B6DA74EE8F /* SUIUtils */, - 927A7C8415E965039D8FC3D5517E431A /* UITableView+FDTemplateLayoutCell */, + 28F672B68C1588F15D7D680D5E25F30D /* Pods */, + 302F3E8524A04C89AC13E950D661566F /* SUIUtils */, + EBF5F1CD8EF09DCCBB9FD0686ECFB511 /* UITableView+FDTemplateLayoutCell */, ); }; /* End PBXProject section */ @@ -1719,26 +1478,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 06DC024BF9413F8370624A0E22E221A0 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 416645E06D92F7C7BAF8B7E2AEB46DE3 /* Pods-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 093E02374E0325332016F016824C1277 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C60EF4146131236D32694DFD91170B40 /* UITableView+FDIndexPathHeightCache.m in Sources */, - 868AC6EE32D16E3A6A59428E86D3BB2D /* UITableView+FDKeyedHeightCache.m in Sources */, - 28035A03F1D8500D4AEDE02BEF206644 /* UITableView+FDTemplateLayoutCell-dummy.m in Sources */, - D458D0194FD6EB04E00D04DC74BC018B /* UITableView+FDTemplateLayoutCell.m in Sources */, - 263F30C6D2735B765BA8F45BF5469A1B /* UITableView+FDTemplateLayoutCellDebug.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 2CBFB844B4D7FEB4FF2F11CAE31CAD75 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1783,64 +1522,51 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 5B7DFB79A34730F05E2FFA5C3D824B28 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 644CE839F7275468D32A2AB26C03F691 /* NSArray+SUIAdditions.m in Sources */, - 331753698DE178FC3F0DF298D741D7C9 /* NSArray+SUISafeAccess.m in Sources */, - 9D9DBBA0D966D6488C7CA2B668EC45A4 /* NSData+SUIAdditions.m in Sources */, - 6F07DB65C9F9C55FCF6302DD17BBB66E /* NSDate+SUIAdditions.m in Sources */, - C07B9A9C4DAA23D7BC3973E8E3312601 /* NSDictionary+SUIAdditions.m in Sources */, - BC8D9D2C6322CA8D83DADAA37BDA0C9F /* NSDictionary+SUISafeAccess.m in Sources */, - 35560A3E8BDEDCB3B8859B09E236A7C3 /* NSIndexPath+SUIAdditions.m in Sources */, - C7F37D8F206A610D7E4220FD5CB3B4DD /* NSNumber+SUIAdditions.m in Sources */, - 5FABD712523A0F7E3ADBE29128D3702C /* NSObject+SUIAdditions.m in Sources */, - 75D87C8885827BAD5D5F3465C7B31098 /* NSString+SUIAdditions.m in Sources */, - A7E35F98355E7F2685EB86F1E7A323CE /* NSString+SUICrypto.m in Sources */, - D11677C0738E713D50F92D32B9F9578A /* NSString+SUIRegex.m in Sources */, - 901A1E01A4C850407AE31915F1304CBF /* SUITableHelper.m in Sources */, - D19EBECC5CB05CB7A995F46B5E5AFE18 /* SUITool+Camera.m in Sources */, - 6EAB50F5E7A3BECBB16C090B24E1048C /* SUITool+Delay.m in Sources */, - 66DE3988365E81DF66BDB6252E354DBD /* SUITool+FileManager.m in Sources */, - B1211959A166B4AC2EE1EF8B05D3F9FC /* SUITool+OpenURL.m in Sources */, - 8CE4EA49048274CAA4F3BD1B37877798 /* SUITool.m in Sources */, - 8BA82FF5492749B2B51973B28B4DD3D6 /* SUIUtils-dummy.m in Sources */, - 54D721AC309D34668A57AEF56B75AB4F /* UIButton+SUIAdditions.m in Sources */, - 46864A6C975FFED15827EBB73AB56E85 /* UIControl+SUIAdditions.m in Sources */, - 3287293F60A4B0E9E7E064BF48E90EF9 /* UIImage+SUIAdditions.m in Sources */, - 89E31F10092B6A54108D283EFAAC9BBF /* UILabel+SUIAdditions.m in Sources */, - A0CE32EC2F85CA1E0BB505C18401E275 /* UINavigationController+SUIAdditions.m in Sources */, - 4691B6C1364DFC5158AFB432988F81A6 /* UIScrollView+SUIAdditions.m in Sources */, - 1A66707C382E249B4A885EF379953A6A /* UIStoryboardSegue+SUIAdditions.m in Sources */, - 78A8E3DCFDFE3A8800A7A727025E19D0 /* UITableView+SUIHelper.m in Sources */, - F606E755773DD0E57B62B291FC76E691 /* UITableViewCell+SUIAdditions.m in Sources */, - AEA3CFD966675F3BECDBF6BB5380D5CF /* UITableViewCell+SUIHelper.m in Sources */, - 46741E54051353C7671401B8BEDCAC46 /* UITextField+SUIAdditions.m in Sources */, - 7637495CA7483570965F9979191F4EF1 /* UITextView+SUIAdditions.m in Sources */, - 9035959805255625F57639D88F7EDF4B /* UIView+SUIAdditions.m in Sources */, - F78DACD04CA58517AF9AC239943DC9B7 /* UIViewController+SUIAdditions.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6011108DD6AEDA503F9EE80929F6C6E3 /* Sources */ = { + 393766C4E462FEEBA99E8DC0D4F9D59C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 851E3F8C674245F168D04FF691714311 /* SMKDataService.m in Sources */, - 81A85131A9C883334621E78D68E7FCDE /* SMKHttp.m in Sources */, - E017C5222255E45AFE48A72F6DBDFFB9 /* SMKHttpConfig.m in Sources */, - 0DAB8AE347BD1373FC17E7DED9A626D8 /* SUIMVVMNetwork-dummy.m in Sources */, + F0E863063D42CFE489B16EFC538BEA87 /* NSArray+SUIAdditions.m in Sources */, + 9AC3422CB0B135DCAD6CE0AB4F7B6DED /* NSArray+SUISafeAccess.m in Sources */, + FBE6852B31DE6199395A3ECB4C5AEEFF /* NSData+SUIAdditions.m in Sources */, + 755CA7821BC086382DA5854D840C3500 /* NSDate+SUIAdditions.m in Sources */, + A24798553A221FE8AE552EA3E476292A /* NSDictionary+SUIAdditions.m in Sources */, + F6DD04DA58C8B7EDA5869C86ED71E46A /* NSDictionary+SUISafeAccess.m in Sources */, + 286D614FD8C97CB100F6C20C770F0CD2 /* NSIndexPath+SUIAdditions.m in Sources */, + E03C2ABF49D0B5DDAD9FC1438005B28B /* NSNumber+SUIAdditions.m in Sources */, + BBD0FC347576496C58447E19F4AF7E64 /* NSObject+SUIAdditions.m in Sources */, + 969A30C2950225042B70124BC0FCC49D /* NSString+SUIAdditions.m in Sources */, + E58FA05A5F6099152712EBBF6C17AF3A /* NSString+SUICrypto.m in Sources */, + 5B5C16688BDBA69EFFE680A7250C9EA6 /* NSString+SUIRegex.m in Sources */, + A5CCE12C36AC552DD53BA1E9E904ECE3 /* SUITableHelper.m in Sources */, + D727F0260D991A47AC1BDCF9B1CA6FB6 /* SUITool+Camera.m in Sources */, + EA6D33E42EC3AB57792D60A63B04CF5E /* SUITool+Delay.m in Sources */, + 72CF81DD2B8BFD8DC5DF13A043DF6A71 /* SUITool+FileManager.m in Sources */, + D6DFE0B3DDDC95671871F5DDA41BF1B6 /* SUITool+OpenURL.m in Sources */, + 194E127098AD94435D3E91744B85E66A /* SUITool.m in Sources */, + E89187C8BF25AC8BC4B636627830ADA5 /* SUIUtils-dummy.m in Sources */, + 90E285AE12245BA4B513B2A266B7F834 /* UIButton+SUIAdditions.m in Sources */, + CADA1B444272562B32CF16FB615D96BB /* UIControl+SUIAdditions.m in Sources */, + 9FA7910C486006F06FE1B75FE8C68D3C /* UIImage+SUIAdditions.m in Sources */, + E9AA8D810B87E3C7FCA80335EBCB1EAE /* UILabel+SUIAdditions.m in Sources */, + 3528DA51CDFAAA8042EFF987AC19861D /* UINavigationController+SUIAdditions.m in Sources */, + 28A319301013DAF20B30F9A981D0021D /* UIScrollView+SUIAdditions.m in Sources */, + 6F6627CA63BC412C656A46987B385973 /* UIStoryboardSegue+SUIAdditions.m in Sources */, + 6A84DD3F16C47E52CF47D8120F136A31 /* UITableView+SUIHelper.m in Sources */, + 71851BF94AA7E2BE7388BCEA48DAC828 /* UITableViewCell+SUIAdditions.m in Sources */, + 1E0D9757A9D3F3F68B12EC98CCC0D23E /* UITableViewCell+SUIHelper.m in Sources */, + 6F4EE9A26B34DCE35D493E0EC1092477 /* UITextField+SUIAdditions.m in Sources */, + F94C165438014E7DF781E8657D7F3B76 /* UITextView+SUIAdditions.m in Sources */, + 797078F52A6F89F67EF36F739369FB61 /* UIView+SUIAdditions.m in Sources */, + 05B47B17937A59C15A583F0D6F12B2AE /* UIViewController+SUIAdditions.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C8E954B943DFEDFF0B21D95AB84BDB2D /* Sources */ = { + C68A1BEF2F31BD945F578E4B943631F1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E8239C1AD499A01EF1810AF5AA2B0D33 /* SMKStore.m in Sources */, - F1B3A0D1EC0DBD7AB9DCB91A71F7E907 /* SUIMVVMStore-dummy.m in Sources */, - 73BB97DD677A5416B22A74F1FF3346B4 /* YTKKeyValueStore.m in Sources */, + A412A32FBD8792EE58E1F0965492F0BA /* Pods-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1862,6 +1588,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + DDE56653CECA82C394F97F0D199F7FAA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1B798571774C7D88E963D1A4877B5B84 /* UITableView+FDIndexPathHeightCache.m in Sources */, + FF0D7245D73F1E9CE456F76EDD5738E0 /* UITableView+FDKeyedHeightCache.m in Sources */, + CC70F0C352D03FF8C1308BED274F7D9F /* UITableView+FDTemplateLayoutCell-dummy.m in Sources */, + 36C6B76E77B43C15D9B36F05B2A3D391 /* UITableView+FDTemplateLayoutCell.m in Sources */, + 0729C19DF24F0DD1853A1CDEEE1474AE /* UITableView+FDTemplateLayoutCellDebug.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; DE0BAD758C6F291CE7E10DA077987C62 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1888,83 +1626,53 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 1E7002875850411298904D263C0EAAE2 /* PBXTargetDependency */ = { + 5F181A2C6B41C62B739CD2333C9871E6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Masonry; - target = 53480ED0BE09FF49E34B1702D485CAAB /* Masonry */; - targetProxy = 5E083D92B113C00F6C4196944205AA7A /* PBXContainerItemProxy */; + name = "UITableView+FDTemplateLayoutCell"; + target = EBF5F1CD8EF09DCCBB9FD0686ECFB511 /* UITableView+FDTemplateLayoutCell */; + targetProxy = 1BCE548D6B52D755E9C6931EAAC5A925 /* PBXContainerItemProxy */; }; - 21D4009EB9E5C6F05FE572BCA103400C /* PBXTargetDependency */ = { + 74D2BFA124EFB3D38DE9A21599F8A5A9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = AFNetworking; - target = 928353533005A4198EBDA5B700D37B64 /* AFNetworking */; - targetProxy = 46F894FA8C1C2725FE27D4B3D499D3D3 /* PBXContainerItemProxy */; + name = SUIUtils; + target = 302F3E8524A04C89AC13E950D661566F /* SUIUtils */; + targetProxy = A0D47E8E662C16FA6B0D418C10BC5889 /* PBXContainerItemProxy */; }; - 23915C0E0F4AE620F0F7D33C90092859 /* PBXTargetDependency */ = { + 7A467C6E7139909AA48920D7B18557CD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = MJExtension; target = 9EAB3E42EF957541E6C3C76D35FD008E /* MJExtension */; - targetProxy = 0D3291603B9155DA3C2D6B8D41B817C5 /* PBXContainerItemProxy */; + targetProxy = 8BD034250FB04C068F57018FA8271020 /* PBXContainerItemProxy */; }; - 25610B89A7800135716B288C347E975E /* PBXTargetDependency */ = { + 93EECBA21CD609C7B706413DC7179434 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = AFNetworking; target = 928353533005A4198EBDA5B700D37B64 /* AFNetworking */; - targetProxy = 6AD2A9C27EB83731D3B0F10E4AFFCCF9 /* PBXContainerItemProxy */; + targetProxy = 6D1546C85298D57A00201AA2C82F3C16 /* PBXContainerItemProxy */; }; - 47AECE6BC816D579A658B97C488C82A5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MJRefresh; - target = 8F74D9EA91F4C43190670066BAC37D44 /* MJRefresh */; - targetProxy = 7207A925E0E2E2261D16E504D3A2A7AE /* PBXContainerItemProxy */; - }; - 623AC01ED79D07393DF6699C3AC4338C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SUIMVVMNetwork; - target = CE848D5E1D43BFE24B77A00D5AE5F6EC /* SUIMVVMNetwork */; - targetProxy = D307E83CDFF6E00CA74831331118BD05 /* PBXContainerItemProxy */; - }; - 6D0D0DB65C8924E2E32E207A44DF6E7A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "UITableView+FDTemplateLayoutCell"; - target = 927A7C8415E965039D8FC3D5517E431A /* UITableView+FDTemplateLayoutCell */; - targetProxy = 9C84BEDF9B63A1F1132B113230F2A769 /* PBXContainerItemProxy */; - }; - 7C0EC2556AF8E50E753EDE96FD1F7A15 /* PBXTargetDependency */ = { + B47285ECFA1D52909FC567BCC065BF31 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FMDB; target = 9F12FB4A63E20F601CFB2E64A65B57C1 /* FMDB */; - targetProxy = D6E39688410A70F15651958DF496A5DC /* PBXContainerItemProxy */; + targetProxy = DE018CB51F015619A8FAE6A5F05D7A27 /* PBXContainerItemProxy */; }; - 9078D71DF4FFA397D852D9C1FEEC1DDA /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SUIMVVMStore; - target = 786AB65C802E77BD8A20249245B255A5 /* SUIMVVMStore */; - targetProxy = F493AF057A523ED87E9EEEBAA45F31AB /* PBXContainerItemProxy */; - }; - ABAEE09319C66165D83C6EC72DE589C2 /* PBXTargetDependency */ = { + B82E01B45FDAB7922CA4BD05034E7014 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "UITableView+FDTemplateLayoutCell"; - target = 927A7C8415E965039D8FC3D5517E431A /* UITableView+FDTemplateLayoutCell */; - targetProxy = B25EB65B24D40F915E5F51EAA9FE0125 /* PBXContainerItemProxy */; - }; - B9D960272F29CF5B518DF356C9245E94 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SUIMVVMStore; - target = 786AB65C802E77BD8A20249245B255A5 /* SUIMVVMStore */; - targetProxy = CD9C77E46BE4CDF60AB6F0834D983CD3 /* PBXContainerItemProxy */; + target = EBF5F1CD8EF09DCCBB9FD0686ECFB511 /* UITableView+FDTemplateLayoutCell */; + targetProxy = A70AE1C789142E72951C56649DFA68BD /* PBXContainerItemProxy */; }; - D46485C9161930FD3A8C6FE36D8596DC /* PBXTargetDependency */ = { + BEBE1225F3A27B9A858EF44008D36ABC /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FMDB; - target = 9F12FB4A63E20F601CFB2E64A65B57C1 /* FMDB */; - targetProxy = D9FC0E6552C16E15FE7748842DB6B348 /* PBXContainerItemProxy */; + name = Masonry; + target = 53480ED0BE09FF49E34B1702D485CAAB /* Masonry */; + targetProxy = 3BC9369FB258EF785F350CE94F446E86 /* PBXContainerItemProxy */; }; - F07A8924EB5095E8F9E20B0B88975AEE /* PBXTargetDependency */ = { + C08DC78F703141CC223DE7C264C46D9C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SUIUtils; - target = 694FBCC94CD4312B41BA76B6DA74EE8F /* SUIUtils */; - targetProxy = BBEDEA938B8139418B6CAC03A2CD17B2 /* PBXContainerItemProxy */; + name = MJRefresh; + target = 8F74D9EA91F4C43190670066BAC37D44 /* MJRefresh */; + targetProxy = 712DA5298E19DBB26D6DAE505214597E /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -2005,7 +1713,7 @@ }; 17224E02F0E8CE2AC8EF6DDD7B535094 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FBB07B6FB3352583758E377B68E4277A /* AFNetworking.xcconfig */; + baseConfigurationReference = 16BBAE6DF6EA6512C5DA45FF67BAEFA7 /* AFNetworking.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; @@ -2021,12 +1729,12 @@ }; name = Debug; }; - 20AFB0DF13E9DE6084550B2656765EC8 /* Release */ = { + 3A2A3C95E1EDF73DEF947480F6B2FCC9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3664C8ED47E6ECC65DB53A5BB4F4C4AD /* UITableView+FDTemplateLayoutCell.xcconfig */; + baseConfigurationReference = C3095A893F3F2F721D805D6C11407886 /* Masonry.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/Masonry/Masonry-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -2039,12 +1747,12 @@ }; name = Release; }; - 3A2A3C95E1EDF73DEF947480F6B2FCC9 /* Release */ = { + 3CD591698DC33B132136E7AA0C78F938 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CC071CA45D55BF95DF9C1EC22797B38F /* Masonry.xcconfig */; + baseConfigurationReference = F993C72E89533B38F1A18D169719CD41 /* UITableView+FDTemplateLayoutCell.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Masonry/Masonry-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; @@ -2059,7 +1767,7 @@ }; 532BFF047F42A4AA3F83414FB5E6BE12 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7950573D520C979A197B8AA6BC02CBCB /* MJRefresh.xcconfig */; + baseConfigurationReference = 838FE5FE3828FE91506CA671571FEC7B /* MJRefresh.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/MJRefresh/MJRefresh-prefix.pch"; @@ -2075,27 +1783,9 @@ }; name = Release; }; - 6371B98D52961F2D213D69404B39C7F2 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F7DA7C08778A10B83102E1C82422B821 /* SUIMVVMNetwork.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/SUIMVVMNetwork/SUIMVVMNetwork-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Debug; - }; 641F071BD177C0FD805ECAF1D202F7CB /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 55E90F1474272922BAB1FB9E1AC82534 /* FMDB.xcconfig */; + baseConfigurationReference = BB3F1E239BE92C7B5FB7CAA579846AFD /* FMDB.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/FMDB/FMDB-prefix.pch"; @@ -2111,27 +1801,9 @@ }; name = Release; }; - 84914268AAC7BEC89969F9DE1E8A0BB0 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0797B901B0C68DF5BD8B8DE81FC2C309 /* SUIMVVMStore.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/SUIMVVMStore/SUIMVVMStore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; 8E22345807C46884D17DD8C2728A6201 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 55E90F1474272922BAB1FB9E1AC82534 /* FMDB.xcconfig */; + baseConfigurationReference = BB3F1E239BE92C7B5FB7CAA579846AFD /* FMDB.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/FMDB/FMDB-prefix.pch"; @@ -2149,7 +1821,7 @@ }; 9530CB7A404DF04D69578C617F9D664A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 50EB75C23F491560780EDA86EE2E9750 /* MJExtension.xcconfig */; + baseConfigurationReference = 9105CB29073E853F54BF40AF80226ED4 /* MJExtension.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/MJExtension/MJExtension-prefix.pch"; @@ -2165,27 +1837,9 @@ }; name = Debug; }; - 9A6F1CEAB1A923AC8C480D2254FBCCA8 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F7DA7C08778A10B83102E1C82422B821 /* SUIMVVMNetwork.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/SUIMVVMNetwork/SUIMVVMNetwork-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; 9AE604909D43EDD8C1DD6FEB5AA91EEE /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7950573D520C979A197B8AA6BC02CBCB /* MJRefresh.xcconfig */; + baseConfigurationReference = 838FE5FE3828FE91506CA671571FEC7B /* MJRefresh.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/MJRefresh/MJRefresh-prefix.pch"; @@ -2201,24 +1855,6 @@ }; name = Debug; }; - A89F138CBB0A499521818CC08F6445B2 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0797B901B0C68DF5BD8B8DE81FC2C309 /* SUIMVVMStore.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/SUIMVVMStore/SUIMVVMStore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Debug; - }; B37F0F91F85060E28F1DAAB522DC7EC1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2260,7 +1896,7 @@ }; BB4FEE3A29726B80E9C5E31DBE1FE28D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 50EB75C23F491560780EDA86EE2E9750 /* MJExtension.xcconfig */; + baseConfigurationReference = 9105CB29073E853F54BF40AF80226ED4 /* MJExtension.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/MJExtension/MJExtension-prefix.pch"; @@ -2276,29 +1912,30 @@ }; name = Release; }; - C4625866E3FB1E79E3CA3ED4A32B7C79 /* Release */ = { + C9674D374D0BED0EF73D522E2F24AA80 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 98C98CDFB3F20F2925F6CD1F141BB14F /* Pods.release.xcconfig */; + baseConfigurationReference = F993C72E89533B38F1A18D169719CD41 /* UITableView+FDTemplateLayoutCell.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MACH_O_TYPE = staticlib; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Release; + name = Debug; }; - C59056B55C6D374794A3D7B89C9C8A59 /* Debug */ = { + CD91C634F44637F31539E556594D0AC4 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3664C8ED47E6ECC65DB53A5BB4F4C4AD /* UITableView+FDTemplateLayoutCell.xcconfig */; + baseConfigurationReference = A80208FE75F5DB14C4A13663290EA81F /* SUIUtils.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/SUIUtils/SUIUtils-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; @@ -2313,7 +1950,7 @@ }; CF42542529F689B52406696B5784E1F9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FBB07B6FB3352583758E377B68E4277A /* AFNetworking.xcconfig */; + baseConfigurationReference = 16BBAE6DF6EA6512C5DA45FF67BAEFA7 /* AFNetworking.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; @@ -2329,30 +1966,29 @@ }; name = Release; }; - DB6D0304B2D75FBEE519BA9270E302CF /* Release */ = { + DC416F3A9C80E3382D8C3CDBD17462B8 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F780F90A8A2D331BB38DC453ED1506EB /* SUIUtils.xcconfig */; + baseConfigurationReference = 98C98CDFB3F20F2925F6CD1F141BB14F /* Pods.release.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/SUIUtils/SUIUtils-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MACH_O_TYPE = staticlib; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; + PODS_ROOT = "$(SRCROOT)"; PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Release; }; - DDDD3ADF9B29EB9491C562BDB0061856 /* Debug */ = { + EE43A56420D041C473C78C19CD1B0EDB /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F780F90A8A2D331BB38DC453ED1506EB /* SUIUtils.xcconfig */; + baseConfigurationReference = C3095A893F3F2F721D805D6C11407886 /* Masonry.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/SUIUtils/SUIUtils-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/Masonry/Masonry-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; @@ -2365,36 +2001,36 @@ }; name = Debug; }; - E48FBE2EA8C44FB8DEBA563ACDAF682C /* Debug */ = { + F40329766864C8516AC8705C2737864C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4E762F23EC34ED4A6FF3312D84E33A40 /* Pods.debug.xcconfig */; + baseConfigurationReference = A80208FE75F5DB14C4A13663290EA81F /* SUIUtils.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/SUIUtils/SUIUtils-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MACH_O_TYPE = staticlib; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; - name = Debug; + name = Release; }; - EE43A56420D041C473C78C19CD1B0EDB /* Debug */ = { + FC017D982D7D0FF9FC053E326B1A98DA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CC071CA45D55BF95DF9C1EC22797B38F /* Masonry.xcconfig */; + baseConfigurationReference = 4E762F23EC34ED4A6FF3312D84E33A40 /* Pods.debug.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Masonry/Masonry-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MACH_O_TYPE = staticlib; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; + PODS_ROOT = "$(SRCROOT)"; PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; @@ -2412,24 +2048,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 318A4247B238FF36DB8F5434BC27625A /* Build configuration list for PBXNativeTarget "Pods" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E48FBE2EA8C44FB8DEBA563ACDAF682C /* Debug */, - C4625866E3FB1E79E3CA3ED4A32B7C79 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 387BF1714BAD3DD3155B00A751D79B88 /* Build configuration list for PBXNativeTarget "SUIMVVMNetwork" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6371B98D52961F2D213D69404B39C7F2 /* Debug */, - 9A6F1CEAB1A923AC8C480D2254FBCCA8 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 3AC899FD215914230EB9D8B57AD910D0 /* Build configuration list for PBXNativeTarget "FMDB" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2448,29 +2066,29 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 62FEF5F7B82A71158A4242D694A169DA /* Build configuration list for PBXNativeTarget "UITableView+FDTemplateLayoutCell" */ = { + 556C4A141EDB0A0BE926865F9A962038 /* Build configuration list for PBXNativeTarget "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - C59056B55C6D374794A3D7B89C9C8A59 /* Debug */, - 20AFB0DF13E9DE6084550B2656765EC8 /* Release */, + FC017D982D7D0FF9FC053E326B1A98DA /* Debug */, + DC416F3A9C80E3382D8C3CDBD17462B8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 77CF2A7107BC61A2E90025871305961D /* Build configuration list for PBXNativeTarget "AFNetworking" */ = { + 5C2DB5CECC7498F332FF63202D227FFA /* Build configuration list for PBXNativeTarget "UITableView+FDTemplateLayoutCell" */ = { isa = XCConfigurationList; buildConfigurations = ( - 17224E02F0E8CE2AC8EF6DDD7B535094 /* Debug */, - CF42542529F689B52406696B5784E1F9 /* Release */, + C9674D374D0BED0EF73D522E2F24AA80 /* Debug */, + 3CD591698DC33B132136E7AA0C78F938 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8B63EC9995B84752F801B123A9A1E24D /* Build configuration list for PBXNativeTarget "SUIMVVMStore" */ = { + 77CF2A7107BC61A2E90025871305961D /* Build configuration list for PBXNativeTarget "AFNetworking" */ = { isa = XCConfigurationList; buildConfigurations = ( - A89F138CBB0A499521818CC08F6445B2 /* Debug */, - 84914268AAC7BEC89969F9DE1E8A0BB0 /* Release */, + 17224E02F0E8CE2AC8EF6DDD7B535094 /* Debug */, + CF42542529F689B52406696B5784E1F9 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -2484,11 +2102,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E3075258EFB7D0F2C4A1F29B04D939D0 /* Build configuration list for PBXNativeTarget "SUIUtils" */ = { + BA098629EE97B2CF11AF87060D06FBE1 /* Build configuration list for PBXNativeTarget "SUIUtils" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDDD3ADF9B29EB9491C562BDB0061856 /* Debug */, - DB6D0304B2D75FBEE519BA9270E302CF /* Release */, + CD91C634F44637F31539E556594D0AC4 /* Debug */, + F40329766864C8516AC8705C2737864C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/SUIMVVMDemo/Pods/SUIMVVMNetwork/LICENSE b/SUIMVVMDemo/Pods/SUIMVVMNetwork/LICENSE deleted file mode 100644 index a7b0765..0000000 --- a/SUIMVVMDemo/Pods/SUIMVVMNetwork/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 lovemo - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/SUIMVVMDemo/Pods/SUIMVVMNetwork/README.md b/SUIMVVMDemo/Pods/SUIMVVMNetwork/README.md deleted file mode 100644 index 8fcd997..0000000 --- a/SUIMVVMDemo/Pods/SUIMVVMNetwork/README.md +++ /dev/null @@ -1,116 +0,0 @@ -# SUIMVVMNetwork -SUIMVVMKit -- SUIMVVMNetwork - -==== -##usage -``` -pod 'SUIMVVMNetwork' -``` -==== - -##introduction - -```objc - -@class MVVMHttpFileConfig; - -@interface MVVMHttp : NSObject - -/** - * 请求超时时间 - */ -@property (nonatomic, assign) NSTimeInterval timeoutInterval; - -/** - * 创建单例对象 - */ -+ (MVVMHttp *)defaultMVVMHttp; - -/** - * 移除所有缓存 - */ -+ (void)removeAllCaches; - -/** - * 取消所有网络请求 - */ -+ (void)cancelAllOperations; - -/** - * GET请求 - 默认 MVVMHttpReloadIgnoringLocalCacheData 的缓存方式 - */ -+ (void)get:(NSString *)url - params:(NSDictionary *)params - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler; - -/** - * POST请求 - 默认 MVVMHttpReloadIgnoringLocalCacheData 的缓存方式 - */ -+ (void)post:(NSString *)url - params:(NSDictionary *)params - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler; - -/** - * GET请求 - */ -+ (void)get:(NSString *)url - params:(NSDictionary *)params -cachePolicy:(MVVMHttpRequestCachePolicy)cachePolicy - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler; - -/** - * POST请求 - */ -+ (void)post:(NSString *)url - params:(NSDictionary *)params - cachePolicy:(MVVMHttpRequestCachePolicy)cachePolicy - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler; - -/** - * PUT请求 - */ -+ (void)put:(NSString *)url - params:(NSDictionary *)params - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler; - -/** - * DELETE请求 - */ -+ (void)delete:(NSString *)url - params:(NSDictionary *)params - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler; - -/** - * 下载文件,监听下载进度 - */ -+ (void)download:(NSString *)url -successAndProgress:(progressBlock)progressHandler - complete:(responseBlock)completionHandler; - -/** - * 文件上传 - */ -+ (void)upload:(NSString *)url - params:(NSDictionary *)params fileConfig:(MVVMHttpFileConfig *)fileConfig - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler; - -/** - * 文件上传,监听上传进度 - */ -+ (void)upload:(NSString *)url - params:(NSDictionary *)params - fileConfig:(MVVMHttpFileConfig *)fileConfig -successAndProgress:(progressBlock)progressHandler - complete:(responseBlock)completionHandler; - -@end - - -``` diff --git a/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SMKNetworkPublic.h b/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SMKNetworkPublic.h deleted file mode 100644 index 1a5638a..0000000 --- a/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SMKNetworkPublic.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// SMKNetworkPublic.h -// SUIMVVMNetworkDemo -// -// Created by yuantao on 16/3/2. -// Copyright © 2016年 momo. All rights reserved. -// - -#ifndef SMKNetworkPublic_h -#define SMKNetworkPublic_h - -#import "SMKHttp.h" -#import "SMKHttpConfig.h" -#import "SMKDataService.h" -#import "SMKSingleton.h" - -#endif /* SMKNetworkPublic_h */ diff --git a/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKDataService.h b/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKDataService.h deleted file mode 100644 index 1e0865e..0000000 --- a/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKDataService.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// SMKDataService.h -// MVVMFramework -// -// Created by Mac on 16/1/22. -// Copyright © 2016年 momo. All rights reserved. -// - -#import -#import "SMKHttp.h" - -@interface SMKDataService : NSObject - -/** - GET请求转模型 - */ -+ (void)get:(NSString *)url param:(id)param cachePolicy:(SMKHttpRequestCachePolicy)cachePolicy modelClass:(Class)modelClass responseBlock:(responseBlock)responseDataBlock; - -/** - POST请求转模型 - */ -+ (void)post:(NSString *)url param:(id)param cachePolicy:(SMKHttpRequestCachePolicy)cachePolicy modelClass:(Class)modelClass responseBlock:(responseBlock)responseDataBlock; - - -+ (void)put:(NSString *)url param:(id)param modelClass:(Class)modelClass responseBlock:(responseBlock)responseDataBlock; - -+ (void)deleteWithUrl:(NSString *)url param:(id)param modelClass:(Class)modelClass responseBlock:(responseBlock)responseDataBlock; - -/** - 数组、字典转模型,提供给子类的接口 - */ -+ (id)modelTransformationWithResponseObj:(id)responseObj modelClass:(Class)modelClass; - - -@end diff --git a/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKDataService.m b/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKDataService.m deleted file mode 100644 index 39d6ef6..0000000 --- a/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKDataService.m +++ /dev/null @@ -1,72 +0,0 @@ -// -// SMKDataService.m -// MVVMFramework -// -// Created by Mac on 16/1/22. -// Copyright © 2016年 momo. All rights reserved. -// - -#import "SMKDataService.h" - -static id dataObj; - -@implementation SMKDataService - -+ (void)get:(NSString *)url param:(id)param cachePolicy:(SMKHttpRequestCachePolicy)cachePolicy modelClass:(Class)modelClass responseBlock:(responseBlock)responseDataBlock { - [SMKHttp get:url params:param cachePolicy:cachePolicy success:^(id responseObj) { - //数组、字典转化为模型数组 - - dataObj = [self modelTransformationWithResponseObj:responseObj modelClass:modelClass]; - responseDataBlock(dataObj, nil); - - } failure:^(NSError *error) { - - responseDataBlock(nil, error); - }]; -} - -+ (void)post:(NSString *)url param:(id)param cachePolicy:(SMKHttpRequestCachePolicy)cachePolicy modelClass:(Class)modelClass responseBlock:(responseBlock)responseDataBlock { - - [SMKHttp post:url params:param cachePolicy:cachePolicy success:^(id responseObj) { - - dataObj = [self modelTransformationWithResponseObj:responseObj modelClass:modelClass]; - responseDataBlock(dataObj, nil); - } failure:^(NSError *error) { - - responseDataBlock(nil, error); - }]; -} - -+ (void)put:(NSString *)url param:(id)param modelClass:(Class)modelClass responseBlock:(responseBlock)responseDataBlock { - - [SMKHttp put:url params:param success:^(id responseObj) { - - dataObj = [self modelTransformationWithResponseObj:responseObj modelClass:modelClass]; - responseDataBlock(dataObj, nil); - } failure:^(NSError *error) { - - responseDataBlock(nil, error); - }]; -} - -+ (void)deleteWithUrl:(NSString *)url param:(id)param modelClass:(Class)modelClass responseBlock:(responseBlock)responseDataBlock { - - [SMKHttp deleteWithUrl:url params:param success:^(id responseObj) { - - dataObj = [self modelTransformationWithResponseObj:responseObj modelClass:modelClass]; - responseDataBlock(dataObj, nil); - } failure:^(NSError *error) { - - responseDataBlock(nil, error); - }]; -} - -/** - 数组、字典转化为模型 - */ -+ (id)modelTransformationWithResponseObj:(id)responseObj modelClass:(Class)modelClass { - - return nil; -} - -@end diff --git a/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttp.h b/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttp.h deleted file mode 100755 index e1bb2cb..0000000 --- a/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttp.h +++ /dev/null @@ -1,178 +0,0 @@ -// -// SMKHttp.h -// DevelopFramework -// -// Created by momo on 15/12/23. -// Copyright © 2015年 teason. All rights reserved. -// - -#import - - -/** - * 请求成功block - */ -typedef void (^requestSuccessBlock)(id responseObj); - -/** - * 请求失败block - */ -typedef void (^requestFailureBlock) (NSError *error); - -/** - * 请求响应block - */ -typedef void (^responseBlock)(id dataObj, NSError *error); - -/** - * 监听进度响应block - */ -typedef void (^progressBlock)(NSProgress * progress); - - -typedef NS_ENUM(NSUInteger, SMKHttpRequestCachePolicy){ - /** 不作任何处理,只请求数据 */ - SMKHttpReturnDefault = 0, - /** 有缓存就先返回缓存,同步请求数据 */ - SMKHttpReturnCacheDataThenLoad, - /** 忽略缓存,重新请求 */ - SMKHttpReloadIgnoringLocalCacheData, - /** 有缓存就用缓存,没有缓存就重新请求(用于数据不变时) */ - SMKHttpReturnCacheDataElseLoad, - /** 有缓存就用缓存,没有缓存就不发请求,当做请求出错处理(用于离线模式)*/ - SMKHttpReturnCacheDataDontLoad -}; - -#pragma mark - 定义请求工具类 - -@class SMKHttpFileConfig; - -@interface SMKHttp : NSObject - -/** - * 请求超时时间 - */ -@property (nonatomic, assign) NSTimeInterval timeoutInterval; - -/** - * 创建单例对象 - */ -+ (instancetype)defaultHttp; - -/** - * 移除所有缓存 - */ -+ (void)removeAllCaches; - -/** - * 取消所有网络请求 - */ -+ (void)cancelAllOperations; - -/** - * GET请求 - 默认 MVVMHttpReloadIgnoringLocalCacheData 的缓存方式 - */ -+ (void)get:(NSString *)url - params:(NSDictionary *)params - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler; - -/** - * POST请求 - 默认 MVVMHttpReloadIgnoringLocalCacheData 的缓存方式 - */ -+ (void)post:(NSString *)url - params:(NSDictionary *)params - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler; - -/** - * GET请求 - */ -+ (void)get:(NSString *)url - params:(NSDictionary *)params -cachePolicy:(SMKHttpRequestCachePolicy)cachePolicy - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler; - -/** - * POST请求 - */ -+ (void)post:(NSString *)url - params:(NSDictionary *)params - cachePolicy:(SMKHttpRequestCachePolicy)cachePolicy - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler; - -/** - * PUT请求 - */ -+ (void)put:(NSString *)url - params:(NSDictionary *)params - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler; - -/** - * DELETE请求 - */ -+ (void)deleteWithUrl:(NSString *)url - params:(NSDictionary *)params - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler; - -/** - * 下载文件,监听下载进度 - */ -+ (void)download:(NSString *)url -successAndProgress:(progressBlock)progressHandler - complete:(responseBlock)completionHandler; - -/** - * 文件上传 - */ -+ (void)upload:(NSString *)url - params:(NSDictionary *)params fileConfig:(SMKHttpFileConfig *)fileConfig - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler; - -/** - * 文件上传,监听上传进度 - */ -+ (void)upload:(NSString *)url - params:(NSDictionary *)params - fileConfig:(SMKHttpFileConfig *)fileConfig -successAndProgress:(progressBlock)progressHandler - complete:(responseBlock)completionHandler; - -@end - - -/** - * 用来封装上文件数据的模型类 - */ -@interface SMKHttpFileConfig : NSObject - -/** - * 文件数据 - */ -@property (nonatomic, strong) NSData *fileData; - -/** - * 服务器接收参数名 - */ -@property (nonatomic, copy) NSString *name; - -/** - * 文件名 - */ -@property (nonatomic, copy) NSString *fileName; - -/** - * 文件类型 - */ -@property (nonatomic, copy) NSString *mimeType; - -+ (instancetype)fileConfigWithfileData:(NSData *)fileData name:(NSString *)name fileName:(NSString *)fileName mimeType:(NSString *)mimeType; - -- (instancetype)initWithfileData:(NSData *)fileData name:(NSString *)name fileName:(NSString *)fileName mimeType:(NSString *)mimeType; - -@end diff --git a/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttp.m b/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttp.m deleted file mode 100755 index 0dac59c..0000000 --- a/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttp.m +++ /dev/null @@ -1,394 +0,0 @@ -// -// SMKHttp.h -// DevelopFramework -// -// Created by momo on 15/12/23. -// Copyright © 2015年 teason. All rights reserved. -// - -#import "SMKHttp.h" -#import "AFNetworking.h" -#import "SMKStorePublic.h" -#import "SMKHttpConfig.h" - -#ifdef DEBUG -#define BQLog(...) NSLog(__VA_ARGS__) -#else -#define BQLog(...) -#endif - -#define kPathOfCaches [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] - -static NSString * const SMKRequestCache = @"SMKRequestCache.sqlite"; - -typedef NS_ENUM(NSUInteger, SMKHttpRequestType) { - SMKHttpRequestTypeGET = 0, - SMKHttpRequestTypePOST -}; - - -@interface SMKHttp () -@property (nonatomic, strong) AFHTTPSessionManager *manager; -@property (nonatomic, strong) UIAlertView *alert; -@property (nonatomic, strong) SMKStore *store; -@end - -@implementation SMKHttp - -- (SMKStore *)store { - if (_store == nil) { - _store = [[SMKStore alloc] init]; - NSString *cachesPath = [kPathOfCaches stringByAppendingPathComponent:SMKRequestCache]; - [_store db_initDBWithPath:cachesPath]; - } - return _store; -} - -- (id)init{ - if (self = [super init]){ - // 创建请求管理者 - self.manager = [AFHTTPSessionManager manager]; - // 请求参数序列化类型 - self.manager.requestSerializer = [AFJSONRequestSerializer serializer]; - // 请求超时设定 - self.manager.requestSerializer.timeoutInterval = 10; - // 设置请求ContentType - self.manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", @"text/plain",nil]; - } - return self; -} - -#pragma mark -------------------- public -------------------- - -+ (instancetype)defaultHttp { - static SMKHttp *instance = nil; - static dispatch_once_t predicate; - dispatch_once(&predicate, ^{ - instance = [[self alloc] init]; - }); - return instance; -} - -+ (void)removeAllCaches { - [[SMKHttp defaultHttp].store db_clearTable:SMKRequestCache]; -} - -+ (void)cancelAllOperations { - [[SMKHttp defaultHttp].manager.operationQueue cancelAllOperations]; -} - -+ (void)get:(NSString *)url - params:(NSDictionary *)params - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler -{ - [SMKHttp requestMethod:SMKHttpRequestTypeGET url:url params:params cachePolicy:SMKHttpReloadIgnoringLocalCacheData success:successHandler failure:failureHandler]; -} - -+ (void)post:(NSString *)url - params:(NSDictionary *)params - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler -{ - [SMKHttp requestMethod:SMKHttpRequestTypePOST url:url params:params cachePolicy:SMKHttpReloadIgnoringLocalCacheData success:successHandler failure:failureHandler]; -} - -+ (void)get:(NSString *)url - params:(NSDictionary *)params -cachePolicy:(SMKHttpRequestCachePolicy)cachePolicy - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler -{ - [SMKHttp requestMethod:SMKHttpRequestTypeGET url:url params:params cachePolicy:cachePolicy success:successHandler failure:failureHandler]; -} - -+ (void)post:(NSString *)url - params:(NSDictionary *)params - cachePolicy:(SMKHttpRequestCachePolicy)cachePolicy - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler -{ - [SMKHttp requestMethod:SMKHttpRequestTypePOST url:url params:params cachePolicy:cachePolicy success:successHandler failure:failureHandler]; -} - -+ (void)put:(NSString *)url params:(NSDictionary *)params success:(requestSuccessBlock)successHandler failure:(requestFailureBlock)failureHandler { - - if (![SMKHttpConfig sharedConfig].reachable) { - successHandler(nil); - failureHandler(nil); - return; - } - - [[SMKHttp defaultHttp].manager PUT:url parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { - successHandler(responseObject); - } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { - failureHandler(error); - }]; - -} - -+ (void)deleteWithUrl:(NSString *)url params:(NSDictionary *)params success:(requestSuccessBlock)successHandler failure:(requestFailureBlock)failureHandler { - - if (![SMKHttpConfig sharedConfig].reachable) { - successHandler(nil); - failureHandler(nil); - return; - } - - [[SMKHttp defaultHttp].manager DELETE:url parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { - successHandler(responseObject); - } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { - failureHandler(error); - }]; - -} - -/** - 下载文件,监听下载进度 - */ -+ (void)download:(NSString *)url successAndProgress:(progressBlock)progressHandler complete:(responseBlock)completionHandler { - - if (![SMKHttpConfig sharedConfig].reachable) { - progressHandler(nil); - completionHandler(nil, nil); - return; - } - - NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; - AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:sessionConfiguration]; - - NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]]; - - NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) { - progressHandler(downloadProgress); - } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) { - NSURL *documentUrl = [[NSFileManager defaultManager] URLForDirectory :NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; - - return [documentUrl URLByAppendingPathComponent:[response suggestedFilename]]; - } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) { - if (error) { - BQLog(@"------下载失败-------%@",error); - } - completionHandler(response, error); - }]; - - [downloadTask resume]; - -} - -/** - * 发送一个POST请求 - * @param fileConfig 文件相关参数模型 - * @param success 请求成功后的回调 - * @param failure 请求失败后的回调 - * 无上传进度监听 - */ -+ (void)upload:(NSString *)url params:(NSDictionary *)params fileConfig:(SMKHttpFileConfig *)fileConfig success:(requestSuccessBlock)successHandler failure:(requestFailureBlock)failureHandler { - - if (![SMKHttpConfig sharedConfig].reachable) { - successHandler(nil); - failureHandler(nil); - return; - } - - [[SMKHttp defaultHttp].manager POST:url parameters:params constructingBodyWithBlock:^(id _Nonnull formData) { - - [formData appendPartWithFileData:fileConfig.fileData name:fileConfig.name fileName:fileConfig.fileName mimeType:fileConfig.mimeType]; - } progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { - - successHandler(responseObject); - } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { - - BQLog(@"------上传失败-------%@",error); - failureHandler(error); - }]; - -} - -/** - 上传文件,监听上传进度 - */ -+ (void)upload:(NSString *)url params:(NSDictionary *)params fileConfig:(SMKHttpFileConfig *)fileConfig successAndProgress:(progressBlock)progressHandler complete:(responseBlock)completionHandler { - - if (![SMKHttpConfig sharedConfig].reachable) { - progressHandler(nil); - completionHandler(nil, nil); - return; - } - - NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:url parameters:params constructingBodyWithBlock:^(id _Nonnull formData) { - - [formData appendPartWithFileData:fileConfig.fileData name:fileConfig.name fileName:fileConfig.fileName mimeType:fileConfig.mimeType]; - - } error:nil]; - - - AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; - - NSURLSessionUploadTask *uploadTask; - uploadTask = [manager - uploadTaskWithStreamedRequest:request - progress:^(NSProgress * _Nonnull uploadProgress) { - // This is not called back on the main queue. - // You are responsible for dispatching to the main queue for UI updates - - progressHandler(uploadProgress); - } - completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { - if (error) { - completionHandler(nil, error); - BQLog(@"------上传失败-------%@",error); - } else { - completionHandler(responseObject, nil); - BQLog(@"%@ %@", response, responseObject); - } - }]; - - [uploadTask resume]; - -} - - -#pragma mark -------------------- private -------------------- - -+ (void)requestMethod:(SMKHttpRequestType)requestType - url:(NSString *)url - params:(NSDictionary *)params - cachePolicy:(SMKHttpRequestCachePolicy)cachePolicy - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler -{ - if (cachePolicy == SMKHttpReturnDefault) { - [SMKHttp requestMethod:requestType url:url params:params cachePolicy:SMKHttpReturnDefault tableName:nil cacheKey:nil success:successHandler failure:failureHandler]; - return; - } - NSString *cacheKey = url; - if (params) { - if (![NSJSONSerialization isValidJSONObject:params]) return ; //参数不是json类型 - NSData *data = [NSJSONSerialization dataWithJSONObject:params options:NSJSONWritingPrettyPrinted error:nil]; - NSString *paramStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; - cacheKey = [url stringByAppendingString:paramStr]; - } - - NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"[]{} // / : . @(#%-*+=_)\\|~(<>$%^&*)_+ { } " " : , “” " " \r \n \" \" "]; - NSString *cacheKeyUrl = [[cacheKey componentsSeparatedByCharactersInSet: set]componentsJoinedByString:@""]; - - [[SMKHttp defaultHttp].store db_createTableWithName:cacheKeyUrl]; - id object = [[SMKHttp defaultHttp].store db_getObjectById:cacheKey fromTable:cacheKeyUrl]; - - switch (cachePolicy) { - case SMKHttpReturnCacheDataThenLoad: { // 先返回缓存,同时请求 - if (object) { - successHandler(object); - } - break; - } - case SMKHttpReloadIgnoringLocalCacheData: { // 忽略本地缓存直接请求 - // 不做处理,直接请求 - break; - } - case SMKHttpReturnCacheDataElseLoad: { // 有缓存就返回缓存,没有就请求 - if (object) { // 有缓存 - successHandler(object); - return ; - } - break; - } - case SMKHttpReturnCacheDataDontLoad: { // 有缓存就返回缓存,从不请求(用于没有网络) - if (object) { // 有缓存 - successHandler(object); - } - return ; // 退出从不请求 - } - default: { - break; - } - } - [SMKHttp requestMethod:requestType url:url params:params cachePolicy:SMKHttpReloadIgnoringLocalCacheData tableName:cacheKeyUrl cacheKey:cacheKey success:successHandler failure:failureHandler]; -} - -+ (void)requestMethod:(SMKHttpRequestType)requestType - url:(NSString *)url - params:(NSDictionary *)params - cachePolicy:(SMKHttpRequestCachePolicy)cachePolicy - tableName:(NSString *)tableName - cacheKey:(NSString *)cacheKey - success:(requestSuccessBlock)successHandler - failure:(requestFailureBlock)failureHandler -{ - - [[SMKHttp defaultHttp].manager.requestSerializer willChangeValueForKey:@"timeoutInterval"]; - [SMKHttp defaultHttp].manager.requestSerializer.timeoutInterval = [SMKHttp defaultHttp].timeoutInterval; - [[SMKHttp defaultHttp].manager.requestSerializer didChangeValueForKey:@"timeoutInterval"]; - - switch (requestType) { - case SMKHttpRequestTypeGET: { - if ([SMKHttpConfig sharedConfig].reachable) { - // 2.发送请求 - [[SMKHttp defaultHttp].manager GET:url parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { - if (successHandler) { - if (cachePolicy != SMKHttpReturnDefault) { - if (responseObject) { - [[SMKHttp defaultHttp].store db_putObject:responseObject withId:cacheKey intoTable:tableName]; - } - } - successHandler(responseObject); - } - } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { - if (failureHandler) { - failureHandler(error); - } - }]; - } else { - successHandler(nil); - failureHandler(nil); - [SMKHttp showExceptionDialog]; - } - break; - } - case SMKHttpRequestTypePOST: { - if ([SMKHttpConfig sharedConfig].reachable) { - // 2.发送请求 - [[SMKHttp defaultHttp].manager POST:url parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { - if (successHandler) { - if (cachePolicy != SMKHttpReturnDefault) { - if (responseObject) { - [[SMKHttp defaultHttp].store db_putObject:responseObject withId:cacheKey intoTable:tableName]; - } - } - successHandler(responseObject); - } - } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { - if (failureHandler) { - failureHandler(error); - } - }]; - } else { - successHandler(nil); - failureHandler(nil); - [SMKHttp showExceptionDialog]; - } - - break; - } - default: - break; - } -} - -// 弹出网络错误提示框 -+ (void)showExceptionDialog -{ - if ([SMKHttp defaultHttp].alert) { - return; - } - [SMKHttp defaultHttp].alert = [[UIAlertView alloc] initWithTitle:@"提示" - message:@"网络异常,请检查网络连接" - delegate:self - cancelButtonTitle:@"好的" - otherButtonTitles:nil, nil]; - [[SMKHttp defaultHttp].alert show]; -} - - -@end diff --git a/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttpConfig.h b/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttpConfig.h deleted file mode 100644 index a3b216f..0000000 --- a/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttpConfig.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// SMKHttpConfig.h -// SUIMVVMDemo -// -// Created by yuantao on 16/3/2. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import -#import "SMKSingleton.h" - -@interface SMKHttpConfig : NSObject - -SMKSingletonH(Config) - -/** - * 网络是否连通 - */ -@property(nonatomic, assign, readonly, getter=isReachable) BOOL reachable; - -@end diff --git a/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttpConfig.m b/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttpConfig.m deleted file mode 100644 index cb39c82..0000000 --- a/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKHttpConfig.m +++ /dev/null @@ -1,70 +0,0 @@ -// -// SMKHttpConfig.m -// SUIMVVMDemo -// -// Created by yuantao on 16/3/2. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import -#import "SMKHttpConfig.h" -#include "netdb.h" - -@implementation SMKHttpConfig - -SMKSingletonM(Config) - -// 查看网络状态是否给力 -- (BOOL)isConnectionAvailable -{ - // 创建零地址,0.0.0.0的地址表示查询本机的网络连接状态 - struct sockaddr_in zeroAddress; - bzero(&zeroAddress, sizeof(zeroAddress)); - zeroAddress.sin_len = sizeof(zeroAddress); - zeroAddress.sin_family = AF_INET; - - /** - * SCNetworkReachabilityRef: 用来保存创建测试连接返回的引用 - * - * SCNetworkReachabilityCreateWithAddress: 根据传入的地址测试连接. - * 第一个参数可以为NULL或kCFAllocatorDefault - * 第二个参数为需要测试连接的IP地址,当为0.0.0.0时则可以查询本机的网络连接状态. - * 同时返回一个引用必须在用完后释放. - * PS: SCNetworkReachabilityCreateWithName: 这个是根据传入的网址测试连接, - * 第二个参数比如为"www.apple.com",其他和上一个一样. - * - * SCNetworkReachabilityGetFlags: 这个函数用来获得测试连接的状态, - * 第一个参数为之前建立的测试连接的引用, - * 第二个参数用来保存获得的状态, - * 如果能获得状态则返回TRUE,否则返回FALSE - * - */ - SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress); - SCNetworkReachabilityFlags flags; - - BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); - CFRelease(defaultRouteReachability); - - if (!didRetrieveFlags) - { - printf("Error. Could not recover network reachability flagsn"); - return NO; - } - - /** - * kSCNetworkReachabilityFlagsReachable: 能够连接网络 - * kSCNetworkReachabilityFlagsConnectionRequired: 能够连接网络,但是首先得建立连接过程 - * kSCNetworkReachabilityFlagsIsWWAN: 判断是否通过蜂窝网覆盖的连接, - * 比如EDGE,GPRS或者目前的3G.主要是区别通过WiFi的连接. - * - */ - BOOL isReachable = ((flags & kSCNetworkFlagsReachable) != 0); - BOOL needsConnection = ((flags & kSCNetworkFlagsConnectionRequired) != 0); - return (isReachable && !needsConnection) ? YES : NO; -} - -- (BOOL)isReachable { - return [self isConnectionAvailable]; -} - -@end diff --git a/SUIMVVMDemo/Pods/SUIMVVMStore/LICENSE b/SUIMVVMDemo/Pods/SUIMVVMStore/LICENSE deleted file mode 100644 index a7b0765..0000000 --- a/SUIMVVMDemo/Pods/SUIMVVMStore/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 lovemo - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/SUIMVVMDemo/Pods/SUIMVVMStore/README.md b/SUIMVVMDemo/Pods/SUIMVVMStore/README.md deleted file mode 100644 index c2a1498..0000000 --- a/SUIMVVMDemo/Pods/SUIMVVMStore/README.md +++ /dev/null @@ -1,102 +0,0 @@ -# SUIMVVMStore -SUIMVVMKit -- SUIMVVMStore - -==== -##usage -``` -pod 'SUIMVVMStore' -``` -==== - -##introduction - -```objc -@interface MVVMStore : NSObject - -+ (instancetype)sharedStore; - -/** - * 根据dbName初始化数据库 - */ -- (BOOL)db_initDBWithName:(NSString *)dbName; - -/** - * 根据dbPath初始化数据库 - */ -- (BOOL)db_initDBWithPath:(NSString *)dbPath; - -/** - * 根据tableName创建数据表 - */ -- (void)db_createTableWithName:(NSString *)tableName; - -/** - * 初始化dbName并根据tableName创建表 - */ -- (void)db_initWithDBName:(NSString *)dbName tableName:(NSString *)tableName; - -/** - * 初始化dbPath并根据tableName创建表 - */ -- (void)db_initWithDBPath:(NSString *)dbPath tableName:(NSString *)tableName; - -/** - * 清空数据表 - */ -- (void)db_clearTable:(NSString *)tableName; - -/** - * 删除表 - */ -- (BOOL)db_deleteTable:(NSString *)tableName; - -/** - * 删除数据库 - */ -- (void)db_deleteDatabseWithDBName:(NSString *)DBName; - -/** - * 关闭数据库 - */ -- (void)db_close; - -/** - * 获得数据库存储路径 - */ -- (NSString *)db_getDBPath; - -/** - * tableName是否存在 - */ -- (BOOL)db_isExistTableWithName:(NSString *)tableName; - -///************************ Put&Get methods ***************************************** - -- (void)db_putObject:(id)object withId:(NSString *)objectId intoTable:(NSString *)tableName; - -- (id)db_getObjectById:(NSString *)objectId fromTable:(NSString *)tableName; - -- (MVVMStoreItem *)db_getStoreItemById:(NSString *)objectId fromTable:(NSString *)tableName; - -- (void)db_putString:(NSString *)string withId:(NSString *)stringId intoTable:(NSString *)tableName; - -- (NSString *)db_getStringById:(NSString *)stringId fromTable:(NSString *)tableName; - -- (void)db_putNumber:(NSNumber *)number withId:(NSString *)numberId intoTable:(NSString *)tableName; - -- (NSNumber *)db_getNumberById:(NSString *)numberId fromTable:(NSString *)tableName; - -- (NSArray *)db_getAllItemsFromTable:(NSString *)tableName; - -- (NSArray *)db_getItemsFromTable:(NSString *)tableName withRange:(NSRange)range; - -- (void)db_deleteObjectById:(NSString *)objectId fromTable:(NSString *)tableName; - -- (void)db_deleteObjectsByIdArray:(NSArray *)objectIdArray fromTable:(NSString *)tableName; - -- (void)db_deleteObjectsByIdPrefix:(NSString *)objectIdPrefix fromTable:(NSString *)tableName; - -@end - -``` - diff --git a/SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/SMKStorePublic.h b/SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/SMKStorePublic.h deleted file mode 100644 index d21c0c1..0000000 --- a/SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/SMKStorePublic.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// SMKStorePublic.h -// SUIMVVMStoreDemo -// -// Created by yuantao on 16/3/2. -// Copyright © 2016年 momo. All rights reserved. -// - -#ifndef SMKStorePublic_h -#define SMKStorePublic_h - -#import "SMKStore.h" - -#endif /* SMKStorePublic_h */ diff --git a/SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/SUIMVVMStore/SMKStore.h b/SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/SUIMVVMStore/SMKStore.h deleted file mode 100644 index 5365251..0000000 --- a/SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/SUIMVVMStore/SMKStore.h +++ /dev/null @@ -1,105 +0,0 @@ -// -// SMKStore.h -// MVVMFramework -// -// Created by yuantao on 16/1/24. -// Copyright © 2016年 momo. All rights reserved. -// - -#import - -@interface SMKStoreItem : NSObject - -@property (copy, nonatomic) NSString *itemId; -@property (strong, nonatomic) id itemObject; -@property (strong, nonatomic) NSDate *createdTime; - -@end - -@interface SMKStore : NSObject - -+ (instancetype)sharedStore; - -/** - * 根据dbName初始化数据库 - */ -- (BOOL)db_initDBWithName:(NSString *)dbName; - -/** - * 根据dbPath初始化数据库 - */ -- (BOOL)db_initDBWithPath:(NSString *)dbPath; - -/** - * 根据tableName创建数据表 - */ -- (void)db_createTableWithName:(NSString *)tableName; - -/** - * 初始化dbName并根据tableName创建表 - */ -- (void)db_initWithDBName:(NSString *)dbName tableName:(NSString *)tableName; - -/** - * 初始化dbPath并根据tableName创建表 - */ -- (void)db_initWithDBPath:(NSString *)dbPath tableName:(NSString *)tableName; - -/** - * 清空数据表 - */ -- (void)db_clearTable:(NSString *)tableName; - -/** - * 删除表 - */ -- (BOOL)db_deleteTable:(NSString *)tableName; - -/** - * 删除数据库 - */ -- (void)db_deleteDatabseWithDBName:(NSString *)DBName; - -/** - * 关闭数据库 - */ -- (void)db_close; - -/** - * 获得数据库存储路径 - */ -- (NSString *)db_getDBPath; - -/** - * tableName是否存在 - */ -- (BOOL)db_isExistTableWithName:(NSString *)tableName; - -///************************ Put&Get methods ***************************************** - -- (void)db_putObject:(id)object withId:(NSString *)objectId intoTable:(NSString *)tableName; - -- (id)db_getObjectById:(NSString *)objectId fromTable:(NSString *)tableName; - -- (SMKStoreItem *)db_getStoreItemById:(NSString *)objectId fromTable:(NSString *)tableName; - -- (void)db_putString:(NSString *)string withId:(NSString *)stringId intoTable:(NSString *)tableName; - -- (NSString *)db_getStringById:(NSString *)stringId fromTable:(NSString *)tableName; - -- (void)db_putNumber:(NSNumber *)number withId:(NSString *)numberId intoTable:(NSString *)tableName; - -- (NSNumber *)db_getNumberById:(NSString *)numberId fromTable:(NSString *)tableName; - -- (NSArray *)db_getAllItemsFromTable:(NSString *)tableName; - -- (NSArray *)db_getItemsFromTable:(NSString *)tableName withRange:(NSRange)range; - -- (void)db_deleteObjectById:(NSString *)objectId fromTable:(NSString *)tableName; - -- (void)db_deleteObjectsByIdArray:(NSArray *)objectIdArray fromTable:(NSString *)tableName; - -- (void)db_deleteObjectsByIdPrefix:(NSString *)objectIdPrefix fromTable:(NSString *)tableName; - - -@end diff --git a/SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/SUIMVVMStore/SMKStore.m b/SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/SUIMVVMStore/SMKStore.m deleted file mode 100644 index db87179..0000000 --- a/SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/SUIMVVMStore/SMKStore.m +++ /dev/null @@ -1,162 +0,0 @@ -// -// SMKStore.m -// MVVMFramework -// -// Created by yuantao on 16/1/24. -// Copyright © 2016年 momo. All rights reserved. -// - -#import "SMKStore.h" -#import "YTKKeyValueStore.h" - -@implementation SMKStoreItem - -- (NSString *)description { - return [NSString stringWithFormat:@"id=%@, value=%@, timeStamp=%@", _itemId, _itemObject, _createdTime]; -} - -@end - -@interface SMKStore () -@property (nonatomic, strong) YTKKeyValueStore *ytk_store; -@end - -@implementation SMKStore - -static id _instace; - -+ (id)allocWithZone:(struct _NSZone *)zone -{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _instace = [super allocWithZone:zone]; - }); - return _instace; -} - -+ (instancetype)sharedStore -{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _instace = [[self alloc] init]; - }); - return _instace; -} - -- (id)copyWithZone:(NSZone *)zone -{ - return _instace; -} - -- (YTKKeyValueStore *)ytk_store { - if (_ytk_store == nil) { - _ytk_store = [[YTKKeyValueStore alloc]init]; - } - return _ytk_store; -} - -- (BOOL)db_initDBWithName:(NSString *)dbName { - return [self.ytk_store initDBWithName:dbName] == nil ? NO : YES; -} - -- (BOOL)db_initDBWithPath:(NSString *)dbPath { - return [self.ytk_store initWithDBWithPath:dbPath] == nil ? NO : YES; -} - -- (void)db_createTableWithName:(NSString *)tableName { - [self.ytk_store createTableWithName:tableName]; -} - -- (void)db_initWithDBName:(NSString *)dbName tableName:(NSString *)tableName { - if ([self db_initDBWithName:dbName]) { - [self.ytk_store createTableWithName:tableName]; - } -} - -- (void)db_initWithDBPath:(NSString *)dbPath tableName:(NSString *)tableName { - if ([self db_initDBWithPath:dbPath]) { - [self.ytk_store createTableWithName:tableName]; - } -} - -- (void)db_clearTable:(NSString *)tableName { - [self.ytk_store clearTable:tableName]; -} - -- (BOOL)db_deleteTable:(NSString *)tableName { - return [self.ytk_store deleteTable:tableName]; -} - -- (void)db_deleteDatabseWithDBName:(NSString *)DBName { - [self.ytk_store deleteDatabseWithDBName:DBName]; -} - -- (void)db_close { - [self.ytk_store close]; -} - -- (NSString *)db_getDBPath { - return [self.ytk_store getDBPath]; -} - -- (BOOL)db_isExistTableWithName:(NSString *)tableName { - return [self.ytk_store isExistTableWithName:tableName]; -} -///************************ Put&Get methods ***************************************** - -- (void)db_putObject:(id)object withId:(NSString *)objectId intoTable:(NSString *)tableName { - [self.ytk_store putObject:object withId:objectId intoTable:tableName]; -} - -- (id)db_getObjectById:(NSString *)objectId fromTable:(NSString *)tableName { - return [self.ytk_store getObjectById:objectId fromTable:tableName]; -} - -- (SMKStoreItem *)db_getStoreItemById:(NSString *)objectId fromTable:(NSString *)tableName { - YTKKeyValueItem *item = [self.ytk_store getYTKKeyValueItemById:objectId fromTable:tableName]; - - SMKStoreItem *storeItem = [[SMKStoreItem alloc]init]; - storeItem.itemId = item.itemId; - storeItem.itemObject = item.itemObject; - storeItem.createdTime = item.createdTime; - - return storeItem; -} - -- (void)db_putString:(NSString *)string withId:(NSString *)stringId intoTable:(NSString *)tableName { - [self.ytk_store putString:string withId:stringId intoTable:tableName]; -} - -- (NSString *)db_getStringById:(NSString *)stringId fromTable:(NSString *)tableName { - return [self.ytk_store getStringById:stringId fromTable:tableName]; -} - -- (void)db_putNumber:(NSNumber *)number withId:(NSString *)numberId intoTable:(NSString *)tableName { - [self.ytk_store putNumber:number withId:numberId intoTable:tableName]; -} - -- (NSNumber *)db_getNumberById:(NSString *)numberId fromTable:(NSString *)tableName { - return [self.ytk_store getNumberById:numberId fromTable:tableName]; -} - -- (NSArray *)db_getAllItemsFromTable:(NSString *)tableName { - return [self.ytk_store getAllItemsFromTable:tableName]; -} - -- (void)db_deleteObjectById:(NSString *)objectId fromTable:(NSString *)tableName { - [self.ytk_store deleteObjectById:objectId fromTable:tableName]; -} - -- (void)db_deleteObjectsByIdArray:(NSArray *)objectIdArray fromTable:(NSString *)tableName { - [self.ytk_store deleteObjectsByIdArray:objectIdArray fromTable:tableName]; -} - -- (void)db_deleteObjectsByIdPrefix:(NSString *)objectIdPrefix fromTable:(NSString *)tableName { - [self.ytk_store deleteObjectsByIdPrefix:objectIdPrefix fromTable:tableName]; -} - -- (NSArray *)db_getItemsFromTable:(NSString *)tableName withRange:(NSRange)range { - return [self.ytk_store getItemsFromTable:tableName withRange:range]; -} - -@end diff --git a/SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/YTKKeyValueStore/YTKKeyValueStore.h b/SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/YTKKeyValueStore/YTKKeyValueStore.h deleted file mode 100644 index e906829..0000000 --- a/SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/YTKKeyValueStore/YTKKeyValueStore.h +++ /dev/null @@ -1,66 +0,0 @@ -// -// YTKKeyValueStore.h -// Ape -// -// Created by TangQiao on 12-11-6. -// Copyright (c) 2012年 TangQiao. All rights reserved. -// - -#import - -@interface YTKKeyValueItem : NSObject - -@property (strong, nonatomic) NSString *itemId; -@property (strong, nonatomic) id itemObject; -@property (strong, nonatomic) NSDate *createdTime; - -@end - - -@interface YTKKeyValueStore : NSObject - -- (id)initDBWithName:(NSString *)dbName; - -- (id)initWithDBWithPath:(NSString *)dbPath; - -- (void)createTableWithName:(NSString *)tableName; - -- (void)clearTable:(NSString *)tableName; - -- (BOOL)isExistTableWithName:(NSString *)tableName; - -- (BOOL)deleteTable:(NSString *)tableName; - -- (void)deleteDatabseWithDBName:(NSString *)DBName; - -- (NSString *)getDBPath; - -- (void)close; - -///************************ Put&Get methods ***************************************** - -- (void)putObject:(id)object withId:(NSString *)objectId intoTable:(NSString *)tableName; - -- (id)getObjectById:(NSString *)objectId fromTable:(NSString *)tableName; - -- (YTKKeyValueItem *)getYTKKeyValueItemById:(NSString *)objectId fromTable:(NSString *)tableName; - -- (void)putString:(NSString *)string withId:(NSString *)stringId intoTable:(NSString *)tableName; - -- (NSString *)getStringById:(NSString *)stringId fromTable:(NSString *)tableName; - -- (void)putNumber:(NSNumber *)number withId:(NSString *)numberId intoTable:(NSString *)tableName; - -- (NSNumber *)getNumberById:(NSString *)numberId fromTable:(NSString *)tableName; - -- (NSArray *)getAllItemsFromTable:(NSString *)tableName; - -- (void)deleteObjectById:(NSString *)objectId fromTable:(NSString *)tableName; - -- (void)deleteObjectsByIdArray:(NSArray *)objectIdArray fromTable:(NSString *)tableName; - -- (void)deleteObjectsByIdPrefix:(NSString *)objectIdPrefix fromTable:(NSString *)tableName; - -- (NSArray *)getItemsFromTable:(NSString *)tableName withRange:(NSRange)range; - -@end diff --git a/SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UIView+SUIAdditions.m b/SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UIView+SUIAdditions.m index 1c708b0..fa69d66 100644 --- a/SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UIView+SUIAdditions.m +++ b/SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UIView+SUIAdditions.m @@ -228,7 +228,7 @@ - (void)setSui_loadNib:(BOOL)sui_loadNib if (sui_loadNib) { UIView *curMainView = [self sui_mainView]; if (!curMainView) { - curMainView = [UIView sui_loadInstanceFromNib]; + curMainView = [[NSBundle mainBundle] loadNibNamed:gClassName(self) owner:self options:nil][0]; curMainView.frame = self.bounds; curMainView.backgroundColor = [UIColor clearColor]; [self setSui_mainView:curMainView]; @@ -251,7 +251,7 @@ - (void)setSui_mainView:(UIView *)sui_mainView + (instancetype)sui_loadInstanceFromNib { - return [self sui_loadInstanceFromNibWithName:gClassName(self)]; + return [self sui_loadInstanceFromNibWithName:NSStringFromClass([self class])]; } + (instancetype)sui_loadInstanceFromNibWithName:(NSString *)nibName { diff --git a/SUIMVVMDemo/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig b/SUIMVVMDemo/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig index 037ad99..cfa4466 100644 --- a/SUIMVVMDemo/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig +++ b/SUIMVVMDemo/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AFNetworking" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIMVVMNetwork" "${PODS_ROOT}/Headers/Public/SUIMVVMStore" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AFNetworking" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" OTHER_LDFLAGS = -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Target Support Files/FMDB/FMDB.xcconfig b/SUIMVVMDemo/Pods/Target Support Files/FMDB/FMDB.xcconfig index 56ccacf..d3d521f 100644 --- a/SUIMVVMDemo/Pods/Target Support Files/FMDB/FMDB.xcconfig +++ b/SUIMVVMDemo/Pods/Target Support Files/FMDB/FMDB.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FMDB" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIMVVMNetwork" "${PODS_ROOT}/Headers/Public/SUIMVVMStore" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FMDB" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" OTHER_LDFLAGS = -l"sqlite3" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Target Support Files/MJExtension/MJExtension.xcconfig b/SUIMVVMDemo/Pods/Target Support Files/MJExtension/MJExtension.xcconfig index f0aa7f0..cb4e3f6 100644 --- a/SUIMVVMDemo/Pods/Target Support Files/MJExtension/MJExtension.xcconfig +++ b/SUIMVVMDemo/Pods/Target Support Files/MJExtension/MJExtension.xcconfig @@ -1,4 +1,4 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJExtension" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIMVVMNetwork" "${PODS_ROOT}/Headers/Public/SUIMVVMStore" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJExtension" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Target Support Files/MJRefresh/MJRefresh.xcconfig b/SUIMVVMDemo/Pods/Target Support Files/MJRefresh/MJRefresh.xcconfig index 037b0cf..375dbb1 100644 --- a/SUIMVVMDemo/Pods/Target Support Files/MJRefresh/MJRefresh.xcconfig +++ b/SUIMVVMDemo/Pods/Target Support Files/MJRefresh/MJRefresh.xcconfig @@ -1,4 +1,4 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJRefresh" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIMVVMNetwork" "${PODS_ROOT}/Headers/Public/SUIMVVMStore" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJRefresh" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Target Support Files/Masonry/Masonry.xcconfig b/SUIMVVMDemo/Pods/Target Support Files/Masonry/Masonry.xcconfig index f6f6ea6..06eed82 100644 --- a/SUIMVVMDemo/Pods/Target Support Files/Masonry/Masonry.xcconfig +++ b/SUIMVVMDemo/Pods/Target Support Files/Masonry/Masonry.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Masonry" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIMVVMNetwork" "${PODS_ROOT}/Headers/Public/SUIMVVMStore" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Masonry" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" OTHER_LDFLAGS = -framework "Foundation" -framework "UIKit" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown b/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown index 0c8200f..77bfc2f 100644 --- a/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown +++ b/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown @@ -3,7 +3,7 @@ This application makes use of the following third party libraries: ## AFNetworking -Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +Copyright (c) 2011–2016 Alamofire Software Foundation (http://alamofire.org/) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -123,56 +123,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -## SUIMVVMNetwork - -The MIT License (MIT) - -Copyright (c) 2016 lovemo - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -## SUIMVVMStore - -The MIT License (MIT) - -Copyright (c) 2016 lovemo - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ## SUIUtils The MIT License (MIT) diff --git a/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods-acknowledgements.plist b/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods-acknowledgements.plist index 2b8f3a0..b386a4d 100644 --- a/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods-acknowledgements.plist +++ b/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods-acknowledgements.plist @@ -14,7 +14,7 @@ FooterText - Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) + Copyright (c) 2011–2016 Alamofire Software Foundation (http://alamofire.org/) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -158,64 +158,6 @@ THE SOFTWARE. FooterText The MIT License (MIT) -Copyright (c) 2016 lovemo - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - Title - SUIMVVMNetwork - Type - PSGroupSpecifier - - - FooterText - The MIT License (MIT) - -Copyright (c) 2016 lovemo - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - Title - SUIMVVMStore - Type - PSGroupSpecifier - - - FooterText - The MIT License (MIT) - Copyright (c) 2016 randomprocess Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods.debug.xcconfig b/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods.debug.xcconfig index c0cba6f..004b83c 100644 --- a/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods.debug.xcconfig +++ b/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods.debug.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIMVVMNetwork" "${PODS_ROOT}/Headers/Public/SUIMVVMStore" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/FMDB" -isystem "${PODS_ROOT}/Headers/Public/MJExtension" -isystem "${PODS_ROOT}/Headers/Public/MJRefresh" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/SUIMVVMNetwork" -isystem "${PODS_ROOT}/Headers/Public/SUIMVVMStore" -isystem "${PODS_ROOT}/Headers/Public/SUIUtils" -isystem "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" -OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"FMDB" -l"MJExtension" -l"MJRefresh" -l"Masonry" -l"SUIMVVMNetwork" -l"SUIMVVMStore" -l"SUIUtils" -l"UITableView+FDTemplateLayoutCell" -l"sqlite3" -framework "CoreFoundation" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/FMDB" -isystem "${PODS_ROOT}/Headers/Public/MJExtension" -isystem "${PODS_ROOT}/Headers/Public/MJRefresh" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/SUIUtils" -isystem "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"FMDB" -l"MJExtension" -l"MJRefresh" -l"Masonry" -l"SUIUtils" -l"UITableView+FDTemplateLayoutCell" -l"sqlite3" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods.release.xcconfig b/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods.release.xcconfig index c0cba6f..004b83c 100644 --- a/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods.release.xcconfig +++ b/SUIMVVMDemo/Pods/Target Support Files/Pods/Pods.release.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIMVVMNetwork" "${PODS_ROOT}/Headers/Public/SUIMVVMStore" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/FMDB" -isystem "${PODS_ROOT}/Headers/Public/MJExtension" -isystem "${PODS_ROOT}/Headers/Public/MJRefresh" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/SUIMVVMNetwork" -isystem "${PODS_ROOT}/Headers/Public/SUIMVVMStore" -isystem "${PODS_ROOT}/Headers/Public/SUIUtils" -isystem "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" -OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"FMDB" -l"MJExtension" -l"MJRefresh" -l"Masonry" -l"SUIMVVMNetwork" -l"SUIMVVMStore" -l"SUIUtils" -l"UITableView+FDTemplateLayoutCell" -l"sqlite3" -framework "CoreFoundation" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/FMDB" -isystem "${PODS_ROOT}/Headers/Public/MJExtension" -isystem "${PODS_ROOT}/Headers/Public/MJRefresh" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/SUIUtils" -isystem "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"FMDB" -l"MJExtension" -l"MJRefresh" -l"Masonry" -l"SUIUtils" -l"UITableView+FDTemplateLayoutCell" -l"sqlite3" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMNetwork/SUIMVVMNetwork-dummy.m b/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMNetwork/SUIMVVMNetwork-dummy.m deleted file mode 100644 index 9c56459..0000000 --- a/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMNetwork/SUIMVVMNetwork-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_SUIMVVMNetwork : NSObject -@end -@implementation PodsDummy_SUIMVVMNetwork -@end diff --git a/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMNetwork/SUIMVVMNetwork-prefix.pch b/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMNetwork/SUIMVVMNetwork-prefix.pch deleted file mode 100644 index aa992a4..0000000 --- a/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMNetwork/SUIMVVMNetwork-prefix.pch +++ /dev/null @@ -1,4 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - diff --git a/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMNetwork/SUIMVVMNetwork.xcconfig b/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMNetwork/SUIMVVMNetwork.xcconfig deleted file mode 100644 index c56625a..0000000 --- a/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMNetwork/SUIMVVMNetwork.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SUIMVVMNetwork" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIMVVMNetwork" "${PODS_ROOT}/Headers/Public/SUIMVVMStore" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" -OTHER_LDFLAGS = -framework "CoreFoundation" -framework "Foundation" -framework "UIKit" -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMStore/SUIMVVMStore-dummy.m b/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMStore/SUIMVVMStore-dummy.m deleted file mode 100644 index 33110b2..0000000 --- a/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMStore/SUIMVVMStore-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_SUIMVVMStore : NSObject -@end -@implementation PodsDummy_SUIMVVMStore -@end diff --git a/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMStore/SUIMVVMStore-prefix.pch b/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMStore/SUIMVVMStore-prefix.pch deleted file mode 100644 index aa992a4..0000000 --- a/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMStore/SUIMVVMStore-prefix.pch +++ /dev/null @@ -1,4 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - diff --git a/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMStore/SUIMVVMStore.xcconfig b/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMStore/SUIMVVMStore.xcconfig deleted file mode 100644 index d5fb066..0000000 --- a/SUIMVVMDemo/Pods/Target Support Files/SUIMVVMStore/SUIMVVMStore.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SUIMVVMStore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIMVVMNetwork" "${PODS_ROOT}/Headers/Public/SUIMVVMStore" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" -OTHER_LDFLAGS = -l"sqlite3" -framework "CoreFoundation" -framework "Foundation" -framework "UIKit" -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Target Support Files/SUIUtils/SUIUtils.xcconfig b/SUIMVVMDemo/Pods/Target Support Files/SUIUtils/SUIUtils.xcconfig index 71edb97..4e722c2 100644 --- a/SUIMVVMDemo/Pods/Target Support Files/SUIUtils/SUIUtils.xcconfig +++ b/SUIMVVMDemo/Pods/Target Support Files/SUIUtils/SUIUtils.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SUIUtils" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIMVVMNetwork" "${PODS_ROOT}/Headers/Public/SUIMVVMStore" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SUIUtils" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" OTHER_LDFLAGS = -framework "CoreGraphics" -framework "Foundation" -framework "QuartzCore" -framework "UIKit" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/SUIMVVMDemo/Pods/Target Support Files/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell.xcconfig b/SUIMVVMDemo/Pods/Target Support Files/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell.xcconfig index 49dcedd..2b73845 100644 --- a/SUIMVVMDemo/Pods/Target Support Files/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell.xcconfig +++ b/SUIMVVMDemo/Pods/Target Support Files/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell.xcconfig @@ -1,4 +1,4 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/UITableView+FDTemplateLayoutCell" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIMVVMNetwork" "${PODS_ROOT}/Headers/Public/SUIMVVMStore" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/UITableView+FDTemplateLayoutCell" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/SUIMVVMDemo/SUIMVVMDemo.xcodeproj/project.pbxproj b/SUIMVVMDemo/SUIMVVMDemo.xcodeproj/project.pbxproj index 6d85179..2403623 100644 --- a/SUIMVVMDemo/SUIMVVMDemo.xcodeproj/project.pbxproj +++ b/SUIMVVMDemo/SUIMVVMDemo.xcodeproj/project.pbxproj @@ -8,42 +8,27 @@ /* Begin PBXBuildFile section */ 0435D35A1C8C6CD10046D2B3 /* FirstVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3101C8C6CD10046D2B3 /* FirstVC.m */; }; - 0435D35B1C8C6CD10046D2B3 /* TestViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3121C8C6CD10046D2B3 /* TestViewDelegate.m */; }; 0435D35C1C8C6CD10046D2B3 /* FirstModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3151C8C6CD10046D2B3 /* FirstModel.m */; }; - 0435D35D1C8C6CD10046D2B3 /* BQCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3181C8C6CD10046D2B3 /* BQCell.m */; }; - 0435D35E1C8C6CD10046D2B3 /* BQCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0435D3191C8C6CD10046D2B3 /* BQCell.xib */; }; - 0435D35F1C8C6CD10046D2B3 /* BQGetDataList.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D31C1C8C6CD10046D2B3 /* BQGetDataList.m */; }; - 0435D3601C8C6CD10046D2B3 /* BQViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D31E1C8C6CD10046D2B3 /* BQViewModel.m */; }; - 0435D3611C8C6CD10046D2B3 /* FourthVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3221C8C6CD10046D2B3 /* FourthVC.m */; }; - 0435D3621C8C6CD10046D2B3 /* FourthModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3251C8C6CD10046D2B3 /* FourthModel.m */; }; - 0435D3631C8C6CD10046D2B3 /* FourthView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3291C8C6CD10046D2B3 /* FourthView.m */; }; - 0435D3641C8C6CD10046D2B3 /* FourthView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0435D32A1C8C6CD10046D2B3 /* FourthView.xib */; }; - 0435D3651C8C6CD10046D2B3 /* FourthView2.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D32D1C8C6CD10046D2B3 /* FourthView2.m */; }; - 0435D3661C8C6CD10046D2B3 /* FourthView2.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0435D32E1C8C6CD10046D2B3 /* FourthView2.xib */; }; - 0435D3671C8C6CD10046D2B3 /* FourthViewManger.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3321C8C6CD10046D2B3 /* FourthViewManger.m */; }; - 0435D3681C8C6CD10046D2B3 /* FourthViewManger2.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3351C8C6CD10046D2B3 /* FourthViewManger2.m */; }; - 0435D3691C8C6CD10046D2B3 /* FourthViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3381C8C6CD10046D2B3 /* FourthViewModel.m */; }; - 0435D36A1C8C6CD10046D2B3 /* SecondVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D33C1C8C6CD10046D2B3 /* SecondVC.m */; }; - 0435D36B1C8C6CD10046D2B3 /* BQTestModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D33F1C8C6CD10046D2B3 /* BQTestModel.m */; }; - 0435D36C1C8C6CD10046D2B3 /* BQCollectionCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3421C8C6CD10046D2B3 /* BQCollectionCell.m */; }; - 0435D36D1C8C6CD10046D2B3 /* BQCollectionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0435D3431C8C6CD10046D2B3 /* BQCollectionCell.xib */; }; - 0435D36E1C8C6CD10046D2B3 /* BQGetDataList2.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3461C8C6CD10046D2B3 /* BQGetDataList2.m */; }; - 0435D36F1C8C6CD10046D2B3 /* BQViewModel2.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3481C8C6CD10046D2B3 /* BQViewModel2.m */; }; + 0435D35D1C8C6CD10046D2B3 /* FirstCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3181C8C6CD10046D2B3 /* FirstCell.m */; }; + 0435D35E1C8C6CD10046D2B3 /* FirstCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0435D3191C8C6CD10046D2B3 /* FirstCell.xib */; }; + 0435D3601C8C6CD10046D2B3 /* FirstViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D31E1C8C6CD10046D2B3 /* FirstViewModel.m */; }; 0435D3701C8C6CD10046D2B3 /* ThirdVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D34C1C8C6CD10046D2B3 /* ThirdVC.m */; }; 0435D3711C8C6CD10046D2B3 /* ThirdModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D34F1C8C6CD10046D2B3 /* ThirdModel.m */; }; 0435D3721C8C6CD10046D2B3 /* ThirdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3521C8C6CD10046D2B3 /* ThirdView.m */; }; 0435D3731C8C6CD10046D2B3 /* ThirdView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0435D3531C8C6CD10046D2B3 /* ThirdView.xib */; }; 0435D3741C8C6CD10046D2B3 /* ThirdViewManger.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3561C8C6CD10046D2B3 /* ThirdViewManger.m */; }; 0435D3751C8C6CD10046D2B3 /* ThirdViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 0435D3591C8C6CD10046D2B3 /* ThirdViewModel.m */; }; - 34B708CF1C95253000CCB2D1 /* SMKBaseCollectionViewManger.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B708621C95253000CCB2D1 /* SMKBaseCollectionViewManger.m */; }; - 34B708D01C95253000CCB2D1 /* SMKBaseTableViewManger.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B708641C95253000CCB2D1 /* SMKBaseTableViewManger.m */; }; - 34B708D11C95253000CCB2D1 /* UICollectionView+CollectionDataDelegateAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B7086B1C95253000CCB2D1 /* UICollectionView+CollectionDataDelegateAdditions.m */; }; - 34B708D21C95253000CCB2D1 /* UICollectionViewCell+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B7086D1C95253000CCB2D1 /* UICollectionViewCell+Extension.m */; }; - 34B708D31C95253000CCB2D1 /* UITableView+TableDataDelegateAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B7086F1C95253000CCB2D1 /* UITableView+TableDataDelegateAdditions.m */; }; - 34B708D41C95253000CCB2D1 /* UITableViewCell+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B708711C95253000CCB2D1 /* UITableViewCell+Extension.m */; }; - 34B708D51C95253000CCB2D1 /* UIView+Configure.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B708731C95253000CCB2D1 /* UIView+Configure.m */; }; - 34B708D61C95253000CCB2D1 /* UIView+ViewDelegateAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B708751C95253000CCB2D1 /* UIView+ViewDelegateAdditions.m */; }; - 34B708D71C95253000CCB2D1 /* UIViewController+ControllerAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B708771C95253000CCB2D1 /* UIViewController+ControllerAdditions.m */; }; + 34978FE91CB7522200995D23 /* FirstRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 34978FE81CB7522200995D23 /* FirstRequest.m */; }; + 34978FEF1CB77F5400995D23 /* ThirdRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 34978FEE1CB77F5400995D23 /* ThirdRequest.m */; }; + 349790091CB7898000995D23 /* NSObject+SMKProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 34978FF21CB7898000995D23 /* NSObject+SMKProperties.m */; }; + 3497900A1CB7898000995D23 /* NSObject+SMKRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 34978FF41CB7898000995D23 /* NSObject+SMKRequest.m */; }; + 3497900B1CB7898000995D23 /* SMKAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 34978FF61CB7898000995D23 /* SMKAction.m */; }; + 3497900C1CB7898000995D23 /* SMKStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 34978FFA1CB7898000995D23 /* SMKStore.m */; }; + 3497900D1CB7898000995D23 /* UICollectionViewCell+SMKConfigure.m in Sources */ = {isa = PBXBuildFile; fileRef = 349790021CB7898000995D23 /* UICollectionViewCell+SMKConfigure.m */; }; + 3497900E1CB7898000995D23 /* UITableViewCell+SMKConfigure.m in Sources */ = {isa = PBXBuildFile; fileRef = 349790041CB7898000995D23 /* UITableViewCell+SMKConfigure.m */; }; + 3497900F1CB7898000995D23 /* UIView+SMKConfigure.m in Sources */ = {isa = PBXBuildFile; fileRef = 349790061CB7898000995D23 /* UIView+SMKConfigure.m */; }; + 349790101CB7898000995D23 /* UIView+SMKEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 349790081CB7898000995D23 /* UIView+SMKEvents.m */; }; + 34F688A11CB7A85400518803 /* FirstTableViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 34F688A01CB7A85400518803 /* FirstTableViewModel.m */; }; 34F72F851C8BF6A90033ED03 /* BHNavViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34F72F1F1C8BF6A90033ED03 /* BHNavViewController.m */; }; 34F72F861C8BF6A90033ED03 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 34F72F2A1C8BF6A90033ED03 /* AppDelegate.m */; }; 34F72F871C8BF6A90033ED03 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 34F72F2B1C8BF6A90033ED03 /* main.m */; }; @@ -57,44 +42,13 @@ /* Begin PBXFileReference section */ 0435D30F1C8C6CD10046D2B3 /* FirstVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirstVC.h; sourceTree = ""; }; 0435D3101C8C6CD10046D2B3 /* FirstVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FirstVC.m; sourceTree = ""; }; - 0435D3111C8C6CD10046D2B3 /* TestViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestViewDelegate.h; sourceTree = ""; }; - 0435D3121C8C6CD10046D2B3 /* TestViewDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestViewDelegate.m; sourceTree = ""; }; 0435D3141C8C6CD10046D2B3 /* FirstModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirstModel.h; sourceTree = ""; }; 0435D3151C8C6CD10046D2B3 /* FirstModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FirstModel.m; sourceTree = ""; }; - 0435D3171C8C6CD10046D2B3 /* BQCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BQCell.h; sourceTree = ""; }; - 0435D3181C8C6CD10046D2B3 /* BQCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BQCell.m; sourceTree = ""; }; - 0435D3191C8C6CD10046D2B3 /* BQCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BQCell.xib; sourceTree = ""; }; - 0435D31B1C8C6CD10046D2B3 /* BQGetDataList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BQGetDataList.h; sourceTree = ""; }; - 0435D31C1C8C6CD10046D2B3 /* BQGetDataList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BQGetDataList.m; sourceTree = ""; }; - 0435D31D1C8C6CD10046D2B3 /* BQViewModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BQViewModel.h; sourceTree = ""; }; - 0435D31E1C8C6CD10046D2B3 /* BQViewModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BQViewModel.m; sourceTree = ""; }; - 0435D3211C8C6CD10046D2B3 /* FourthVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FourthVC.h; sourceTree = ""; }; - 0435D3221C8C6CD10046D2B3 /* FourthVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FourthVC.m; sourceTree = ""; }; - 0435D3241C8C6CD10046D2B3 /* FourthModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FourthModel.h; sourceTree = ""; }; - 0435D3251C8C6CD10046D2B3 /* FourthModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FourthModel.m; sourceTree = ""; }; - 0435D3281C8C6CD10046D2B3 /* FourthView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FourthView.h; sourceTree = ""; }; - 0435D3291C8C6CD10046D2B3 /* FourthView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FourthView.m; sourceTree = ""; }; - 0435D32A1C8C6CD10046D2B3 /* FourthView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FourthView.xib; sourceTree = ""; }; - 0435D32C1C8C6CD10046D2B3 /* FourthView2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FourthView2.h; sourceTree = ""; }; - 0435D32D1C8C6CD10046D2B3 /* FourthView2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FourthView2.m; sourceTree = ""; }; - 0435D32E1C8C6CD10046D2B3 /* FourthView2.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FourthView2.xib; sourceTree = ""; }; - 0435D3311C8C6CD10046D2B3 /* FourthViewManger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FourthViewManger.h; sourceTree = ""; }; - 0435D3321C8C6CD10046D2B3 /* FourthViewManger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FourthViewManger.m; sourceTree = ""; }; - 0435D3341C8C6CD10046D2B3 /* FourthViewManger2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FourthViewManger2.h; sourceTree = ""; }; - 0435D3351C8C6CD10046D2B3 /* FourthViewManger2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FourthViewManger2.m; sourceTree = ""; }; - 0435D3371C8C6CD10046D2B3 /* FourthViewModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FourthViewModel.h; sourceTree = ""; }; - 0435D3381C8C6CD10046D2B3 /* FourthViewModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FourthViewModel.m; sourceTree = ""; }; - 0435D33B1C8C6CD10046D2B3 /* SecondVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecondVC.h; sourceTree = ""; }; - 0435D33C1C8C6CD10046D2B3 /* SecondVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SecondVC.m; sourceTree = ""; }; - 0435D33E1C8C6CD10046D2B3 /* BQTestModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BQTestModel.h; sourceTree = ""; }; - 0435D33F1C8C6CD10046D2B3 /* BQTestModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BQTestModel.m; sourceTree = ""; }; - 0435D3411C8C6CD10046D2B3 /* BQCollectionCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BQCollectionCell.h; sourceTree = ""; }; - 0435D3421C8C6CD10046D2B3 /* BQCollectionCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BQCollectionCell.m; sourceTree = ""; }; - 0435D3431C8C6CD10046D2B3 /* BQCollectionCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BQCollectionCell.xib; sourceTree = ""; }; - 0435D3451C8C6CD10046D2B3 /* BQGetDataList2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BQGetDataList2.h; sourceTree = ""; }; - 0435D3461C8C6CD10046D2B3 /* BQGetDataList2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BQGetDataList2.m; sourceTree = ""; }; - 0435D3471C8C6CD10046D2B3 /* BQViewModel2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BQViewModel2.h; sourceTree = ""; }; - 0435D3481C8C6CD10046D2B3 /* BQViewModel2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BQViewModel2.m; sourceTree = ""; }; + 0435D3171C8C6CD10046D2B3 /* FirstCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirstCell.h; sourceTree = ""; }; + 0435D3181C8C6CD10046D2B3 /* FirstCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FirstCell.m; sourceTree = ""; }; + 0435D3191C8C6CD10046D2B3 /* FirstCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FirstCell.xib; sourceTree = ""; }; + 0435D31D1C8C6CD10046D2B3 /* FirstViewModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirstViewModel.h; sourceTree = ""; }; + 0435D31E1C8C6CD10046D2B3 /* FirstViewModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FirstViewModel.m; sourceTree = ""; }; 0435D34B1C8C6CD10046D2B3 /* ThirdVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThirdVC.h; sourceTree = ""; }; 0435D34C1C8C6CD10046D2B3 /* ThirdVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ThirdVC.m; sourceTree = ""; }; 0435D34E1C8C6CD10046D2B3 /* ThirdModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThirdModel.h; sourceTree = ""; }; @@ -107,32 +61,36 @@ 0435D3581C8C6CD10046D2B3 /* ThirdViewModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThirdViewModel.h; sourceTree = ""; }; 0435D3591C8C6CD10046D2B3 /* ThirdViewModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ThirdViewModel.m; sourceTree = ""; }; 344113281C7AD7FE001FEAE6 /* PrefixHeader.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrefixHeader.pch; sourceTree = ""; }; - 34B708611C95253000CCB2D1 /* SMKBaseCollectionViewManger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKBaseCollectionViewManger.h; sourceTree = ""; }; - 34B708621C95253000CCB2D1 /* SMKBaseCollectionViewManger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SMKBaseCollectionViewManger.m; sourceTree = ""; }; - 34B708631C95253000CCB2D1 /* SMKBaseTableViewManger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKBaseTableViewManger.h; sourceTree = ""; }; - 34B708641C95253000CCB2D1 /* SMKBaseTableViewManger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SMKBaseTableViewManger.m; sourceTree = ""; }; - 34B708661C95253000CCB2D1 /* SMKConstant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKConstant.h; sourceTree = ""; }; - 34B708671C95253000CCB2D1 /* SMKSingleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKSingleton.h; sourceTree = ""; }; - 34B708691C95253000CCB2D1 /* SMKExtendPublic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKExtendPublic.h; sourceTree = ""; }; - 34B7086A1C95253000CCB2D1 /* UICollectionView+CollectionDataDelegateAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UICollectionView+CollectionDataDelegateAdditions.h"; sourceTree = ""; }; - 34B7086B1C95253000CCB2D1 /* UICollectionView+CollectionDataDelegateAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UICollectionView+CollectionDataDelegateAdditions.m"; sourceTree = ""; }; - 34B7086C1C95253000CCB2D1 /* UICollectionViewCell+Extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UICollectionViewCell+Extension.h"; sourceTree = ""; }; - 34B7086D1C95253000CCB2D1 /* UICollectionViewCell+Extension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UICollectionViewCell+Extension.m"; sourceTree = ""; }; - 34B7086E1C95253000CCB2D1 /* UITableView+TableDataDelegateAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITableView+TableDataDelegateAdditions.h"; sourceTree = ""; }; - 34B7086F1C95253000CCB2D1 /* UITableView+TableDataDelegateAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITableView+TableDataDelegateAdditions.m"; sourceTree = ""; }; - 34B708701C95253000CCB2D1 /* UITableViewCell+Extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITableViewCell+Extension.h"; sourceTree = ""; }; - 34B708711C95253000CCB2D1 /* UITableViewCell+Extension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITableViewCell+Extension.m"; sourceTree = ""; }; - 34B708721C95253000CCB2D1 /* UIView+Configure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+Configure.h"; sourceTree = ""; }; - 34B708731C95253000CCB2D1 /* UIView+Configure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Configure.m"; sourceTree = ""; }; - 34B708741C95253000CCB2D1 /* UIView+ViewDelegateAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+ViewDelegateAdditions.h"; sourceTree = ""; }; - 34B708751C95253000CCB2D1 /* UIView+ViewDelegateAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+ViewDelegateAdditions.m"; sourceTree = ""; }; - 34B708761C95253000CCB2D1 /* UIViewController+ControllerAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIViewController+ControllerAdditions.h"; sourceTree = ""; }; - 34B708771C95253000CCB2D1 /* UIViewController+ControllerAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+ControllerAdditions.m"; sourceTree = ""; }; - 34B7087A1C95253000CCB2D1 /* SMKViewControllerProtocolDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKViewControllerProtocolDelegate.h; sourceTree = ""; }; - 34B7087B1C95253000CCB2D1 /* SMKViewMangerProtocolDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKViewMangerProtocolDelegate.h; sourceTree = ""; }; - 34B7087C1C95253000CCB2D1 /* SMKViewModelProtocolDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKViewModelProtocolDelegate.h; sourceTree = ""; }; - 34B7087D1C95253000CCB2D1 /* SMKViewProtocolDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKViewProtocolDelegate.h; sourceTree = ""; }; - 34B7087E1C95253000CCB2D1 /* SUIMVVMKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SUIMVVMKit.h; sourceTree = ""; }; + 34978FE71CB7522200995D23 /* FirstRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FirstRequest.h; path = SUIMVVMDemo/Classes/Src/firstExample/Model/FirstRequest.h; sourceTree = SOURCE_ROOT; }; + 34978FE81CB7522200995D23 /* FirstRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FirstRequest.m; path = SUIMVVMDemo/Classes/Src/firstExample/Model/FirstRequest.m; sourceTree = SOURCE_ROOT; }; + 34978FED1CB77F5400995D23 /* ThirdRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThirdRequest.h; path = SUIMVVMDemo/Classes/Src/thirdExample/Model/ThirdRequest.h; sourceTree = SOURCE_ROOT; }; + 34978FEE1CB77F5400995D23 /* ThirdRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ThirdRequest.m; path = SUIMVVMDemo/Classes/Src/thirdExample/Model/ThirdRequest.m; sourceTree = SOURCE_ROOT; }; + 34978FF11CB7898000995D23 /* NSObject+SMKProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+SMKProperties.h"; sourceTree = ""; }; + 34978FF21CB7898000995D23 /* NSObject+SMKProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+SMKProperties.m"; sourceTree = ""; }; + 34978FF31CB7898000995D23 /* NSObject+SMKRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+SMKRequest.h"; sourceTree = ""; }; + 34978FF41CB7898000995D23 /* NSObject+SMKRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+SMKRequest.m"; sourceTree = ""; }; + 34978FF51CB7898000995D23 /* SMKAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKAction.h; sourceTree = ""; }; + 34978FF61CB7898000995D23 /* SMKAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SMKAction.m; sourceTree = ""; }; + 34978FF71CB7898000995D23 /* SMKConstant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKConstant.h; sourceTree = ""; }; + 34978FF81CB7898000995D23 /* SMKExtendPublic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKExtendPublic.h; sourceTree = ""; }; + 34978FF91CB7898000995D23 /* SMKStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKStore.h; sourceTree = ""; }; + 34978FFA1CB7898000995D23 /* SMKStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SMKStore.m; sourceTree = ""; }; + 34978FFB1CB7898000995D23 /* SMKRequestProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKRequestProtocol.h; sourceTree = ""; }; + 34978FFC1CB7898000995D23 /* SMKSingleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKSingleton.h; sourceTree = ""; }; + 34978FFD1CB7898000995D23 /* SMKViewMangerProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKViewMangerProtocol.h; sourceTree = ""; }; + 34978FFE1CB7898000995D23 /* SMKViewModelProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKViewModelProtocol.h; sourceTree = ""; }; + 34978FFF1CB7898000995D23 /* SMKViewProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMKViewProtocol.h; sourceTree = ""; }; + 349790001CB7898000995D23 /* SUIMVVMKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SUIMVVMKit.h; sourceTree = ""; }; + 349790011CB7898000995D23 /* UICollectionViewCell+SMKConfigure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UICollectionViewCell+SMKConfigure.h"; sourceTree = ""; }; + 349790021CB7898000995D23 /* UICollectionViewCell+SMKConfigure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UICollectionViewCell+SMKConfigure.m"; sourceTree = ""; }; + 349790031CB7898000995D23 /* UITableViewCell+SMKConfigure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITableViewCell+SMKConfigure.h"; sourceTree = ""; }; + 349790041CB7898000995D23 /* UITableViewCell+SMKConfigure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITableViewCell+SMKConfigure.m"; sourceTree = ""; }; + 349790051CB7898000995D23 /* UIView+SMKConfigure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+SMKConfigure.h"; sourceTree = ""; }; + 349790061CB7898000995D23 /* UIView+SMKConfigure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+SMKConfigure.m"; sourceTree = ""; }; + 349790071CB7898000995D23 /* UIView+SMKEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+SMKEvents.h"; sourceTree = ""; }; + 349790081CB7898000995D23 /* UIView+SMKEvents.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+SMKEvents.m"; sourceTree = ""; }; + 34F6889F1CB7A85400518803 /* FirstTableViewModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FirstTableViewModel.h; path = SUIMVVMDemo/Classes/Src/firstExample/ViewModel/FirstTableViewModel.h; sourceTree = SOURCE_ROOT; }; + 34F688A01CB7A85400518803 /* FirstTableViewModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FirstTableViewModel.m; path = SUIMVVMDemo/Classes/Src/firstExample/ViewModel/FirstTableViewModel.m; sourceTree = SOURCE_ROOT; }; 34F72F181C8BF6A90033ED03 /* CategoryPublicHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CategoryPublicHeader.h; sourceTree = ""; }; 34F72F1A1C8BF6A90033ED03 /* ConstantPublicHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConstantPublicHeader.h; sourceTree = ""; }; 34F72F1E1C8BF6A90033ED03 /* BHNavViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BHNavViewController.h; sourceTree = ""; }; @@ -173,8 +131,6 @@ isa = PBXGroup; children = ( 0435D30D1C8C6CD10046D2B3 /* FirstExample */, - 0435D31F1C8C6CD10046D2B3 /* FourthExample */, - 0435D3391C8C6CD10046D2B3 /* SecondExample */, 0435D3491C8C6CD10046D2B3 /* ThirdExample */, ); path = Src; @@ -196,8 +152,6 @@ children = ( 0435D30F1C8C6CD10046D2B3 /* FirstVC.h */, 0435D3101C8C6CD10046D2B3 /* FirstVC.m */, - 0435D3111C8C6CD10046D2B3 /* TestViewDelegate.h */, - 0435D3121C8C6CD10046D2B3 /* TestViewDelegate.m */, ); path = Controller; sourceTree = ""; @@ -207,6 +161,8 @@ children = ( 0435D3141C8C6CD10046D2B3 /* FirstModel.h */, 0435D3151C8C6CD10046D2B3 /* FirstModel.m */, + 34978FE71CB7522200995D23 /* FirstRequest.h */, + 34978FE81CB7522200995D23 /* FirstRequest.m */, ); path = Model; sourceTree = ""; @@ -214,9 +170,9 @@ 0435D3161C8C6CD10046D2B3 /* View */ = { isa = PBXGroup; children = ( - 0435D3171C8C6CD10046D2B3 /* BQCell.h */, - 0435D3181C8C6CD10046D2B3 /* BQCell.m */, - 0435D3191C8C6CD10046D2B3 /* BQCell.xib */, + 0435D3171C8C6CD10046D2B3 /* FirstCell.h */, + 0435D3181C8C6CD10046D2B3 /* FirstCell.m */, + 0435D3191C8C6CD10046D2B3 /* FirstCell.xib */, ); path = View; sourceTree = ""; @@ -224,155 +180,10 @@ 0435D31A1C8C6CD10046D2B3 /* ViewModel */ = { isa = PBXGroup; children = ( - 0435D31B1C8C6CD10046D2B3 /* BQGetDataList.h */, - 0435D31C1C8C6CD10046D2B3 /* BQGetDataList.m */, - 0435D31D1C8C6CD10046D2B3 /* BQViewModel.h */, - 0435D31E1C8C6CD10046D2B3 /* BQViewModel.m */, - ); - path = ViewModel; - sourceTree = ""; - }; - 0435D31F1C8C6CD10046D2B3 /* FourthExample */ = { - isa = PBXGroup; - children = ( - 0435D3201C8C6CD10046D2B3 /* Controller */, - 0435D3231C8C6CD10046D2B3 /* Model */, - 0435D3261C8C6CD10046D2B3 /* View */, - 0435D32F1C8C6CD10046D2B3 /* ViewManger */, - 0435D3361C8C6CD10046D2B3 /* ViewModel */, - ); - path = FourthExample; - sourceTree = ""; - }; - 0435D3201C8C6CD10046D2B3 /* Controller */ = { - isa = PBXGroup; - children = ( - 0435D3211C8C6CD10046D2B3 /* FourthVC.h */, - 0435D3221C8C6CD10046D2B3 /* FourthVC.m */, - ); - path = Controller; - sourceTree = ""; - }; - 0435D3231C8C6CD10046D2B3 /* Model */ = { - isa = PBXGroup; - children = ( - 0435D3241C8C6CD10046D2B3 /* FourthModel.h */, - 0435D3251C8C6CD10046D2B3 /* FourthModel.m */, - ); - path = Model; - sourceTree = ""; - }; - 0435D3261C8C6CD10046D2B3 /* View */ = { - isa = PBXGroup; - children = ( - 0435D3271C8C6CD10046D2B3 /* FourthView */, - 0435D32B1C8C6CD10046D2B3 /* FourthView2 */, - ); - path = View; - sourceTree = ""; - }; - 0435D3271C8C6CD10046D2B3 /* FourthView */ = { - isa = PBXGroup; - children = ( - 0435D3281C8C6CD10046D2B3 /* FourthView.h */, - 0435D3291C8C6CD10046D2B3 /* FourthView.m */, - 0435D32A1C8C6CD10046D2B3 /* FourthView.xib */, - ); - path = FourthView; - sourceTree = ""; - }; - 0435D32B1C8C6CD10046D2B3 /* FourthView2 */ = { - isa = PBXGroup; - children = ( - 0435D32C1C8C6CD10046D2B3 /* FourthView2.h */, - 0435D32D1C8C6CD10046D2B3 /* FourthView2.m */, - 0435D32E1C8C6CD10046D2B3 /* FourthView2.xib */, - ); - path = FourthView2; - sourceTree = ""; - }; - 0435D32F1C8C6CD10046D2B3 /* ViewManger */ = { - isa = PBXGroup; - children = ( - 0435D3301C8C6CD10046D2B3 /* FourthViewManger */, - 0435D3331C8C6CD10046D2B3 /* FourthViewManger2 */, - ); - path = ViewManger; - sourceTree = ""; - }; - 0435D3301C8C6CD10046D2B3 /* FourthViewManger */ = { - isa = PBXGroup; - children = ( - 0435D3311C8C6CD10046D2B3 /* FourthViewManger.h */, - 0435D3321C8C6CD10046D2B3 /* FourthViewManger.m */, - ); - path = FourthViewManger; - sourceTree = ""; - }; - 0435D3331C8C6CD10046D2B3 /* FourthViewManger2 */ = { - isa = PBXGroup; - children = ( - 0435D3341C8C6CD10046D2B3 /* FourthViewManger2.h */, - 0435D3351C8C6CD10046D2B3 /* FourthViewManger2.m */, - ); - path = FourthViewManger2; - sourceTree = ""; - }; - 0435D3361C8C6CD10046D2B3 /* ViewModel */ = { - isa = PBXGroup; - children = ( - 0435D3371C8C6CD10046D2B3 /* FourthViewModel.h */, - 0435D3381C8C6CD10046D2B3 /* FourthViewModel.m */, - ); - path = ViewModel; - sourceTree = ""; - }; - 0435D3391C8C6CD10046D2B3 /* SecondExample */ = { - isa = PBXGroup; - children = ( - 0435D33A1C8C6CD10046D2B3 /* Controller */, - 0435D33D1C8C6CD10046D2B3 /* Model */, - 0435D3401C8C6CD10046D2B3 /* View */, - 0435D3441C8C6CD10046D2B3 /* ViewModel */, - ); - path = SecondExample; - sourceTree = ""; - }; - 0435D33A1C8C6CD10046D2B3 /* Controller */ = { - isa = PBXGroup; - children = ( - 0435D33B1C8C6CD10046D2B3 /* SecondVC.h */, - 0435D33C1C8C6CD10046D2B3 /* SecondVC.m */, - ); - path = Controller; - sourceTree = ""; - }; - 0435D33D1C8C6CD10046D2B3 /* Model */ = { - isa = PBXGroup; - children = ( - 0435D33E1C8C6CD10046D2B3 /* BQTestModel.h */, - 0435D33F1C8C6CD10046D2B3 /* BQTestModel.m */, - ); - path = Model; - sourceTree = ""; - }; - 0435D3401C8C6CD10046D2B3 /* View */ = { - isa = PBXGroup; - children = ( - 0435D3411C8C6CD10046D2B3 /* BQCollectionCell.h */, - 0435D3421C8C6CD10046D2B3 /* BQCollectionCell.m */, - 0435D3431C8C6CD10046D2B3 /* BQCollectionCell.xib */, - ); - path = View; - sourceTree = ""; - }; - 0435D3441C8C6CD10046D2B3 /* ViewModel */ = { - isa = PBXGroup; - children = ( - 0435D3451C8C6CD10046D2B3 /* BQGetDataList2.h */, - 0435D3461C8C6CD10046D2B3 /* BQGetDataList2.m */, - 0435D3471C8C6CD10046D2B3 /* BQViewModel2.h */, - 0435D3481C8C6CD10046D2B3 /* BQViewModel2.m */, + 0435D31D1C8C6CD10046D2B3 /* FirstViewModel.h */, + 0435D31E1C8C6CD10046D2B3 /* FirstViewModel.m */, + 34F6889F1CB7A85400518803 /* FirstTableViewModel.h */, + 34F688A01CB7A85400518803 /* FirstTableViewModel.m */, ); path = ViewModel; sourceTree = ""; @@ -403,6 +214,8 @@ children = ( 0435D34E1C8C6CD10046D2B3 /* ThirdModel.h */, 0435D34F1C8C6CD10046D2B3 /* ThirdModel.m */, + 34978FED1CB77F5400995D23 /* ThirdRequest.h */, + 34978FEE1CB77F5400995D23 /* ThirdRequest.m */, ); path = Model; sourceTree = ""; @@ -435,87 +248,37 @@ path = ViewModel; sourceTree = ""; }; - 34B7085E1C95253000CCB2D1 /* SUIMVVMKit */ = { - isa = PBXGroup; - children = ( - 34B7085F1C95253000CCB2D1 /* SUIMVVMKit */, - 34B7087E1C95253000CCB2D1 /* SUIMVVMKit.h */, + 34978FF01CB7898000995D23 /* SUIMVVMKit */ = { + isa = PBXGroup; + children = ( + 34978FF11CB7898000995D23 /* NSObject+SMKProperties.h */, + 34978FF21CB7898000995D23 /* NSObject+SMKProperties.m */, + 34978FF31CB7898000995D23 /* NSObject+SMKRequest.h */, + 34978FF41CB7898000995D23 /* NSObject+SMKRequest.m */, + 34978FF51CB7898000995D23 /* SMKAction.h */, + 34978FF61CB7898000995D23 /* SMKAction.m */, + 34978FF71CB7898000995D23 /* SMKConstant.h */, + 34978FF81CB7898000995D23 /* SMKExtendPublic.h */, + 34978FF91CB7898000995D23 /* SMKStore.h */, + 34978FFA1CB7898000995D23 /* SMKStore.m */, + 34978FFB1CB7898000995D23 /* SMKRequestProtocol.h */, + 34978FFC1CB7898000995D23 /* SMKSingleton.h */, + 34978FFD1CB7898000995D23 /* SMKViewMangerProtocol.h */, + 34978FFE1CB7898000995D23 /* SMKViewModelProtocol.h */, + 34978FFF1CB7898000995D23 /* SMKViewProtocol.h */, + 349790001CB7898000995D23 /* SUIMVVMKit.h */, + 349790011CB7898000995D23 /* UICollectionViewCell+SMKConfigure.h */, + 349790021CB7898000995D23 /* UICollectionViewCell+SMKConfigure.m */, + 349790031CB7898000995D23 /* UITableViewCell+SMKConfigure.h */, + 349790041CB7898000995D23 /* UITableViewCell+SMKConfigure.m */, + 349790051CB7898000995D23 /* UIView+SMKConfigure.h */, + 349790061CB7898000995D23 /* UIView+SMKConfigure.m */, + 349790071CB7898000995D23 /* UIView+SMKEvents.h */, + 349790081CB7898000995D23 /* UIView+SMKEvents.m */, ); path = SUIMVVMKit; sourceTree = ""; }; - 34B7085F1C95253000CCB2D1 /* SUIMVVMKit */ = { - isa = PBXGroup; - children = ( - 34B708601C95253000CCB2D1 /* Base */, - 34B708651C95253000CCB2D1 /* Constant */, - 34B708681C95253000CCB2D1 /* Extend */, - 34B708781C95253000CCB2D1 /* Handler */, - 34B708791C95253000CCB2D1 /* Protocol */, - ); - path = SUIMVVMKit; - sourceTree = ""; - }; - 34B708601C95253000CCB2D1 /* Base */ = { - isa = PBXGroup; - children = ( - 34B708611C95253000CCB2D1 /* SMKBaseCollectionViewManger.h */, - 34B708621C95253000CCB2D1 /* SMKBaseCollectionViewManger.m */, - 34B708631C95253000CCB2D1 /* SMKBaseTableViewManger.h */, - 34B708641C95253000CCB2D1 /* SMKBaseTableViewManger.m */, - ); - path = Base; - sourceTree = ""; - }; - 34B708651C95253000CCB2D1 /* Constant */ = { - isa = PBXGroup; - children = ( - 34B708661C95253000CCB2D1 /* SMKConstant.h */, - 34B708671C95253000CCB2D1 /* SMKSingleton.h */, - ); - path = Constant; - sourceTree = ""; - }; - 34B708681C95253000CCB2D1 /* Extend */ = { - isa = PBXGroup; - children = ( - 34B708691C95253000CCB2D1 /* SMKExtendPublic.h */, - 34B7086A1C95253000CCB2D1 /* UICollectionView+CollectionDataDelegateAdditions.h */, - 34B7086B1C95253000CCB2D1 /* UICollectionView+CollectionDataDelegateAdditions.m */, - 34B7086C1C95253000CCB2D1 /* UICollectionViewCell+Extension.h */, - 34B7086D1C95253000CCB2D1 /* UICollectionViewCell+Extension.m */, - 34B7086E1C95253000CCB2D1 /* UITableView+TableDataDelegateAdditions.h */, - 34B7086F1C95253000CCB2D1 /* UITableView+TableDataDelegateAdditions.m */, - 34B708701C95253000CCB2D1 /* UITableViewCell+Extension.h */, - 34B708711C95253000CCB2D1 /* UITableViewCell+Extension.m */, - 34B708721C95253000CCB2D1 /* UIView+Configure.h */, - 34B708731C95253000CCB2D1 /* UIView+Configure.m */, - 34B708741C95253000CCB2D1 /* UIView+ViewDelegateAdditions.h */, - 34B708751C95253000CCB2D1 /* UIView+ViewDelegateAdditions.m */, - 34B708761C95253000CCB2D1 /* UIViewController+ControllerAdditions.h */, - 34B708771C95253000CCB2D1 /* UIViewController+ControllerAdditions.m */, - ); - path = Extend; - sourceTree = ""; - }; - 34B708781C95253000CCB2D1 /* Handler */ = { - isa = PBXGroup; - children = ( - ); - path = Handler; - sourceTree = ""; - }; - 34B708791C95253000CCB2D1 /* Protocol */ = { - isa = PBXGroup; - children = ( - 34B7087A1C95253000CCB2D1 /* SMKViewControllerProtocolDelegate.h */, - 34B7087B1C95253000CCB2D1 /* SMKViewMangerProtocolDelegate.h */, - 34B7087C1C95253000CCB2D1 /* SMKViewModelProtocolDelegate.h */, - 34B7087D1C95253000CCB2D1 /* SMKViewProtocolDelegate.h */, - ); - path = Protocol; - sourceTree = ""; - }; 34F72F151C8BF6A90033ED03 /* Classes */ = { isa = PBXGroup; children = ( @@ -711,7 +474,7 @@ 6DB118431C7800BD00678885 /* SUIMVVMDemo */ = { isa = PBXGroup; children = ( - 34B7085E1C95253000CCB2D1 /* SUIMVVMKit */, + 34978FF01CB7898000995D23 /* SUIMVVMKit */, 34F72F151C8BF6A90033ED03 /* Classes */, 6DB118441C7800BD00678885 /* Supporting Files */, ); @@ -776,6 +539,7 @@ 6DB118391C7800BD00678885 /* Project object */ = { isa = PBXProject; attributes = { + CLASSPREFIX = SMK; LastUpgradeCheck = 0720; ORGANIZATIONNAME = lovemo; TargetAttributes = { @@ -807,13 +571,10 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0435D3641C8C6CD10046D2B3 /* FourthView.xib in Resources */, - 0435D3661C8C6CD10046D2B3 /* FourthView2.xib in Resources */, - 0435D36D1C8C6CD10046D2B3 /* BQCollectionCell.xib in Resources */, 6DB118541C7800BD00678885 /* LaunchScreen.storyboard in Resources */, 0435D3731C8C6CD10046D2B3 /* ThirdView.xib in Resources */, 6DB118511C7800BD00678885 /* Assets.xcassets in Resources */, - 0435D35E1C8C6CD10046D2B3 /* BQCell.xib in Resources */, + 0435D35E1C8C6CD10046D2B3 /* FirstCell.xib in Resources */, 6DB1184F1C7800BD00678885 /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -875,40 +636,28 @@ files = ( 0435D3741C8C6CD10046D2B3 /* ThirdViewManger.m in Sources */, 0435D35C1C8C6CD10046D2B3 /* FirstModel.m in Sources */, - 0435D3681C8C6CD10046D2B3 /* FourthViewManger2.m in Sources */, - 0435D36C1C8C6CD10046D2B3 /* BQCollectionCell.m in Sources */, - 34B708D41C95253000CCB2D1 /* UITableViewCell+Extension.m in Sources */, - 0435D35D1C8C6CD10046D2B3 /* BQCell.m in Sources */, + 0435D35D1C8C6CD10046D2B3 /* FirstCell.m in Sources */, 0435D3751C8C6CD10046D2B3 /* ThirdViewModel.m in Sources */, - 0435D3651C8C6CD10046D2B3 /* FourthView2.m in Sources */, - 0435D3611C8C6CD10046D2B3 /* FourthVC.m in Sources */, - 34B708D51C95253000CCB2D1 /* UIView+Configure.m in Sources */, + 3497900E1CB7898000995D23 /* UITableViewCell+SMKConfigure.m in Sources */, + 34978FE91CB7522200995D23 /* FirstRequest.m in Sources */, + 3497900C1CB7898000995D23 /* SMKStore.m in Sources */, + 3497900A1CB7898000995D23 /* NSObject+SMKRequest.m in Sources */, 34F72F851C8BF6A90033ED03 /* BHNavViewController.m in Sources */, - 0435D3691C8C6CD10046D2B3 /* FourthViewModel.m in Sources */, - 0435D3671C8C6CD10046D2B3 /* FourthViewManger.m in Sources */, - 34B708D31C95253000CCB2D1 /* UITableView+TableDataDelegateAdditions.m in Sources */, - 0435D35F1C8C6CD10046D2B3 /* BQGetDataList.m in Sources */, + 34978FEF1CB77F5400995D23 /* ThirdRequest.m in Sources */, + 3497900B1CB7898000995D23 /* SMKAction.m in Sources */, + 349790091CB7898000995D23 /* NSObject+SMKProperties.m in Sources */, + 349790101CB7898000995D23 /* UIView+SMKEvents.m in Sources */, + 3497900D1CB7898000995D23 /* UICollectionViewCell+SMKConfigure.m in Sources */, 34F72F871C8BF6A90033ED03 /* main.m in Sources */, 34F72FA41C8BF6A90033ED03 /* Foundation+Log.m in Sources */, - 0435D36F1C8C6CD10046D2B3 /* BQViewModel2.m in Sources */, 0435D3701C8C6CD10046D2B3 /* ThirdVC.m in Sources */, - 0435D36A1C8C6CD10046D2B3 /* SecondVC.m in Sources */, 0435D3711C8C6CD10046D2B3 /* ThirdModel.m in Sources */, 0435D35A1C8C6CD10046D2B3 /* FirstVC.m in Sources */, - 34B708CF1C95253000CCB2D1 /* SMKBaseCollectionViewManger.m in Sources */, 0435D3721C8C6CD10046D2B3 /* ThirdView.m in Sources */, - 0435D35B1C8C6CD10046D2B3 /* TestViewDelegate.m in Sources */, - 0435D3601C8C6CD10046D2B3 /* BQViewModel.m in Sources */, + 34F688A11CB7A85400518803 /* FirstTableViewModel.m in Sources */, + 0435D3601C8C6CD10046D2B3 /* FirstViewModel.m in Sources */, 34F72F861C8BF6A90033ED03 /* AppDelegate.m in Sources */, - 34B708D21C95253000CCB2D1 /* UICollectionViewCell+Extension.m in Sources */, - 0435D36E1C8C6CD10046D2B3 /* BQGetDataList2.m in Sources */, - 34B708D01C95253000CCB2D1 /* SMKBaseTableViewManger.m in Sources */, - 0435D3631C8C6CD10046D2B3 /* FourthView.m in Sources */, - 0435D3621C8C6CD10046D2B3 /* FourthModel.m in Sources */, - 34B708D71C95253000CCB2D1 /* UIViewController+ControllerAdditions.m in Sources */, - 0435D36B1C8C6CD10046D2B3 /* BQTestModel.m in Sources */, - 34B708D61C95253000CCB2D1 /* UIView+ViewDelegateAdditions.m in Sources */, - 34B708D11C95253000CCB2D1 /* UICollectionView+CollectionDataDelegateAdditions.m in Sources */, + 3497900F1CB7898000995D23 /* UIView+SMKConfigure.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/SUIMVVMDemo/SUIMVVMDemo/.DS_Store b/SUIMVVMDemo/SUIMVVMDemo/.DS_Store index ff1a4662a1cd1786b1129ad28574e600f2c36473..b803b81ae9aa8c5ea2ba8106abbbfa3aa9c79729 100644 GIT binary patch delta 103 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$jGrVU^g=($7UV@W#)+`Hx{#V pa0oI36##(%H;`}zsohxkoq009j3-DZ0~5p)kiiU_<9X&V0{~)g5B&fD delta 176 zcmZoMXmOBWU|?W$DortDU;r^WfEYvza8E20o2aMA$h9$GH}hr%jz7$c**Q2SHn1>q zZRTN7W)|gQ2xbUn@MQ312m?Z225*K;hLXvRtUEbO%nWrDjLZ!tJF&SdVpUcaT$GoS upO+4@dvh+&LS`-rZXnwgWbbA{j_=Hq`9(Y@`}1&cFhZQfusNP*4l@9{&LUI* diff --git a/SUIMVVMDemo/SUIMVVMDemo/Base.lproj/Main.storyboard b/SUIMVVMDemo/SUIMVVMDemo/Base.lproj/Main.storyboard index 7bfaff5..560601a 100644 --- a/SUIMVVMDemo/SUIMVVMDemo/Base.lproj/Main.storyboard +++ b/SUIMVVMDemo/SUIMVVMDemo/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ - + @@ -14,37 +14,12 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -87,7 +62,7 @@ - + @@ -101,13 +76,9 @@ - + - - - - @@ -126,48 +97,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/.DS_Store b/SUIMVVMDemo/SUIMVVMDemo/Classes/.DS_Store index 8b2d935ad47d81e96624cf61d08a40ae31207991..2ea7474a61fa4109aa469dac5889c54620226769 100644 GIT binary patch delta 43 zcmZp1XmQwZO=$8`fpr{4<|aA{M#ct{yM>h|*9xj`z9ekIvYB1tH_K*5Q6^>pOYIG% delta 52 zcmV-40L%Y`K!iZB))E2ulh+ce3Kx5OH#96DH90hsj1wXP!o-uX6CVM^v(OVa1hWPh K`~AjHu~2NHo+1YW5HK<@2y8yc=*G7B0%I2AW_AvK4xj>{$am(+{342+ UKzW7)kiy9(Jj$D6L{=~Z05sDNYXATM delta 258 zcmZoMXfc=|#>B`mF;Q%yo}wrV0|Nsi1A_nqLkU9$gDXP?Ln1@&#Kh(GAPHUuH->zM zQidXANrnQ39EQ}Kbi?4}{M-VdDj2|{Iyc|NC8e|^nStRlqv3k62E3|MT#SfUUXTHC s%Em-*w#fz}EStGGxH*76+?e>Cc{0C -@interface SecondVC : UIViewController -@end +@interface FirstCell : UITableViewCell + + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/View/FirstCell.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/View/FirstCell.m new file mode 100755 index 0000000..49964a3 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/View/FirstCell.m @@ -0,0 +1,32 @@ +// +// FirstCell.m +// DevelopFramework +// +// Created by momo on 15/12/5. +// Copyright © 2015年 teason. All rights reserved. +// + +#import "FirstCell.h" +#import "FirstModel.h" +#import "UITableViewCell+SMKConfigure.h" + +@interface FirstCell () + +@property (weak, nonatomic) IBOutlet UILabel *titleLabel; +@property (weak, nonatomic) IBOutlet UILabel *summaryLabel; +@property (weak, nonatomic) IBOutlet UILabel *publisherLabel; +@property (weak, nonatomic) IBOutlet UIImageView *iconImageView; + +@end + +@implementation FirstCell + +- (void)smk_configure:(UITableViewCell *)cell model:(id)model indexPath:(NSIndexPath *)indexPath { + FirstModel *firstModel = (FirstModel *)model; + self.titleLabel.text = firstModel.title ; + self.summaryLabel.text = firstModel.summary; + self.publisherLabel.text = firstModel.publisher; + self.iconImageView.image = ((indexPath.row) % 2 == 0) ? [UIImage imageNamed:@"phil"] : [UIImage imageNamed:@"dogebread"]; +} + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/View/FirstCell.xib b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/View/FirstCell.xib new file mode 100755 index 0000000..c2f6c29 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/View/FirstCell.xib @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/BQViewModel.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/ViewModel/FirstViewModel.h similarity index 64% rename from SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/BQViewModel.h rename to SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/ViewModel/FirstViewModel.h index c9fedc5..8d87190 100755 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/BQViewModel.h +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/ViewModel/FirstViewModel.h @@ -1,5 +1,5 @@ // -// BQViewModel.h +// FirstViewModel.h // DevelopFramework // // Created by momo on 15/12/23. @@ -8,6 +8,6 @@ #import -@interface BQViewModel : NSObject +@interface FirstViewModel : NSObject @end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/ViewModel/FirstViewModel.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/ViewModel/FirstViewModel.m new file mode 100755 index 0000000..d9786ba --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/ViewModel/FirstViewModel.m @@ -0,0 +1,34 @@ +// +// FirstViewModel.m +// DevelopFramework +// +// Created by momo on 15/12/23. +// Copyright © 2015年 teason. All rights reserved. +// + +#import "FirstViewModel.h" +#import "FirstModel.h" +#import "FirstRequest.h" +#import "SMKAction.h" + +@interface FirstViewModel () + +@end + +@implementation FirstViewModel + +- (NSURLSessionTask *)smk_viewModelWithProgress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure { + return [[SMKAction sharedAction] sendRequestBlock:^id{ + return [[FirstRequest alloc]init]; + } progress:nil success:^(id responseObject) { + if (responseObject) { + NSArray *modelArray = [FirstModel mj_objectArrayWithKeyValuesArray:responseObject[@"books"]]; + success(modelArray); + } + } failure:^(NSError *error) { + + }]; + +} + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/.DS_Store b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/.DS_Store deleted file mode 100644 index ca134ee55c891435e94d349a6777b434a8b98ff9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK&5P4O6o0c@HEFhz!wL&3x6+}F`_;K~<*^ht2Hy>TPG%KEp$~>6)z0CaHo0ngjOa}l+a}?GAYydE@aV(Xw zD=OK zo26^lZy09T+NxL;d&{a=PrW{yc)6dCvZkMQ?K>U~qrgv(Xqfj8qhvph#!>P(edy;= z`h=4Y8HKA?Pv$s2qDjamO*Trx?07kG*S^(GqcMiI{Uqwp zj0QBO`Kd^%h{A9Cc^?-u>=&kCcI}<%v{B!!I`u|lR&}P0My=}X-hVKg8Kz;}y?4+F zPM@E>dh`DL!^cmbzkUB9pAo@Nny_t!3;2o7g=AwdO=6bxaE$ZI3n}3d_>e#kWliH= z-8*4};Ud9Rya8*q!cl$#@a6USJHal@H(=o(@rM1Cb)eeTA8R53K6Sgen-%OxDs`* z70?P?R$x(&H@>)&2CAGJ%+#KI)9c<6AapSzXL=l3W j+Kz?8x8faa!f?*v4x+1YE)hr2^dA8sgYL8fYgOPE*X^<) diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Controller/.DS_Store b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Controller/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 - -@interface FourthVC : UIViewController - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Controller/FourthVC.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Controller/FourthVC.m deleted file mode 100644 index 52cafd7..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Controller/FourthVC.m +++ /dev/null @@ -1,61 +0,0 @@ -// -// FourthVC.m -// SUIMVVMDemo -// -// Created by yuantao on 16/3/6. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import "FourthVC.h" -#import "FourthViewManger.h" -#import "FourthViewManger2.h" - -@interface FourthVC () - -/** viewManger1 */ -@property (nonatomic, strong) FourthViewManger *fourthViewManger1; -/** viewManger2 */ -@property (nonatomic, strong) FourthViewManger2 *fourthViewManger2; - -@end - -@implementation FourthVC - -#pragma mark lazy -- (FourthViewManger *)fourthViewManger1 { - if (!_fourthViewManger1) { - FourthViewManger *viewManger = [[FourthViewManger alloc]init]; - _fourthViewManger1 = viewManger; - } - return _fourthViewManger1; -} - -#pragma mark lazy -- (FourthViewManger2 *)fourthViewManger2 { - if (!_fourthViewManger2) { - FourthViewManger2 *viewManger = [[FourthViewManger2 alloc]init]; - _fourthViewManger2 = viewManger; - } - return _fourthViewManger2; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - - // 得到父视图 - [self.fourthViewManger1 smk_viewMangerWithSuperView:self.view]; - [self.fourthViewManger2 smk_viewMangerWithSuperView:self.view]; - - // 传入其他Views - [self.fourthViewManger2 smk_viewMangerWithOtherSubViews:@{@"view1": [self.fourthViewManger1 smk_viewMangerOfSubView]}]; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - - // 更新视图block - [self.fourthViewManger1 smk_viewMangerWithLayoutSubViews:^{ - [self.fourthViewManger2 smk_viewMangerWithUpdateLayoutSubViews]; - }]; -} - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Model/.DS_Store b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Model/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 - -@interface FourthModel : NSObject - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Model/FourthModel.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Model/FourthModel.m deleted file mode 100644 index d9e8603..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/Model/FourthModel.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// FourthModel.m -// SUIMVVMDemo -// -// Created by yuantao on 16/3/6. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import "FourthModel.h" - -@implementation FourthModel - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/.DS_Store b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/.DS_Store deleted file mode 100644 index c4b9b6990937c1682a50cbd6fc74dd5ae212e533..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!AiqG5Peg7sP@vM$Nhzh9}r6P2MV5rR;*x2kp{2%M8Oa77kslbl!PSWNs7$C z?Az?V$xdD%lK~*Bdb$t8yY(|z@xO?*W+CEw$S9Ukz4C%pIAv2czG=)1eZ zJu1|AL+ky$J}=jsYJX@YJ;>WvWx1`78{kuJKQeoSxBV6Guiy;=y_2j(5u`#r8h&LbNCyRF|l27OTQ>H@-!x%$> zP@t>8gaHfF}Yfb cuj$#io^(Pi92-Nf(BelR%Me2-@TUrV13H&Z-T(jq diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView/FourthView.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView/FourthView.h deleted file mode 100644 index cc51e32..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView/FourthView.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// FourthView.h -// SUIMVVMDemo -// -// Created by yuantao on 16/3/6. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import - -@interface FourthView : UIView - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView/FourthView.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView/FourthView.m deleted file mode 100644 index 0901be7..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView/FourthView.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// FourthView.m -// SUIMVVMDemo -// -// Created by yuantao on 16/3/6. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import "FourthView.h" - -@implementation FourthView - - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView/FourthView.xib b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView/FourthView.xib deleted file mode 100644 index e5d0acc..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView/FourthView.xib +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView2/FourthView2.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView2/FourthView2.h deleted file mode 100644 index ca33d59..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView2/FourthView2.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// FourthView2.h -// SUIMVVMDemo -// -// Created by yuantao on 16/3/6. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import - -@interface FourthView2 : UIView - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView2/FourthView2.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView2/FourthView2.m deleted file mode 100644 index c97672b..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView2/FourthView2.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// FourthView2.m -// SUIMVVMDemo -// -// Created by yuantao on 16/3/6. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import "FourthView2.h" - -@implementation FourthView2 - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView2/FourthView2.xib b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView2/FourthView2.xib deleted file mode 100644 index 592a572..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/View/FourthView2/FourthView2.xib +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/.DS_Store b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/.DS_Store deleted file mode 100644 index 67aab0419b2f6f5ad398f585f9937a752810f08e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!AiqG5Pe&FsOX{IJnk=4^d3s|=BeOWX`~gbDW$<{{?YFde6usultda4L}UhL z-)44Sl6ec641h4LiU}|VFro_%jyZIgtc$m7U=dji=^k4wafc^7;BiP?iwe4Ddgw%+aR(7WNH zBcmRyW=>b9DW_hn&#d~hI`V4B?^9R66>tT9qyTHS*yu#jM_0fVa0PY>$oC=A1vA51 zF?~8Xq!xfUWH=e;(n|;@8fJ#IB3EcZsYIm)YcYb-8IQIvGprSrj$qA4uqOxWP(pe- z?;q24giO&#SHKn6SKvr5$5Q{VzwZC{Nq*%DxB~x5fiTQx`IISHZEYndwKmf4>0+|4 mR@_lINu`*3r4*mjlQAA;Ld*#b1wH_LUtn|q diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger/FourthViewManger.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger/FourthViewManger.h deleted file mode 100644 index abc3a0e..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger/FourthViewManger.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// FourthViewManger.h -// SUIMVVMDemo -// -// Created by yuantao on 16/3/6. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import -#import "SUIMVVMKit.h" - -@interface FourthViewManger : NSObject - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger/FourthViewManger.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger/FourthViewManger.m deleted file mode 100644 index 4f3e703..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger/FourthViewManger.m +++ /dev/null @@ -1,70 +0,0 @@ -// -// FourthViewManger.m -// SUIMVVMDemo -// -// Created by yuantao on 16/3/6. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import "FourthViewManger.h" -#import "SUIUtils.h" -#import "FourthView.h" -#import "Masonry.h" - - -@interface FourthViewManger () - -/** fouthView */ -@property (nonatomic, weak) FourthView *fourthView; - -@end - -@implementation FourthViewManger - -#pragma mark lazy -- (FourthView *)fourthView { - if (!_fourthView) { - FourthView *fourthView = [FourthView sui_loadInstanceFromNib]; - _fourthView = fourthView; - } - return _fourthView; -} - -// 得到自己所管理subView的父视图,并添加到父视图上 -- (void)smk_viewMangerWithSuperView:(UIView *)superView { - [superView addSubview:self.fourthView]; - [self.fourthView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(100, 100)); - make.centerY.mas_equalTo(superView).offset( -100); - make.left.mas_equalTo(60); - }]; - -} - -// 返回自己所管理的View,降低耦合性 -- (UIView *)smk_viewMangerOfSubView { - return self.fourthView; -} - -// 根据model的变化重新布局自己所管理的字视图的位置,并用block回调给控制器 -- (void)smk_viewMangerWithLayoutSubViews:(void (^)())updateBlock { - - CGFloat left = arc4random_uniform(100) + 20; - CGFloat height = arc4random_uniform(150) + 20; - [self.fourthView mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(left); - make.height.mas_equalTo(height); - }]; - - [self.fourthView setNeedsLayout]; - [UIView animateWithDuration:0.5 animations:^{ - [self.fourthView layoutIfNeeded]; - }]; - - if (updateBlock) { - updateBlock(); - } - -} - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger2/FourthViewManger2.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger2/FourthViewManger2.h deleted file mode 100644 index 993c8a3..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger2/FourthViewManger2.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// FourthViewManger2.h -// SUIMVVMDemo -// -// Created by yuantao on 16/3/6. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import -#import "SUIMVVMKit.h" - -@interface FourthViewManger2 : NSObject - - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger2/FourthViewManger2.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger2/FourthViewManger2.m deleted file mode 100644 index 8d86089..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewManger/FourthViewManger2/FourthViewManger2.m +++ /dev/null @@ -1,70 +0,0 @@ -// -// FourthViewManger2.m -// SUIMVVMDemo -// -// Created by yuantao on 16/3/6. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import "FourthViewManger2.h" -#import "SUIUtils.h" -#import "FourthView2.h" -#import "Masonry.h" - - -@interface FourthViewManger2 () - -/** fouthView */ -@property (nonatomic, weak) FourthView2 *fourthView2; -/** mark */ -@property (nonatomic, weak) UIView *fourthView; - -@end - -@implementation FourthViewManger2 - -#pragma mark lazy -- (FourthView2 *)fourthView2 { - if (!_fourthView2) { - FourthView2 *fourthView2 = [FourthView2 sui_loadInstanceFromNib]; - _fourthView2 = fourthView2; - } - return _fourthView2; -} - -- (void)smk_viewMangerWithSuperView:(UIView *)superView { - [superView addSubview:self.fourthView2]; -} - -// 根据自身需要得到外界的视图view -- (void)smk_viewMangerWithOtherSubViews:(NSDictionary *)viewInfos { - - UIView *view1 = viewInfos[@"view1"]; - self.fourthView = view1; - - [self.fourthView2 mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(250, 250)); - make.top.mas_equalTo(view1.mas_bottom).offset(20); - make.left.mas_equalTo(view1); - }]; - -} - -// 根据外界view或model的变化重新布局自己所管理的字视图的位置 -- (void)smk_viewMangerWithUpdateLayoutSubViews { - - CGFloat offset = arc4random_uniform(70) + 10; - CGFloat wh = arc4random_uniform(200) + 50; - CGSize size = CGSizeMake(wh, wh); - [self.fourthView2 mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.fourthView.mas_bottom).offset(offset); - make.size.mas_equalTo(size); - }]; - - [self.fourthView2 setNeedsLayout]; - [UIView animateWithDuration:0.5 animations:^{ - [self.fourthView2 layoutIfNeeded]; - }]; -} - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewModel/.DS_Store b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewModel/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 - -@interface FourthViewModel : NSObject - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewModel/FourthViewModel.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewModel/FourthViewModel.m deleted file mode 100644 index a9354e2..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FourthExample/ViewModel/FourthViewModel.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// FourthViewModel.m -// SUIMVVMDemo -// -// Created by yuantao on 16/3/6. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import "FourthViewModel.h" - -@implementation FourthViewModel - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Controller/FirstVC.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Controller/FirstVC.m index 6b625bc..c76e38b 100755 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Controller/FirstVC.m +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Controller/FirstVC.m @@ -7,19 +7,23 @@ // #import "FirstVC.h" -#import "SUIMVVMKit.h" -#import "SecondVC.h" -#import "BQViewModel.h" -#import "TestViewDelegate.h" +#import "FirstViewModel.h" #import "MJRefresh.h" +#import "FirstTableViewModel.h" -static NSString *const MyCellIdentifier = @"BQCell" ; // `cellIdentifier` AND `NibName` HAS TO BE SAME ! @interface FirstVC () @property (nonatomic, weak) IBOutlet UITableView *table; -@property (nonatomic, strong) BQViewModel *viewModel; +@property (nonatomic, strong) FirstViewModel *viewModel; +/** + * hudView + */ +@property (nonatomic, weak) UIView *hudView; + +@property (nonatomic, strong) FirstTableViewModel *firstTableViewModel; + @end @implementation FirstVC @@ -30,69 +34,62 @@ - (void)viewDidLoad [self setupTableView] ; } +- (FirstTableViewModel *)firstTableViewModel { + if (_firstTableViewModel == nil) { + _firstTableViewModel = [[FirstTableViewModel alloc]init]; + } + return _firstTableViewModel; +} + /** * tableView的一些初始化工作 */ - (void)setupTableView { - self.table.separatorStyle = UITableViewCellSelectionStyleNone; - - __weak typeof(self) weakSelf = self; - __weak typeof(self.table) weakTable = self.table; - - // 下拉刷新 - self.table.mj_header= [MJRefreshNormalHeader headerWithRefreshingBlock:^{ - - [weakSelf.viewModel smk_viewModelWithGetDataSuccessHandler:^(NSArray *array) { - [weakTable reloadData]; - }]; - // 结束刷新 - [weakTable.mj_header endRefreshing]; - }]; - - [self.table.mj_header beginRefreshing]; - // 设置自动切换透明度(在导航栏下面自动隐藏) - self.table.mj_header.automaticallyChangeAlpha = YES; + [self.firstTableViewModel handleWithTable:self.table]; - - // self.table.tableHander = [[TestViewDelegate alloc]initWithCellIdentifiers:@[MyCellIdentifier] didSelectBlock:^(NSIndexPath *indexPath, id item) { - // SecondVC *vc = (SecondVC *)[UIViewController sui_viewControllerWithStoryboard:nil identifier:@"SecondVCID"]; - // [weakSelf.navigationController pushViewController:vc animated:YES]; - // NSLog(@"click row : %@",@(indexPath.row)) ; - // }]; - - // cell自动计算高度 - self.table.sui_autoSizingCell = YES; - // 注册cell - [self.table.sui_tableHelper registerNibs:@[MyCellIdentifier]]; - // cell被选中时跳转 - [self.table.sui_tableHelper didSelect:^(NSIndexPath * _Nonnull cIndexPath, id _Nonnull model) { - [weakSelf sui_storyboardInstantiate:@"Main.SecondVCID"]; - NSLog(@"click row : %@",@(cIndexPath.row)) ; - }]; - - - // [self.viewModel smk_viewModelWithGetDataSuccessHandler:^(NSArray *array){ - // [self.table.tableHander getItemsWithModelArray:^NSArray *{ - // return array; - // } completion:^{ - // [self.table reloadData]; - // }]; - // }]; - - [self.viewModel smk_viewModelWithGetDataSuccessHandler:^(NSArray *array){ - [weakSelf.table sui_resetDataAry:array]; - }]; + uWeakSelf + self.hudView.hidden = NO; + [self.viewModel smk_viewModelWithProgress:nil success:^(id responseObject) { + self.hudView.hidden = YES; + [weakSelf.firstTableViewModel getDataWithModelArray:^NSArray *{ + return responseObject; + } completion:^{ + [weakSelf.table reloadData]; + }]; + } failure:^(NSError *error) { + + }]; } + + #pragma mark lazy -- (BQViewModel *)viewModel { +- (FirstViewModel *)viewModel { if (_viewModel == nil) { - _viewModel = [[BQViewModel alloc]init]; + _viewModel = [[FirstViewModel alloc]init]; } return _viewModel; } +- (UIView *)hudView { + if (_hudView == nil) { + UIView *hudView = [[UIView alloc]init]; + hudView.frame = [UIApplication sharedApplication].keyWindow.bounds; + UILabel *label = [[UILabel alloc]init]; + label.frame = CGRectMake(0, 0, 200, 30); + CGPoint center = hudView.center; + center.x = center.x + 50; + label.center = center; + label.font = [UIFont systemFontOfSize:20]; + label.textColor = [UIColor orangeColor]; + label.text = @"加载中。。。"; + hudView.hidden = YES; + [hudView addSubview:label]; + [[UIApplication sharedApplication].keyWindow addSubview:(_hudView = hudView)]; + } + return _hudView; +} @end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Controller/TestViewDelegate.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Controller/TestViewDelegate.h deleted file mode 100644 index f5e96a5..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Controller/TestViewDelegate.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// TestViewDelegate.h -// MVVMFramework -// -// Created by yuantao on 16/2/14. -// Copyright © 2016年 momo. All rights reserved. -// - -#import "SMKBaseTableViewManger.h" - -@interface TestViewDelegate : SMKBaseTableViewManger - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Controller/TestViewDelegate.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Controller/TestViewDelegate.m deleted file mode 100644 index 637b0fa..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Controller/TestViewDelegate.m +++ /dev/null @@ -1,15 +0,0 @@ -// -// TestViewDelegate.m -// MVVMFramework -// -// Created by yuantao on 16/2/14. -// Copyright © 2016年 momo. All rights reserved. -// - -#import "TestViewDelegate.h" - -@implementation TestViewDelegate - - - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstModel.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstModel.h index ab27549..9a1ee46 100755 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstModel.h +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstModel.h @@ -11,6 +11,8 @@ @interface FirstModel : NSObject -@property (nonatomic, copy) NSString *title ; +@property (nonatomic, copy) NSString *publisher; +@property (nonatomic, copy) NSString *title; +@property (nonatomic, copy) NSString *summary; @end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstRequest.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstRequest.h new file mode 100644 index 0000000..d158e03 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstRequest.h @@ -0,0 +1,15 @@ +// +// FirstRequest.h +// SUIMVVMDemo +// +// Created by yuantao on 16/4/8. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#import +#import "SMKRequestProtocol.h" +#import "NSObject+SMKRequest.h" + +@interface FirstRequest : NSObject + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstRequest.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstRequest.m new file mode 100644 index 0000000..39a1aa3 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstRequest.m @@ -0,0 +1,21 @@ +// +// FirstRequest.m +// SUIMVVMDemo +// +// Created by yuantao on 16/4/8. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#import "FirstRequest.h" + +@implementation FirstRequest + +- (void)smk_requestConfigures { + self.smk_url = @"https://api.douban.com/v2/book/search"; +} + +- (id)smk_requestParameters { + return @{@"q" : @"基础"}; +} + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/View/BQCell.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/View/BQCell.h deleted file mode 100755 index 79cc7ae..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/View/BQCell.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// MyCell.h -// DevelopFramework -// -// Created by momo on 15/12/5. -// Copyright © 2015年 teason. All rights reserved. -// - -#import - - -@interface BQCell : UITableViewCell - -@property (weak, nonatomic) IBOutlet UILabel *lbTitle; -@property (weak, nonatomic) IBOutlet UILabel *lbHeight; -@property (weak, nonatomic) IBOutlet UIImageView *contentImage; - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/View/BQCell.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/View/BQCell.m deleted file mode 100755 index 8cf5bb9..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/View/BQCell.m +++ /dev/null @@ -1,47 +0,0 @@ -// -// MyCell.m -// DevelopFramework -// -// Created by momo on 15/12/5. -// Copyright © 2015年 teason. All rights reserved. -// - -#import "BQCell.h" -#import "FirstModel.h" - -@implementation BQCell - -//- (void)configure:(UITableViewCell *)cell -// customObj:(id)obj -// indexPath:(NSIndexPath *)indexPath -//{ -// FirstModel *model = (FirstModel *)obj ; -// // BQCell *mycell = (BQCell *)cell ; -// self.lbTitle.text = model.title ; -// -// NSString *lengthStr = @"Swift is a powerful and intuitive programming language for iOS, OS X, tvOS, and watchOS. Writing Swift code is interactive and fun, the syntax is concise yet expressive, and apps run lightning-fast. Swift is ready for your next project — or addition into your current app — because Swift code works side-by-side with Objective-C."; -// NSString *shortStr = @"Swift. A modern programming language that is safe, fast, and interactive."; -// -// self.lbHeight.text = ((indexPath.row) % 2 == 0) ? lengthStr : shortStr; -// self.contentImage.image = ((indexPath.row) % 2 == 0) ? [UIImage imageNamed:@"phil"] : [UIImage imageNamed:@"dogebread"]; -//} - - -- (void)sui_cellWillDisplayWithModel:(id)cModel -{ - FirstModel *model = (FirstModel *)cModel ; - self.lbTitle.text = model.title ; - - NSString *lengthStr = @"Swift is a powerful and intuitive programming language for iOS, OS X, tvOS, and watchOS. Writing Swift code is interactive and fun, the syntax is concise yet expressive, and apps run lightning-fast. Swift is ready for your next project — or addition into your current app — because Swift code works side-by-side with Objective-C."; - NSString *shortStr = @"Swift. A modern programming language that is safe, fast, and interactive."; - - self.lbHeight.text = ((self.sui_indexPath.row) % 2 == 0) ? lengthStr : shortStr; - self.contentImage.image = ((self.sui_indexPath.row) % 2 == 0) ? [UIImage imageNamed:@"phil"] : [UIImage imageNamed:@"dogebread"]; -} - - -- (void)awakeFromNib { - // Initialization code -} - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/View/BQCell.xib b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/View/BQCell.xib deleted file mode 100755 index e5521e7..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/View/BQCell.xib +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/BQGetDataList.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/BQGetDataList.h deleted file mode 100644 index d0a6083..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/BQGetDataList.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// BQGetDataList.h -// MVVMFramework -// -// Created by Mac on 16/1/22. -// Copyright © 2016年 momo. All rights reserved. -// - -#import "SMKDataService.h" - -@interface BQGetDataList : SMKDataService - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/BQGetDataList.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/BQGetDataList.m deleted file mode 100644 index 8ffb106..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/BQGetDataList.m +++ /dev/null @@ -1,29 +0,0 @@ -// -// BQGetDataList.m -// MVVMFramework -// -// Created by Mac on 16/1/22. -// Copyright © 2016年 momo. All rights reserved. -// - -#import "BQGetDataList.h" -#import "SMKStorePublic.h" - -@implementation BQGetDataList - -// 重写父类方法 -+ (id)modelTransformationWithResponseObj:(id)responseObj modelClass:(Class)modelClass { - - NSArray *array = responseObj[@"stories"]; - - static NSString *tableName = @"arrarList"; - - SMKStore *store = [SMKStore sharedStore]; - [store db_initWithDBName:@"demo.sqlite" tableName:tableName]; - [store db_putObject:array withId:@"arrayID" intoTable:tableName]; - - return [modelClass mj_objectArrayWithKeyValuesArray:array]; - -} - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/BQViewModel.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/BQViewModel.m deleted file mode 100755 index 2173ff8..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/BQViewModel.m +++ /dev/null @@ -1,33 +0,0 @@ -// -// BQViewModel.m -// DevelopFramework -// -// Created by momo on 15/12/23. -// Copyright © 2015年 teason. All rights reserved. -// - -#import "BQViewModel.h" -#import "FirstModel.h" -#import "BQTestModel.h" -#import "BQGetDataList.h" - -@interface BQViewModel () - -@end - -@implementation BQViewModel - -- (void)smk_viewModelWithGetDataSuccessHandler:(void (^)(NSArray *))successHandler { - - NSString *url = @"http://news-at.zhihu.com/api/4/news/latest"; - [BQGetDataList get:url param:nil cachePolicy:SMKHttpReturnDefault modelClass:[FirstModel class] responseBlock:^(id dataObj, NSError *error) { - - if (successHandler) { - successHandler(dataObj); - } - - }]; - -} - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/FirstTableViewModel.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/FirstTableViewModel.h new file mode 100644 index 0000000..1018f77 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/FirstTableViewModel.h @@ -0,0 +1,17 @@ +// +// FirstTableViewModel.h +// SUIMVVMDemo +// +// Created by yuantao on 16/4/8. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#import + +@interface FirstTableViewModel : NSObject + +- (void)handleWithTable:(UITableView *)table; + +- (void)getDataWithModelArray:(NSArray *(^)())modelArrayBlock completion:(void (^)())completion; + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/FirstTableViewModel.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/FirstTableViewModel.m new file mode 100644 index 0000000..c274cc9 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/FirstTableViewModel.m @@ -0,0 +1,83 @@ +// +// FirstTableViewModel.m +// SUIMVVMDemo +// +// Created by yuantao on 16/4/8. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#import "FirstTableViewModel.h" +#import "UITableView+FDTemplateLayoutCell.h" + + +static NSString *const MyCellIdentifier = @"FirstCell" ; // `cellIdentifier` AND `NibName` HAS TO BE SAME ! + +@interface FirstTableViewModel () +@property (nonatomic, strong) NSArray *dataArrayList; +@end + +@implementation FirstTableViewModel + +- (NSArray *)dataArrayList { + if (_dataArrayList == nil) { + _dataArrayList = [NSMutableArray array]; + } + return _dataArrayList; +} + +- (void)handleWithTable:(UITableView *)table { + table.delegate = self; + table.dataSource = self; + [UITableViewCell smk_registerTable:table nibIdentifier:MyCellIdentifier]; +} + +- (void)getDataWithModelArray:(NSArray *(^)())modelArrayBlock completion:(void (^)())completion { + if (modelArrayBlock) { + self.dataArrayList = modelArrayBlock(); + if (completion) { + completion(); + } + } + +} + +- (id)itemAtIndexPath:(NSIndexPath *)indexPath +{ + return self.dataArrayList[indexPath.row]; +} + +#pragma mark - UITableViewDataSource + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + return self.dataArrayList.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + id item = [self itemAtIndexPath:indexPath] ; + + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyCellIdentifier forIndexPath:indexPath] ; + [cell smk_configure:cell model:item indexPath:indexPath]; + + return cell ; + +} + +#pragma mark - UITableViewDelegate +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath +{ + id item = [self itemAtIndexPath:indexPath] ; + + return [tableView fd_heightForCellWithIdentifier:MyCellIdentifier cacheByIndexPath:indexPath configuration:^(UITableViewCell *cell) { + [cell smk_configure:cell model:item indexPath:indexPath]; + }]; + +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ + [tableView deselectRowAtIndexPath:indexPath animated:YES]; +} + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/.DS_Store b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/.DS_Store deleted file mode 100644 index ea4ea660f769665855386d5bcf027bc78c842c0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!Ab)$5S`H;DuVRrF~8712xUEbDtH#UqC(5|(Bd`U;$Qe1evxl7qwLZgJcx+A zf#gk+H%a!vCK(aY)v;fSEJS3EVyNac%(|OHXF;9;wa#%XgY@zs+wEgxqQBT>d%uu7 zdB(0^WVHX~dNb_yqb)aByP@m)<6$H6{`z)RxlLC84c7kYWW~|qbg2LppaN8Y3jCM? zxUrii)KgGRDcRh6*%|i!tVbY{4&iXe;UFT6`%tD zOaYyB>u!aQio5mX^X#roDEBC4#w+H);7=X_XxKS&T?c(UnGaqLERHsd_1AD99|Bbn KR#e~@6!-u;t}H(Q diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/Controller/.DS_Store b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/Controller/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 -#import - -@interface BQTestModel : NSObject - -@property (nonatomic, copy) NSString *title ; -@property (nonatomic, copy) NSString *ID ; - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/Model/BQTestModel.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/Model/BQTestModel.m deleted file mode 100755 index 4188686..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/Model/BQTestModel.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// MyObj.m -// DevelopFramework -// -// Created by momo on 15/12/5. -// Copyright © 2015年 teason. All rights reserved. -// - -#import "BQTestModel.h" - -@implementation BQTestModel - - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/View/BQCollectionCell.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/View/BQCollectionCell.h deleted file mode 100755 index 0fe2a62..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/View/BQCollectionCell.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// MyCell.h -// DevelopFramework -// -// Created by momo on 15/12/5. -// Copyright © 2015年 teason. All rights reserved. -// - -#import -#import "BQTestModel.h" - -@interface BQCollectionCell : UICollectionViewCell - -@property (weak, nonatomic) IBOutlet UILabel *lbTitle; -@property (weak, nonatomic) IBOutlet UILabel *lbHeight; - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/View/BQCollectionCell.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/View/BQCollectionCell.m deleted file mode 100755 index 2d07cfd..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/View/BQCollectionCell.m +++ /dev/null @@ -1,31 +0,0 @@ -// -// MyCell.m -// DevelopFramework -// -// Created by momo on 15/12/5. -// Copyright © 2015年 teason. All rights reserved. -// - -#import "BQCollectionCell.h" - -@implementation BQCollectionCell - -- (void)configure:(UICollectionViewCell *)cell - customObj:(id)obj - indexPath:(NSIndexPath *)indexPath -{ - BQTestModel *myObj = (BQTestModel *)obj ; - BQCollectionCell *mycell = (BQCollectionCell *)cell ; - mycell.lbTitle.text = [NSString stringWithFormat:@"ID: %@",myObj.ID]; - mycell.lbHeight.text = myObj.title; -} - -- (void)awakeFromNib { - // Initialization code - - self.layer.borderColor = [UIColor colorWithRed:0.461 green:0.594 blue:1.000 alpha:1.000].CGColor; - self.layer.borderWidth = 2.0; - self.layer.cornerRadius = 5.0; -} - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/View/BQCollectionCell.xib b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/View/BQCollectionCell.xib deleted file mode 100755 index 8909e22..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/View/BQCollectionCell.xib +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQGetDataList2.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQGetDataList2.h deleted file mode 100644 index f787733..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQGetDataList2.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// BQGetDataList2.h -// MVVMFramework -// -// Created by Mac on 16/1/22. -// Copyright © 2016年 momo. All rights reserved. -// - -#import "SMKDataService.h" - -@interface BQGetDataList2 : SMKDataService - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQGetDataList2.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQGetDataList2.m deleted file mode 100644 index 637491a..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQGetDataList2.m +++ /dev/null @@ -1,26 +0,0 @@ -// -// BQGetDataList2.m -// MVVMFramework -// -// Created by Mac on 16/1/22. -// Copyright © 2016年 momo. All rights reserved. -// - -#import "BQGetDataList2.h" - -@implementation BQGetDataList2 - -+ (id)modelTransformationWithResponseObj:(id)responseObj modelClass:(Class)modelClass { - - NSArray *array = responseObj[@"stories"]; - - [modelClass mj_setupReplacedKeyFromPropertyName:^NSDictionary *{ - return @{ - @"ID" : @"id" - }; - }]; - - return [modelClass mj_objectArrayWithKeyValuesArray:array]; -} - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQViewModel2.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQViewModel2.h deleted file mode 100644 index f340a0d..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQViewModel2.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// BQViewModel2.h -// DevelopFramework -// -// Created by yuantao on 15/12/25. -// Copyright © 2015年 momo. All rights reserved. -// - -#import - -@interface BQViewModel2 : NSObject - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQViewModel2.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQViewModel2.m deleted file mode 100644 index b1a879d..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/secondExample/ViewModel/BQViewModel2.m +++ /dev/null @@ -1,30 +0,0 @@ -// -// BQViewModel2.m -// DevelopFramework -// -// Created by yuantao on 15/12/25. -// Copyright © 2015年 momo. All rights reserved. -// - -#import "BQViewModel2.h" -#import "BQTestModel.h" -#import "BQGetDataList2.h" - -@implementation BQViewModel2 - - -- (void)smk_viewModelWithGetDataSuccessHandler:(void (^)(NSArray *))successHandler { - - NSString *url = @"http://news-at.zhihu.com/api/4/news/latest"; - - [BQGetDataList2 get:url param:nil cachePolicy:SMKHttpReturnDefault modelClass:[BQTestModel class] responseBlock:^(id dataObj, NSError *error) { - - if (successHandler) { - successHandler(dataObj); - } - - }]; - -} - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Controller/ThirdVC.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Controller/ThirdVC.m index 7b6da5a..e631045 100644 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Controller/ThirdVC.m +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Controller/ThirdVC.m @@ -10,51 +10,59 @@ #import "ThirdViewModel.h" #import "ThirdViewManger.h" #import "FirstVC.h" +#import "ThirdView.h" +#import "UIView+SMKEvents.h" +#import "UIView+SMKConfigure.h" @interface ThirdVC () -//@property (nonatomic, strong) ThirdViewManger *thirdViewManger; -//@property (nonatomic, strong) ThirdViewModel *viewModel; - +@property (nonatomic, strong) ThirdViewManger *thirdViewManger; +@property (nonatomic, strong) ThirdViewModel *viewModel; +@property (nonatomic, weak) ThirdView *thirdView; @end @implementation ThirdVC -- (Class)smk_classOfViewManger { - return [ThirdViewManger class]; +- (ThirdView *)thirdView { + if (_thirdView == nil) { + ThirdView *thirdView = [ThirdView sui_loadInstanceFromNib]; + thirdView.frame = CGRectMake(0, 66, [UIScreen mainScreen].bounds.size.width, 200); + [self.view addSubview:(_thirdView = thirdView)]; + } + return _thirdView; } -- (Class)smk_classOfViewModel { - return [ThirdViewModel class]; +- (ThirdViewManger *)thirdViewManger { + if (_thirdViewManger == nil) { + _thirdViewManger = [[ThirdViewManger alloc]init]; + } + return _thirdViewManger; } -//- (ThirdViewManger *)thirdViewManger { -// if (_thirdViewManger == nil) { -// _thirdViewManger = [[ThirdViewManger alloc]init]; -// } -// return _thirdViewManger; -//} -//- (ThirdViewModel *)viewModel { -// if (_viewModel == nil) { -// _viewModel = [[ThirdViewModel alloc]init]; -// } -// return _viewModel; -//} +- (ThirdViewModel *)viewModel { + if (_viewModel == nil) { + _viewModel = [[ThirdViewModel alloc]init]; + } + return _viewModel; +} - (void)viewDidLoad { [super viewDidLoad]; self.title = @"MVVM Example"; - [self.smk_viewManger smk_viewMangerWithSuperView:self.view]; - [self.smk_viewModel smk_viewModelWithGetDataSuccessHandler:nil]; + [self.thirdView smk_viewWithViewManger:self.thirdViewManger]; + self.thirdView.viewEventsBlock = [self.thirdViewManger smk_viewMangerWithEventBlockOfView:self.thirdView]; } - (IBAction)clickBtnAction:(UIButton *)sender { - - ThirdViewManger *viewManger = (ThirdViewManger *)self.smk_viewManger; - [viewManger smk_viewMangerWithModel:^NSDictionary *{ - return @{@"model" : [self.smk_viewModel getRandomData]}; - }]; + + __weak typeof(self) weakSelf = self; + + [self.viewModel smk_viewModelWithProgress:nil success:^(id responseObject) { + [weakSelf.thirdViewManger smk_viewMangerWithModel:^NSDictionary *{ + return @{@"model" : [weakSelf.viewModel getRandomData:responseObject]}; + }]; + } failure:nil]; } diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Model/ThirdModel.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Model/ThirdModel.h index 4f8a138..32eda18 100644 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Model/ThirdModel.h +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Model/ThirdModel.h @@ -9,6 +9,9 @@ #import @interface ThirdModel : NSObject -@property (nonatomic, copy) NSString *name; + +@property (nonatomic, copy) NSString *publisher; @property (nonatomic, copy) NSString *title; +@property (nonatomic, copy) NSString *summary; + @end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Model/ThirdRequest.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Model/ThirdRequest.h new file mode 100644 index 0000000..4c86dd3 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Model/ThirdRequest.h @@ -0,0 +1,15 @@ +// +// ThirdRequest.h +// SUIMVVMDemo +// +// Created by yuantao on 16/4/8. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#import +#import "SMKRequestProtocol.h" +#import "NSObject+SMKRequest.h" + +@interface ThirdRequest : NSObject + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Model/ThirdRequest.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Model/ThirdRequest.m new file mode 100644 index 0000000..eb18158 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/Model/ThirdRequest.m @@ -0,0 +1,26 @@ +// +// ThirdRequest.m +// SUIMVVMDemo +// +// Created by yuantao on 16/4/8. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#import "ThirdRequest.h" + +@implementation ThirdRequest + +- (void)smk_requestConfigures { + + self.smk_scheme = @"https"; + self.smk_host = @"api.douban.com"; + self.smk_path = @"/v2/book/search"; + self.smk_method = SMKRequestMethodGET; + +} + +- (id)smk_requestParameters { + return @{@"q": @"基础"}; +} + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/View/ThirdView.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/View/ThirdView.m index 4b7b7e9..333912a 100644 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/View/ThirdView.m +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/View/ThirdView.m @@ -8,7 +8,8 @@ #import "ThirdView.h" #import "ThirdModel.h" -#import "UIView+ViewDelegateAdditions.h" +#import "UIView+SMKEvents.h" +#import "UIView+SMKConfigure.h" @interface ThirdView() @property (weak, nonatomic) IBOutlet UILabel *testLabel; @@ -36,9 +37,8 @@ - (IBAction)jumpOtherVC:(UIButton *)sender { } // 根据模型数据配置View -- (void)configureViewWithCustomObj:(id)obj { - if (!obj) return; - ThirdModel *thirdModel = (ThirdModel *)obj; +- (void)smk_configureViewWithModel:(id)model { + ThirdModel *thirdModel = (ThirdModel *)model; self.testLabel.text = thirdModel.title; } diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/View/ThirdView.xib b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/View/ThirdView.xib index 965120f..c60faf8 100644 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/View/ThirdView.xib +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/View/ThirdView.xib @@ -1,5 +1,5 @@ - + diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewManger/ThirdViewManger.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewManger/ThirdViewManger.h index 7f73bad..cdad73f 100644 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewManger/ThirdViewManger.h +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewManger/ThirdViewManger.h @@ -8,7 +8,7 @@ #import -@interface ThirdViewManger : NSObject +@interface ThirdViewManger : NSObject @end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewManger/ThirdViewManger.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewManger/ThirdViewManger.m index 56a8555..8ca1c04 100644 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewManger/ThirdViewManger.m +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewManger/ThirdViewManger.m @@ -8,55 +8,21 @@ #import "ThirdViewManger.h" #import "FirstVC.h" -#import "ThirdView.h" -#import "UIView+ViewDelegateAdditions.h" +#import "UIView+SMKEvents.h" +#import "UIView+SMKConfigure.h" -@interface ThirdViewManger () +@interface ThirdViewManger () -@property (nonatomic, weak) ThirdView *thirdView; @property (nonatomic, strong) NSDictionary *dict; @end @implementation ThirdViewManger -- (ThirdView *)thirdView { - if (_thirdView == nil) { - ThirdView *thirdView = [ThirdView sui_loadInstanceFromNib]; - _thirdView = thirdView; - _thirdView.delegate = self; - - __weak typeof(_thirdView) weakThirdView = _thirdView; - __weak typeof(self) weakSelf = self; - _thirdView.viewEventsBlock = ^(NSString *str) { - NSLog(@"%@",str); - // 可以根据传入的信息,判断分写不同的响应方法 - [weakSelf smk_viewMangerWithHandleOfSubView:weakThirdView info:@"click"]; - }; - - } - return _thirdView; -} - -//// 两种消息传递方式,开发时任选其一即可,处理View中自定义的事件 -//- (void)smk_viewMangerWithSubView:(UIView *)subView { -// -// __weak typeof(self.thirdView) weakThirdView = self.thirdView; -// __weak typeof(self) weakSelf = self; -// -// // btnClickBlock -// weakThirdView.viewEventsBlock = ^(NSString *str) { -// NSLog(@"%@",str); -// // 可以根据传入的信息,判断分写不同的响应方法 -// [weakSelf smk_viewMangerWithHandleOfSubView:weakThirdView info:@"click"]; -// }; -//} - -// UIView的delegate方法 ,两种消息传递方式,开发时任选其一即可 根据传入的events信息处理事件 +// UIView的delegate方法 - (void)smk_view:(__kindof UIView *)view withEvents:(NSDictionary *)events { NSLog(@"----------%@", events); - if ([[events allKeys] containsObject:@"jump"]) { FirstVC *firstVC = [UIViewController sui_viewControllerWithStoryboard:nil identifier:@"FirstVCID"]; [view.sui_currentVC.navigationController pushViewController:firstVC animated:YES]; @@ -64,19 +30,12 @@ - (void)smk_view:(__kindof UIView *)view withEvents:(NSDictionary *)events { } -// 得到父视图,添加subView -> superView -- (void)smk_viewMangerWithSuperView:(UIView *)superView { - self.thirdView.frame = CGRectMake(0, 66, [UIScreen mainScreen].bounds.size.width, 200); - [superView addSubview:self.thirdView]; +- (ViewEventsBlock)smk_viewMangerWithEventBlockOfView:(__kindof UIView *)view { + return ^(NSString *info){ + [view smk_configureViewWithModel:self.dict[@"model"]]; + }; } -// 根据传入的info设置添加subView的事件 -- (void)smk_viewMangerWithHandleOfSubView:(UIView *)view info:(NSString *)info { - - if ([info isEqualToString:@"click"]) { - [view configureViewWithCustomObj:self.dict[@"model"]]; - } -} // 得到模型数据 - (void)smk_viewMangerWithModel:(NSDictionary *(^)( ))dictBlock { if (dictBlock) { diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewModel/ThirdViewModel.h b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewModel/ThirdViewModel.h index a10cea7..a9b9a82 100644 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewModel/ThirdViewModel.h +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewModel/ThirdViewModel.h @@ -8,8 +8,8 @@ #import "SUIMVVMKit.h" -@interface ThirdViewModel : NSObject +@interface ThirdViewModel : NSObject -- (instancetype)getRandomData; +- (id)getRandomData:(NSArray *)array; @end diff --git a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewModel/ThirdViewModel.m b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewModel/ThirdViewModel.m index 4612f81..9401bec 100644 --- a/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewModel/ThirdViewModel.m +++ b/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/thirdExample/ViewModel/ThirdViewModel.m @@ -8,45 +8,31 @@ #import "ThirdViewModel.h" #import "ThirdModel.h" -#import "SMKNetworkPublic.h" +#import "ThirdRequest.h" +#import "SMKAction.h" @interface ThirdViewModel () -@property (nonatomic, strong) NSArray *smk_dataArrayList; - @end @implementation ThirdViewModel -- (NSArray *)smk_dataArrayList { - if (_smk_dataArrayList == nil) { - _smk_dataArrayList = [NSArray array]; - } - return _smk_dataArrayList; -} - -- (void)smk_viewModelWithGetDataSuccessHandler:(void (^)(NSArray *))successHandler { - - NSString *url = @"http://news-at.zhihu.com/api/4/news/latest"; - [SMKHttp get:url params:nil cachePolicy:SMKHttpReturnCacheDataThenLoad success:^(id responseObj) { - - NSArray *array = responseObj[@"stories"]; - self.smk_dataArrayList = [ThirdModel mj_objectArrayWithKeyValuesArray:array]; - if (successHandler) { - successHandler(self.smk_dataArrayList); +- (NSURLSessionTask *)smk_viewModelWithProgress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure { + return [[SMKAction sharedAction] sendRequestBlock:^id{ + return [[ThirdRequest alloc]init]; + } progress:nil success:^(id responseObject) { + NSArray *modelArray = [ThirdModel mj_objectArrayWithKeyValuesArray:responseObject[@"books"]]; + if (success) { + success(modelArray); } } failure:^(NSError *error) { }]; - } -- (instancetype)getRandomData { - if (self.smk_dataArrayList.count > 0) { - u_int32_t index = arc4random_uniform((u_int32_t)self.smk_dataArrayList.count); - return self.smk_dataArrayList[index]; - } - return nil; +- (id)getRandomData:(NSArray *)array { + u_int32_t index = arc4random_uniform((u_int32_t)10); + return array[index]; } @end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/.DS_Store b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/.DS_Store index 6c7998c6cca08c851a39dea45f9652fdfc943d1d..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 100644 GIT binary patch delta 70 zcmZoMXfc=|#>AjHu~2NHo+1YW5HK<@2yDK{XvVhr0b>>8W_AvK4xj>{$am(+{342+ UKzW7)kiy9(Jj$D6L{=~Z06T*Zn*aa+ delta 278 zcmZoMXfc=|#>B`mF;Q%yo}wr#0|Nsi1A_nqLl_YHGI%p&GL%eATwV{7;9>}72xagD z3L{D8q#Fh&=jRpxJhro{yr#93SxT$GoS wpO+4_l5u0AIoo6d5thx|9NZj0UvEtO&ODi4M3I#VD625pP(*mMhsYjg0EoFa-~a#s diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKProperties.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKProperties.h new file mode 100755 index 0000000..4876e51 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKProperties.h @@ -0,0 +1,18 @@ +// +// NSObject+SMKProperties.h +// SMKMVVM +// +// Created by Mac on 16/4/7. +// Copyright © 2016年 momo. All rights reserved. +// + +#import + +@interface NSObject (SMKProperties) + +/** + * 获取一个对象的所有属性 + */ +- (nullable NSDictionary *)smk_allProperties; + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKProperties.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKProperties.m new file mode 100755 index 0000000..c02f835 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKProperties.m @@ -0,0 +1,39 @@ +// +// NSObject+SMKProperties.m +// SMKMVVM +// +// Created by Mac on 16/4/7. +// Copyright © 2016年 momo. All rights reserved. +// + +#import "NSObject+SMKProperties.h" +#import + +@implementation NSObject (SMKProperties) + +- (nullable NSDictionary *)smk_allProperties +{ + unsigned int count = 0; + + objc_property_t *properties = class_copyPropertyList([self class], &count); + NSMutableDictionary *resultDict = [@{} mutableCopy]; + + for (NSUInteger i = 0; i < count; i ++) { + + const char *propertyName = property_getName(properties[i]); + NSString *name = [NSString stringWithUTF8String:propertyName]; + id propertyValue = [self valueForKey:name]; + + if (propertyValue) { + resultDict[name] = propertyValue; + } else { + resultDict[name] = @"字典的key对应的value不能为nil"; + } + } + + free(properties); + + return resultDict; +} + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKRequest.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKRequest.h new file mode 100644 index 0000000..acd9eea --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKRequest.h @@ -0,0 +1,56 @@ +// +// NSObject+SMKRequest.h +// SMKMVVM +// +// Created by yuantao on 16/4/7. +// Copyright © 2016年 momo. All rights reserved. +// + +#import + +typedef enum : NSUInteger { + /** GET */ + SMKRequestMethodGET, + /** POST */ + SMKRequestMethodPOST, + /** UPLOAD */ + SMKRequestMethodUPLOAD, + /** DOWNLOAD */ + SMKRequestMethodDOWNLOAD + +} SMKRequestMethod; + + +@class SMKRequestFileConfig; +@interface NSObject (SMKRequest) + +/** + * scheme (eg: http, https, ftp) + */ +@property (nonatomic, copy, nonnull) NSString *smk_scheme; +/** + * host + */ +@property (nonatomic, copy, nonnull) NSString *smk_host; +/** + * path + */ +@property (nonatomic, copy, nonnull) NSString *smk_path; +/** + * method + */ +@property (nonatomic, assign) SMKRequestMethod smk_method; +/** + * url + */ +@property (nonatomic, copy, nonnull) NSString *smk_url; +/** + * parameters + */ +@property (nonatomic, retain, nonnull) id smk_params; +/** + * fileConfig + */ +@property (nonatomic, retain, nonnull) SMKRequestFileConfig *smk_fileConfig; + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKRequest.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKRequest.m new file mode 100644 index 0000000..28d833e --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/NSObject+SMKRequest.m @@ -0,0 +1,84 @@ +// +// NSObject+SMKRequest.m +// SMKMVVM +// +// Created by yuantao on 16/4/7. +// Copyright © 2016年 momo. All rights reserved. +// + +#import "NSObject+SMKRequest.h" +#import + +@implementation NSObject (SMKRequest) + +/** + * scheme (eg: http, https, ftp) + */ +- (NSString *)smk_scheme { + return objc_getAssociatedObject(self, @selector(smk_scheme)); +} +- (void)setSmk_scheme:(NSString *)smk_scheme { + objc_setAssociatedObject(self, @selector(smk_scheme), smk_scheme, OBJC_ASSOCIATION_COPY_NONATOMIC); +} + +/** + * host + */ +- (NSString *)smk_host { + return objc_getAssociatedObject(self, @selector(smk_host)); +} +- (void)setSmk_host:(NSString *)smk_host { + objc_setAssociatedObject(self, @selector(smk_host), smk_host, OBJC_ASSOCIATION_COPY_NONATOMIC); +} + +/** + * path + */ +- (NSString *)smk_path { + return objc_getAssociatedObject(self, @selector(smk_path)); +} +- (void)setSmk_path:(NSString *)smk_path { + objc_setAssociatedObject(self, @selector(smk_path), smk_path, OBJC_ASSOCIATION_COPY_NONATOMIC); +} + +/** + * method + */ +- (SMKRequestMethod)smk_method { + return [objc_getAssociatedObject(self, @selector(smk_method)) integerValue]; +} +- (void)setSmk_method:(SMKRequestMethod)smk_method { + objc_setAssociatedObject(self, @selector(smk_method), @(smk_method), OBJC_ASSOCIATION_ASSIGN); +} + +/** + * url + */ +- (NSString *)smk_url { + return objc_getAssociatedObject(self, @selector(smk_url)); +} +- (void)setSmk_url:(NSString *)smk_url { + objc_setAssociatedObject(self, @selector(smk_url), smk_url, OBJC_ASSOCIATION_COPY_NONATOMIC); +} + +/** + * parameters + */ +- (id)smk_params { + return objc_getAssociatedObject(self, @selector(smk_params)); +} +- (void)setSmk_params:(id)smk_params { + objc_setAssociatedObject(self, @selector(smk_params), smk_params, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +/** + * fileConfig + */ +- (SMKRequestFileConfig *)smk_fileConfig { + return objc_getAssociatedObject(self, @selector(smk_fileConfig)); +} +- (void)setSmk_fileConfig:(SMKRequestFileConfig *)smk_fileConfig { + objc_setAssociatedObject(self, @selector(smk_fileConfig), smk_fileConfig, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKAction.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKAction.h new file mode 100644 index 0000000..6a29998 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKAction.h @@ -0,0 +1,114 @@ +// +// SMKAction.h +// SMKMVVM +// +// Created by yuantao on 16/4/7. +// Copyright © 2016年 momo. All rights reserved. +// + +#import +#import "SMKRequestProtocol.h" + +/** + * 请求成功block + */ +typedef void (^successBlock)(id responseObject); +/** + * 请求失败block + */ +typedef void (^failureBlock) (NSError *error); +/** + * 请求响应block + */ +typedef void (^responseBlock)(id dataObj, NSError *error); +/** + * 监听进度响应block + */ +typedef void (^progressBlock)(NSProgress * progress); + + + +@class SMKActionFileConfig; +@interface SMKAction : NSObject + +/** + * 请求超时时间 + */ +@property (nonatomic, assign) NSTimeInterval timeoutInterval; +/** + reachable + */ +@property (readonly, nonatomic, assign, getter = isReachable) BOOL reachable; +/** + reachableViaWWAN + */ +@property (readonly, nonatomic, assign, getter = isReachableViaWWAN) BOOL reachableViaWWAN; +/** + reachableViaWiFi + */ +@property (readonly, nonatomic, assign, getter = isReachableViaWiFi) BOOL reachableViaWiFi; + + +/** + * 单例 + */ ++ (instancetype)sharedAction; + +/** + * 取消所有操作 + */ +- (void)cancelAllOperations; + +/** + * 发送请求(在外部配置request) + */ +- (NSURLSessionTask *)sendRequest: + (id)request + progress:(progressBlock)progress + success:(successBlock)success + failure:(failureBlock)failure; + +/** + * 发送请求Block(在block内部配置request) + */ +- (NSURLSessionTask *)sendRequestBlock: + (id (^)())requestBlock + progress:(progressBlock)progress + success:(successBlock)success + failure:(failureBlock)failure; + + + +@end + + +/** + * 用来封装上文件数据的模型类 + */ +@interface SMKRequestFileConfig : NSObject + +/** + * 文件数据 + */ +@property (nonatomic, strong) NSData *fileData; +/** + * 服务器接收参数名 + */ +@property (nonatomic, copy) NSString *name; +/** + * 文件名 + */ +@property (nonatomic, copy) NSString *fileName; +/** + * 文件类型 + */ +@property (nonatomic, copy) NSString *mimeType; + ++ (instancetype)fileConfigWithfileData:(NSData *)fileData name:(NSString *)name fileName:(NSString *)fileName mimeType:(NSString *)mimeType; + +- (instancetype)initWithfileData:(NSData *)fileData name:(NSString *)name fileName:(NSString *)fileName mimeType:(NSString *)mimeType; + +@end + + + diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKAction.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKAction.m new file mode 100644 index 0000000..3aa502e --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKAction.m @@ -0,0 +1,234 @@ +// +// SMKAction.m +// SMKMVVM +// +// Created by yuantao on 16/4/7. +// Copyright © 2016年 momo. All rights reserved. +// + +#import "SMKAction.h" +#import "AFNetworking.h" + + +static NSString * const SMKRequestUrlPath = @"SMKRequestUrlPath"; +static NSString * const SMKRequestParameters = @"SMKRequestParameters"; + + +@interface SMKAction () + +@property (strong, nonatomic) AFHTTPSessionManager *sessionManager; + +@end + +@implementation SMKAction + +static id _instace; + ++ (id)allocWithZone:(struct _NSZone *)zone +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instace = [super allocWithZone:zone]; + }); + return _instace; +} + ++ (instancetype)sharedAction +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instace = [[self alloc] init]; + }); + return _instace; +} + +- (id)copyWithZone:(NSZone *)zone +{ + return _instace; +} + +- (AFHTTPSessionManager *)sessionManager { + if (_sessionManager == nil) { + _sessionManager = [AFHTTPSessionManager manager]; + _sessionManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", @"text/plain",nil]; + _sessionManager.requestSerializer.timeoutInterval = (!self.timeoutInterval ?: self.timeoutInterval); + } + return _sessionManager; +} + +- (NSURLSessionTask *)sendRequest:(id)request progress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure { + if ([request respondsToSelector:@selector(smk_requestConfigures)]) { + [request smk_requestConfigures]; + } + + NSObject *requestObject = (NSObject *)request; + NSURLSessionTask *sessionDataTask = nil; + + switch (requestObject.smk_method) { + + case SMKRequestMethodGET: + sessionDataTask = [self get:request progress:progress success:success failure:failure]; + break; + + case SMKRequestMethodPOST: + sessionDataTask = [self post:request progress:progress success:success failure:failure]; + break; + + case SMKRequestMethodUPLOAD: + sessionDataTask = [self upload:request progress:progress success:success failure:failure]; + break; + + case SMKRequestMethodDOWNLOAD: + sessionDataTask = [self download:request progress:progress success:success failure:failure]; + break; + default: + break; + } + + return sessionDataTask; +} + +- (NSURLSessionTask *)sendRequestBlock:(id (^)())requestBlock progress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure { + if (requestBlock) return [self sendRequest:requestBlock() progress:progress success:success failure:failure]; + return nil; +} + +- (NSURLSessionDataTask *)get:(id)request progress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure { + + NSDictionary *requestDictionary = [self requestObject:request]; + NSString *urlPath = requestDictionary[SMKRequestUrlPath]; + NSDictionary *parameters = requestDictionary[SMKRequestParameters]; + + return [self.sessionManager GET:urlPath parameters:parameters progress:^(NSProgress * _Nonnull downloadProgress) { + if (progress) { + if (downloadProgress) progress(downloadProgress); + } + } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { + if (success) { + if (responseObject) success(responseObject); + } + } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { + if (failure) { + if (error) failure(error); + } + }]; +} + +- (NSURLSessionDataTask *)post:(id)request progress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure { + NSDictionary *requestDictionary = [self requestObject:request]; + NSString *urlPath = requestDictionary[SMKRequestUrlPath]; + NSDictionary *parameters = requestDictionary[SMKRequestParameters]; + + return [self.sessionManager POST:urlPath parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) { + if (progress) { + if (uploadProgress) progress(uploadProgress); + } + } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { + if (success) { + if (responseObject) success(responseObject); + } + } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { + if (failure) { + if (error) failure(error); + } + }]; +} + +- (NSURLSessionDownloadTask *)download:(id)request progress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure { + + NSDictionary *requestDictionary = [self requestObject:request]; + NSString *urlPath = requestDictionary[SMKRequestUrlPath]; + NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; + AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:sessionConfiguration]; + NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:urlPath]]; + + NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:req progress:^(NSProgress * _Nonnull downloadProgress) { + if (progress) { + if (downloadProgress) progress(downloadProgress); + } + } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) { + NSURL *documentUrl = [[NSFileManager defaultManager] URLForDirectory :NSCachesDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; + + return [documentUrl URLByAppendingPathComponent:[response suggestedFilename]]; + } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) { + if (failure) { + if (error) failure(error); + } + if (success) { + if (response) success(response); + } + }]; + + [downloadTask resume]; + return downloadTask; +} + +- (NSURLSessionDataTask *)upload:(id)request progress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure { + + NSDictionary *requestDictionary = [self requestObject:request]; + NSString *urlPath = requestDictionary[SMKRequestUrlPath]; + NSDictionary *parameters = requestDictionary[SMKRequestParameters]; + + NSObject *requestObject = (NSObject *)request; + + return [self.sessionManager POST:urlPath parameters:parameters constructingBodyWithBlock:^(id _Nonnull formData) { + [formData appendPartWithFileData:requestObject.smk_fileConfig.fileData name:requestObject.smk_fileConfig.name fileName:requestObject.smk_fileConfig.fileName mimeType:requestObject.smk_fileConfig.mimeType]; + } progress:^(NSProgress * _Nonnull uploadProgress) { + if (progress) { + if (uploadProgress) progress(uploadProgress); + } + } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { + if (success) { + if (responseObject) success(responseObject); + } + } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { + if (failure) { + if (error) failure(error); + } + }]; + +} + +- (NSDictionary *)requestObject:(id)request { + + NSObject *requestObject = (NSObject *)request; + + // urlPath + NSString *urlPath = nil; + if (requestObject.smk_url.length) { + urlPath = requestObject.smk_url; + } else { + urlPath = [NSString stringWithFormat:@"%@://%@%@",requestObject.smk_scheme, requestObject.smk_host, requestObject.smk_path]; + } + + // parameters + id parameters = nil; + if ([request respondsToSelector:@selector(smk_requestParameters)]) { + parameters = [request smk_requestParameters]; + } else if ([request respondsToSelector:@selector(setSmk_params:)]) { + parameters = requestObject.smk_params; + } + + return @{ + SMKRequestUrlPath : urlPath, + SMKRequestParameters : parameters ? : @"" + }; +} + +- (void)cancelAllOperations { + [self.sessionManager.operationQueue cancelAllOperations]; +} + +- (BOOL)isReachable { + return [AFNetworkReachabilityManager sharedManager].isReachable; +} + +- (BOOL)isReachableViaWWAN { + return [AFNetworkReachabilityManager sharedManager].isReachableViaWWAN; +} + +- (BOOL)isReachableViaWiFi { + return [AFNetworkReachabilityManager sharedManager].isReachableViaWiFi; +} + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Constant/SMKConstant.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKConstant.h similarity index 100% rename from SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Constant/SMKConstant.h rename to SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKConstant.h diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKExtendPublic.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKExtendPublic.h new file mode 100644 index 0000000..b78dc21 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKExtendPublic.h @@ -0,0 +1,19 @@ +// +// SMKExtend.h +// SUIMVVMDemo +// +// Created by yuantao on 16/2/22. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#ifndef SMKExtendPublic_h +#define SMKExtendPublic_h + +#import "NSObject+SMKProperties.h" +#import "NSObject+SMKRequest.h" +#import "UICollectionViewCell+SMKConfigure.h" +#import "UITableViewCell+SMKConfigure.h" +#import "UIView+SMKConfigure.h" +#import "UIView+SMKEvents.h" + +#endif /* SMKExtendPublic_h */ diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKRequestProtocol.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKRequestProtocol.h new file mode 100644 index 0000000..a1050b2 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKRequestProtocol.h @@ -0,0 +1,27 @@ +// +// SMKRequestProtocol.h +// SMKMVVM +// +// Created by yuantao on 16/4/7. +// Copyright © 2016年 momo. All rights reserved. +// + +#import + +@protocol SMKRequestProtocol + +@optional + +/** + * 配置request请求参数 + * + * @return NSDictionary 或者 自定义参数模型 + */ +- (id)smk_requestParameters; + +/** + * 配置request的路径、请求参数等 + */ +- (void)smk_requestConfigures; + +@end diff --git a/SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKSingleton.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKSingleton.h similarity index 100% rename from SUIMVVMDemo/Pods/SUIMVVMNetwork/SUIMVVMNetwork/SUIMVVMNetwork/SMKSingleton.h rename to SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKSingleton.h diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKStore.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKStore.h new file mode 100644 index 0000000..f303113 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKStore.h @@ -0,0 +1,86 @@ +// +// SMKKeyValueStore.h +// Ape +// +// Created by TangQiao on 12-11-6. +// Copyright (c) 2012年 TangQiao. All rights reserved. +// + +#import + + +@interface SMKStoreItem : NSObject + +@property (strong, nonatomic) NSString *smk_itemId; +@property (strong, nonatomic) id smk_itemObject; +@property (strong, nonatomic) NSDate *smk_createdTime; + +@end + + +@interface SMKStore : NSObject + +/** + * 根据dbName初始化数据库 + */ +- (id)initDBWithName:(NSString *)dbName; +/** + * 根据dbPath初始化数据库 + */ +- (id)initWithDBWithPath:(NSString *)dbPath; +/** + * 根据tableName创建数据表 + */ +- (void)smk_createTableWithName:(NSString *)tableName; +/** + * 清空数据表 + */ +- (void)smk_clearTable:(NSString *)tableName; +/** + * tableName是否存在 + */ +- (BOOL)smk_isExistTableWithName:(NSString *)tableName; +/** + * 删除表 + */ +- (BOOL)smk_deleteTable:(NSString *)tableName; +/** + * 删除数据库 + */ +- (void)smk_deleteDatabseWithDBName:(NSString *)DBName; +/** + * 获得数据库存储路径 + */ +- (NSString *)smk_getDBPath; +/** + * 关闭数据库 + */ +- (void)smk_close; + +///************************ Put&Get methods ***************************************** + +- (void)smk_putObject:(id)object withId:(NSString *)objectId intoTable:(NSString *)tableName; + +- (id)smk_getObjectById:(NSString *)objectId fromTable:(NSString *)tableName; + +- (SMKStoreItem *)smk_getSMKStoreItemById:(NSString *)objectId fromTable:(NSString *)tableName; + +- (void)smk_putString:(NSString *)string withId:(NSString *)stringId intoTable:(NSString *)tableName; + +- (NSString *)smk_getStringById:(NSString *)stringId fromTable:(NSString *)tableName; + +- (void)smk_putNumber:(NSNumber *)number withId:(NSString *)numberId intoTable:(NSString *)tableName; + +- (NSNumber *)smk_getNumberById:(NSString *)numberId fromTable:(NSString *)tableName; + +- (NSArray *)smk_getAllItemsFromTable:(NSString *)tableName; + +- (void)smk_deleteObjectById:(NSString *)objectId fromTable:(NSString *)tableName; + +- (void)smk_deleteObjectsByIdArray:(NSArray *)objectIdArray fromTable:(NSString *)tableName; + +- (void)smk_deleteObjectsByIdPrefix:(NSString *)objectIdPrefix fromTable:(NSString *)tableName; + +- (NSArray *)smk_getItemsFromTable:(NSString *)tableName withRange:(NSRange)range; + +@end diff --git a/SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/YTKKeyValueStore/YTKKeyValueStore.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKStore.m similarity index 69% rename from SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/YTKKeyValueStore/YTKKeyValueStore.m rename to SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKStore.m index d9b547c..c884332 100644 --- a/SUIMVVMDemo/Pods/SUIMVVMStore/SUIMVVMStore/YTKKeyValueStore/YTKKeyValueStore.m +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKStore.m @@ -1,12 +1,12 @@ // -// YTKKeyValueStore.m +// SMKStore.m // Ape // // Created by TangQiao on 12-11-6. // Copyright (c) 2012年 TangQiao. All rights reserved. // -#import "YTKKeyValueStore.h" +#import "SMKStore.h" #import "FMDatabase.h" #import "FMDatabaseQueue.h" @@ -20,25 +20,24 @@ #define debugError() #endif -#define PATH_OF_DOCUMENT [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] +#define PATH_OF_CACHES [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0] -@implementation YTKKeyValueItem +@implementation SMKStoreItem - (NSString *)description { - return [NSString stringWithFormat:@"id=%@, value=%@, timeStamp=%@", _itemId, _itemObject, _createdTime]; + return [NSString stringWithFormat:@"id=%@, value=%@, timeStamp=%@", self.smk_itemId, self.smk_itemObject, self.smk_createdTime]; } @end -@interface YTKKeyValueStore() +@interface SMKStore() @property (strong, nonatomic) FMDatabaseQueue * dbQueue; - @property (nonatomic, copy) NSString *dbPath; @end -@implementation YTKKeyValueStore +@implementation SMKStore static NSString *const DEFAULT_DB_NAME = @"database.sqlite"; @@ -64,7 +63,7 @@ PRIMARY KEY(id)) \ static NSString *const DELETE_ITEMS_WITH_PREFIX_SQL = @"DELETE from %@ where id like ? "; -+ (BOOL)checkTableName:(NSString *)tableName { ++ (BOOL)smk_checkTableName:(NSString *)tableName { if (tableName == nil || tableName.length == 0 || [tableName rangeOfString:@" "].location != NSNotFound) { debugLog(@"ERROR, table name: %@ format error.", tableName); return NO; @@ -72,17 +71,17 @@ + (BOOL)checkTableName:(NSString *)tableName { return YES; } -//- (id)init { -// return [self initDBWithName:DEFAULT_DB_NAME]; -//} +- (id)init { + return [self initDBWithName:DEFAULT_DB_NAME]; +} - (id)initDBWithName:(NSString *)dbName { self = [super init]; if (self) { - NSString * dbPath = [PATH_OF_DOCUMENT stringByAppendingPathComponent:dbName]; + NSString * dbPath = [PATH_OF_CACHES stringByAppendingPathComponent:dbName]; _dbPath = dbPath; if (_dbQueue) { - [self close]; + [self smk_close]; } _dbQueue = [FMDatabaseQueue databaseQueueWithPath:dbPath]; } @@ -94,15 +93,15 @@ - (id)initWithDBWithPath:(NSString *)dbPath { if (self) { _dbPath = dbPath; if (_dbQueue) { - [self close]; + [self smk_close]; } _dbQueue = [FMDatabaseQueue databaseQueueWithPath:dbPath]; } return self; } -- (void)createTableWithName:(NSString *)tableName { - if ([YTKKeyValueStore checkTableName:tableName] == NO) { +- (void)smk_createTableWithName:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { return; } NSString * sql = [NSString stringWithFormat:CREATE_TABLE_SQL, tableName]; @@ -115,8 +114,8 @@ - (void)createTableWithName:(NSString *)tableName { } } -- (void)clearTable:(NSString *)tableName { - if ([YTKKeyValueStore checkTableName:tableName] == NO) { +- (void)smk_clearTable:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { return; } NSString * sql = [NSString stringWithFormat:CLEAR_ALL_SQL, tableName]; @@ -129,12 +128,23 @@ - (void)clearTable:(NSString *)tableName { } } -- (void)putObject:(id)object withId:(NSString *)objectId intoTable:(NSString *)tableName { - if ([YTKKeyValueStore checkTableName:tableName] == NO) { +- (void)smk_putObject:(id)object withId:(NSString *)objectId intoTable:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { return; } + NSError * error; - NSData * data = [NSJSONSerialization dataWithJSONObject:object options:0 error:&error]; + id obj = nil; + NSBundle *mainB = [NSBundle bundleForClass:[object class]]; + if (mainB == [NSBundle mainBundle]) { + obj = [object smk_allProperties]; + + }else + { + obj = object; + } + + NSData * data = [NSJSONSerialization dataWithJSONObject:obj options:0 error:&error]; if (error) { debugLog(@"ERROR, faild to get json data"); return; @@ -151,17 +161,17 @@ - (void)putObject:(id)object withId:(NSString *)objectId intoTable:(NSString *)t } } -- (id)getObjectById:(NSString *)objectId fromTable:(NSString *)tableName { - YTKKeyValueItem * item = [self getYTKKeyValueItemById:objectId fromTable:tableName]; +- (id)smk_getObjectById:(NSString *)objectId fromTable:(NSString *)tableName { + SMKStoreItem * item = [self smk_getSMKStoreItemById:objectId fromTable:tableName]; if (item) { - return item.itemObject; + return item.smk_itemObject; } else { return nil; } } -- (YTKKeyValueItem *)getYTKKeyValueItemById:(NSString *)objectId fromTable:(NSString *)tableName { - if ([YTKKeyValueStore checkTableName:tableName] == NO) { +- (SMKStoreItem *)smk_getSMKStoreItemById:(NSString *)objectId fromTable:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { return nil; } NSString * sql = [NSString stringWithFormat:QUERY_ITEM_SQL, tableName]; @@ -183,50 +193,50 @@ - (YTKKeyValueItem *)getYTKKeyValueItemById:(NSString *)objectId fromTable:(NSSt debugLog(@"ERROR, faild to prase to json"); return nil; } - YTKKeyValueItem * item = [[YTKKeyValueItem alloc] init]; - item.itemId = objectId; - item.itemObject = result; - item.createdTime = createdTime; + SMKStoreItem * item = [[SMKStoreItem alloc] init]; + item.smk_itemId = objectId; + item.smk_itemObject = result; + item.smk_createdTime = createdTime; return item; } else { return nil; } } -- (void)putString:(NSString *)string withId:(NSString *)stringId intoTable:(NSString *)tableName { +- (void)smk_putString:(NSString *)string withId:(NSString *)stringId intoTable:(NSString *)tableName { if (string == nil) { debugLog(@"error, string is nil"); return; } - [self putObject:@[string] withId:stringId intoTable:tableName]; + [self smk_putObject:@[string] withId:stringId intoTable:tableName]; } -- (NSString *)getStringById:(NSString *)stringId fromTable:(NSString *)tableName { - NSArray * array = [self getObjectById:stringId fromTable:tableName]; +- (NSString *)smk_getStringById:(NSString *)stringId fromTable:(NSString *)tableName { + NSArray * array = [self smk_getObjectById:stringId fromTable:tableName]; if (array && [array isKindOfClass:[NSArray class]]) { return array[0]; } return nil; } -- (void)putNumber:(NSNumber *)number withId:(NSString *)numberId intoTable:(NSString *)tableName { +- (void)smk_putNumber:(NSNumber *)number withId:(NSString *)numberId intoTable:(NSString *)tableName { if (number == nil) { debugLog(@"error, number is nil"); return; } - [self putObject:@[number] withId:numberId intoTable:tableName]; + [self smk_putObject:@[number] withId:numberId intoTable:tableName]; } -- (NSNumber *)getNumberById:(NSString *)numberId fromTable:(NSString *)tableName { - NSArray * array = [self getObjectById:numberId fromTable:tableName]; +- (NSNumber *)smk_getNumberById:(NSString *)numberId fromTable:(NSString *)tableName { + NSArray * array = [self smk_getObjectById:numberId fromTable:tableName]; if (array && [array isKindOfClass:[NSArray class]]) { return array[0]; } return nil; } -- (NSArray *)getAllItemsFromTable:(NSString *)tableName { - if ([YTKKeyValueStore checkTableName:tableName] == NO) { +- (NSArray *)smk_getAllItemsFromTable:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { return nil; } NSString * sql = [NSString stringWithFormat:SELECT_ALL_SQL, tableName]; @@ -234,31 +244,31 @@ - (NSArray *)getAllItemsFromTable:(NSString *)tableName { [_dbQueue inDatabase:^(FMDatabase *db) { FMResultSet * rs = [db executeQuery:sql]; while ([rs next]) { - YTKKeyValueItem * item = [[YTKKeyValueItem alloc] init]; - item.itemId = [rs stringForColumn:@"id"]; - item.itemObject = [rs stringForColumn:@"json"]; - item.createdTime = [rs dateForColumn:@"createdTime"]; + SMKStoreItem * item = [[SMKStoreItem alloc] init]; + item.smk_itemId = [rs stringForColumn:@"id"]; + item.smk_itemObject = [rs stringForColumn:@"json"]; + item.smk_createdTime = [rs dateForColumn:@"createdTime"]; [result addObject:item]; } [rs close]; }]; // parse json string to object NSError * error; - for (YTKKeyValueItem * item in result) { + for (SMKStoreItem * item in result) { error = nil; - id object = [NSJSONSerialization JSONObjectWithData:[item.itemObject dataUsingEncoding:NSUTF8StringEncoding] + id object = [NSJSONSerialization JSONObjectWithData:[item.smk_itemObject dataUsingEncoding:NSUTF8StringEncoding] options:(NSJSONReadingAllowFragments) error:&error]; if (error) { debugLog(@"ERROR, faild to prase to json."); } else { - item.itemObject = object; + item.smk_itemObject = object; } } return result; } -- (void)deleteObjectById:(NSString *)objectId fromTable:(NSString *)tableName { - if ([YTKKeyValueStore checkTableName:tableName] == NO) { +- (void)smk_deleteObjectById:(NSString *)objectId fromTable:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { return; } NSString * sql = [NSString stringWithFormat:DELETE_ITEM_SQL, tableName]; @@ -271,8 +281,8 @@ - (void)deleteObjectById:(NSString *)objectId fromTable:(NSString *)tableName { } } -- (void)deleteObjectsByIdArray:(NSArray *)objectIdArray fromTable:(NSString *)tableName { - if ([YTKKeyValueStore checkTableName:tableName] == NO) { +- (void)smk_deleteObjectsByIdArray:(NSArray *)objectIdArray fromTable:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { return; } NSMutableString *stringBuilder = [NSMutableString string]; @@ -295,8 +305,8 @@ - (void)deleteObjectsByIdArray:(NSArray *)objectIdArray fromTable:(NSString *)ta } } -- (void)deleteObjectsByIdPrefix:(NSString *)objectIdPrefix fromTable:(NSString *)tableName { - if ([YTKKeyValueStore checkTableName:tableName] == NO) { +- (void)smk_deleteObjectsByIdPrefix:(NSString *)objectIdPrefix fromTable:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { return; } NSString *sql = [NSString stringWithFormat:DELETE_ITEMS_WITH_PREFIX_SQL, tableName]; @@ -310,14 +320,14 @@ - (void)deleteObjectsByIdPrefix:(NSString *)objectIdPrefix fromTable:(NSString * } } -- (void)close { +- (void)smk_close { [_dbQueue close]; _dbQueue = nil; } -- (NSArray *)getItemsFromTable:(NSString *)tableName withRange:(NSRange)range { +- (NSArray *)smk_getItemsFromTable:(NSString *)tableName withRange:(NSRange)range { - if ([YTKKeyValueStore checkTableName:tableName] == NO) { + if ([SMKStore smk_checkTableName:tableName] == NO) { return nil; } @@ -326,24 +336,24 @@ - (NSArray *)getItemsFromTable:(NSString *)tableName withRange:(NSRange)range { [_dbQueue inDatabase:^(FMDatabase *db) { FMResultSet * rs = [db executeQuery:sql]; while ([rs next]) { - YTKKeyValueItem * item = [[YTKKeyValueItem alloc] init]; - item.itemId = [rs stringForColumn:@"id"]; - item.itemObject = [rs stringForColumn:@"json"]; - item.createdTime = [rs dateForColumn:@"createdTime"]; + SMKStoreItem * item = [[SMKStoreItem alloc] init]; + item.smk_itemId = [rs stringForColumn:@"id"]; + item.smk_itemObject = [rs stringForColumn:@"json"]; + item.smk_createdTime = [rs dateForColumn:@"createdTime"]; [result addObject:item]; } [rs close]; }]; // parse json string to object NSError * error; - for (YTKKeyValueItem * item in result) { + for (SMKStoreItem * item in result) { error = nil; - id object = [NSJSONSerialization JSONObjectWithData:[item.itemObject dataUsingEncoding:NSUTF8StringEncoding] + id object = [NSJSONSerialization JSONObjectWithData:[item.smk_itemObject dataUsingEncoding:NSUTF8StringEncoding] options:(NSJSONReadingAllowFragments) error:&error]; if (error) { debugLog(@"ERROR, faild to prase to json."); } else { - item.itemObject = object; + item.smk_itemObject = object; } } return result; @@ -351,7 +361,7 @@ - (NSArray *)getItemsFromTable:(NSString *)tableName withRange:(NSRange)range { } -- (BOOL)isExistTableWithName:(NSString *)tableName +- (BOOL)smk_isExistTableWithName:(NSString *)tableName { __block BOOL result; @@ -376,7 +386,7 @@ - (BOOL)isExistTableWithName:(NSString *)tableName } // 删除表 -- (BOOL)deleteTable:(NSString *)tableName +- (BOOL)smk_deleteTable:(NSString *)tableName { __block BOOL result; [_dbQueue inDatabase:^(FMDatabase *db) { @@ -392,7 +402,7 @@ - (BOOL)deleteTable:(NSString *)tableName } // 删除数据库 -- (void)deleteDatabseWithDBName:(NSString *)DBName +- (void)smk_deleteDatabseWithDBName:(NSString *)DBName { __block BOOL success; __block NSError *error; @@ -412,7 +422,7 @@ - (void)deleteDatabseWithDBName:(NSString *)DBName } } -- (NSString *)getDBPath { +- (NSString *)smk_getDBPath { return _dbPath; } @end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewMangerProtocolDelegate.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKViewMangerProtocol.h similarity index 86% rename from SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewMangerProtocolDelegate.h rename to SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKViewMangerProtocol.h index dffffb3..3a021dc 100644 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewMangerProtocolDelegate.h +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKViewMangerProtocol.h @@ -1,16 +1,17 @@ // -// SMKViewMangerProtocolDelegate.h +// SMKViewMangerProtocol.h // SUIMVVMDemo // // Created by yuantao on 16/2/23. // Copyright © 2016年 lovemo. All rights reserved. // -#ifndef SMKViewMangerProtocolDelegate_h -#define SMKViewMangerProtocolDelegate_h + #import -@protocol SMKViewMangerProtocolDelegate +typedef void (^ViewEventsBlock)( ); + +@protocol SMKViewMangerProtocol @optional @@ -67,6 +68,10 @@ */ - (void)smk_viewMangerWithModel:(NSDictionary * (^) ( ))dictBlock; +/** + * 处理viewBlock事件 + */ +- (ViewEventsBlock)smk_viewMangerWithEventBlockOfView:(__kindof UIView *)view; + @end -#endif /* SMKViewMangerProtocolDelegate_h */ diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKViewModelProtocol.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKViewModelProtocol.h new file mode 100644 index 0000000..4bf9f9e --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKViewModelProtocol.h @@ -0,0 +1,43 @@ +// +// SMKViewModelProtocol.h +// SUIMVVMDemo +// +// Created by yuantao on 16/4/8. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#import + +/** + * 请求成功block + */ +typedef void (^successBlock)(id responseObject); +/** + * 请求失败block + */ +typedef void (^failureBlock) (NSError *error); +/** + * 请求响应block + */ +typedef void (^responseBlock)(id dataObj, NSError *error); +/** + * 监听进度响应block + */ +typedef void (^progressBlock)(NSProgress * progress); + + +@protocol SMKViewModelProtocol + +@optional +/** + * 返回指定viewModel的所引用的控制器 + */ +- (void)smk_viewModelWithViewController:(UIViewController *)viewController; + +/** + * 加载数据 + */ +- (NSURLSessionTask *)smk_viewModelWithProgress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure; + + +@end diff --git a/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewProtocolDelegate.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKViewProtocol.h similarity index 67% rename from SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewProtocolDelegate.h rename to SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKViewProtocol.h index eaf2491..ea87bcc 100644 --- a/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewProtocolDelegate.h +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SMKViewProtocol.h @@ -1,16 +1,15 @@ // -// SMKViewProtocolDelegate.h +// SMKViewProtocol.h // SUIMVVMDemo // // Created by yuantao on 16/3/5. // Copyright © 2016年 lovemo. All rights reserved. // -#ifndef SMKViewProtocolDelegate_h -#define SMKViewProtocolDelegate_h + #import -@protocol SMKViewProtocolDelegate +@protocol SMKViewProtocol @optional @@ -23,7 +22,5 @@ - (void)smk_view:(__kindof UIView *)view withEvents:(NSDictionary *)events; - @end -#endif /* SMKViewProtocolDelegate_h */ diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit.h index a05ed92..32f57f9 100644 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit.h +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit.h @@ -9,24 +9,15 @@ #ifndef SUIMVVMKit_h #define SUIMVVMKit_h -// Base: -#import "SMKBaseTableViewManger.h" -#import "SMKBaseCollectionViewManger.h" - -// Extend: #import "SMKExtendPublic.h" - -// Protocol: -#import "SMKViewMangerProtocolDelegate.h" -#import "SMKViewModelProtocolDelegate.h" -#import "SMKViewProtocolDelegate.h" - -// Constant: +#import "SMKAction.h" #import "SMKConstant.h" +#import "SMKStore.h" #import "SMKSingleton.h" +#import "SMKRequestProtocol.h" +#import "SMKViewMangerProtocol.h" +#import "SMKViewModelProtocol.h" +#import "SMKViewProtocol.h" -// Vender: -#import "SUIUtils.h" -#import "UITableView+FDTemplateLayoutCell.h" #endif /* SUIMVVMKit_h */ diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/.DS_Store b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/.DS_Store deleted file mode 100644 index 1f58ad841683ae2840ec80041340f099ea6ea3fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKPfP1S5Z|p;Q@un~5Z-04LJ!sY?---+C=?=!sMLf6yAYDnq!uZKoW1)6)Te%r z$9vzwkMeGBW_MeZ>QPad3A4Z1*_qw!Z^LeuF~;3)xWbst7_&eTOBEc&%2rHcaBv}hEZVbhM%{F_I{eiBij!SWYlZg3p;6&`!b0-&r(kgWfG=6H|-{2 zcH-&&4rQ3Pn)YI&6J0=R!%w0EnaM!LGQYGc_%!XMe!sr8S{1AH^+8qiH#cilu~y$0 z4D4&m`mwyey?4|eT;1H>{kng6{QXC-0*4P)$-KcK`~_n~$c5KQ;xsu2-!Og{M@S41 z1H`}=X25J|*6bIa1HC#iKn%PO1Gqm3P(;UIp;2ueP~h()wwDo6z{a}-qA=(fEHpw3 z2-m5AI+dF%2G{A}7beazSZLJgjH{8MA2TvHHx#Z$2ft9^j5`{sBnF6qmkdnks*UIW z&$sXYFO#T73=jj~iUD5U^>$sDk~v$)CWmLO06ham!MH->C<{z%S4M VbPN_6!2?1+0*VGIh=C7f;6M6wV~+p; diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/.DS_Store b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 -#import "UICollectionView+CollectionDataDelegateAdditions.h" - -/** - * 选中UICollectionViewCell的Block - */ -typedef void (^DidSelectCellBlock)(NSIndexPath *indexPath, id item) ; -/** - * 设置UICollectionViewCell大小的Block - */ -typedef CGSize (^CellItemSize)() ; -/** - * 设置UICollectionViewCell间隔Margin的Block - */ -typedef UIEdgeInsets (^CellItemMargin)() ; - - - // - - - - - -- - - - - - - - - - -- 创建类 - -- - - - - - - - -- - - - - -- -// - -@interface SMKBaseCollectionViewManger : NSObject - -/** collectionViewCell 重用标识符 */ -@property (nonatomic, copy) NSString *cellIdentifier ; - -/** collectionView布局方式 */ -@property (nonatomic, strong) UICollectionViewLayout *collectionViewLayout; - -/** 选中cell */ -@property (nonatomic, copy) DidSelectCellBlock didSelectCellBlock ; - -/** cell的Size */ -@property (nonatomic, copy) CellItemSize cellItemSize; - -/** cell的Margin */ -@property (nonatomic, copy) CellItemMargin cellItemMargin; - - -/** - * 设置UICollectionViewCell大小 - */ -- (void)itemSize:(CellItemSize)cellItemSize; - -/** - * 设置UICollectionViewCell间隔Margin - */ -- (void)itemInset:(CellItemMargin)cellItemMargin; - -/** - * 初始化方法 - */ -- (id)initWithCellIdentifier:(NSString *)aCellIdentifier - collectionViewLayout:(UICollectionViewLayout *)collectionViewLayout - cellItemSizeBlock:(CellItemSize)cellItemSize - cellItemMarginBlock:(CellItemMargin)cellItemMargin - didSelectBlock:(DidSelectCellBlock)didselectBlock ; - -/** - * 设置CollectionView的Datasource和Delegate为self - */ -- (void)handleCollectionViewDatasourceAndDelegate:(UICollectionView *)collection ; - -/** - * 获取CollectionView中Item所在的indexPath - */ -- (id)itemAtIndexPath:(NSIndexPath *)indexPath ; - -/** - * 获取模型数组 - * - * @param modelArrayBlock 返回模型数组Block - * @param completion 获取数据完成时 - */ -- (void)getItemsWithModelArray:(NSArray * (^) ( ))modelArrayBlock completion:( void(^) ( ))completion; - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseCollectionViewManger.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseCollectionViewManger.m deleted file mode 100755 index 0b38354..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseCollectionViewManger.m +++ /dev/null @@ -1,112 +0,0 @@ -// -// SMKBaseCollectionViewManger.m -// DevelopFramework -// -// Created by momo on 15/12/16. -// Copyright © 2015年 teason. All rights reserved. -// - -#import "SMKBaseCollectionViewManger.h" -#import "UICollectionViewCell+Extension.h" - -@interface SMKBaseCollectionViewManger () -/** items */ -@property (nonatomic, strong) NSArray *smk_dataArrayList; - -@end - -@implementation SMKBaseCollectionViewManger - -- (id)initWithCellIdentifier:(NSString *)aCellIdentifier - collectionViewLayout:(UICollectionViewLayout *)collectionViewLayout - cellItemSizeBlock:(CellItemSize)cellItemSize - cellItemMarginBlock:(CellItemMargin)cellItemMargin - didSelectBlock:(DidSelectCellBlock)didselectBlock -{ - self = [super init] ; - if (self) { - self.cellIdentifier = aCellIdentifier ; - self.collectionViewLayout = collectionViewLayout == nil ? [[UICollectionViewFlowLayout alloc]init] : collectionViewLayout; - self.cellItemSize = cellItemSize; - self.cellItemMargin = cellItemMargin; - self.didSelectCellBlock = didselectBlock ; - } - - return self ; -} - -- (void)itemSize:(CellItemSize)cellItemSize { - self.cellItemSize = cellItemSize; -} - -- (void)itemInset:(CellItemMargin)cellItemMargin { - self.cellItemMargin = cellItemMargin; -} - -- (id)itemAtIndexPath:(NSIndexPath *)indexPath -{ - return self.smk_dataArrayList[indexPath.item]; -} - -- (void)handleCollectionViewDatasourceAndDelegate:(UICollectionView *)collection -{ - collection.collectionViewLayout = self.collectionViewLayout; - collection.dataSource = self ; - collection.delegate = self ; -} - -- (void)getItemsWithModelArray:(NSArray *(^)())modelArrayBlock completion:(void (^)())completion { - if (modelArrayBlock) { - self.smk_dataArrayList = modelArrayBlock(); - if (completion) { - completion(); - } - } -} - -#pragma mark --UICollectionViewDelegateFlowLayout - -// 定义每个Item 的大小 -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath -{ - return self.cellItemSize(); -} - -// 定义每个UICollectionView 的 margin -- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section -{ - return self.cellItemMargin(); -} - -// 定义每个UICollectionView 纵向的间距 -- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { - return 0; -} - -#pragma mark --UICollectionViewDelegate && UICollectionViewDataSourse -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.smk_dataArrayList.count; -} -- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { - return 1; -} - -- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - id item = [self itemAtIndexPath:indexPath] ; - - [UICollectionViewCell registerCollect:collectionView nibIdentifier:self.cellIdentifier]; - UICollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:self.cellIdentifier forIndexPath:indexPath]; - - [cell configure:cell customObj:item indexPath:indexPath]; - return cell ; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - id item = [self itemAtIndexPath:indexPath] ; - self.didSelectCellBlock(indexPath,item) ; -} -- (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath { - return YES; -} - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.h deleted file mode 100755 index 0966362..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.h +++ /dev/null @@ -1,52 +0,0 @@ -// -// SMKBaseTableViewManger.h -// DevelopFramework -// -// Created by momo on 15/12/5. -// Copyright © 2015年 teason. All rights reserved. -// - -#import -#import "UITableView+TableDataDelegateAdditions.h" - -/** - * 选中UITableViewCell的Block - */ -typedef void (^DidSelectCellBlock)(NSIndexPath *indexPath, id item) ; - - // - - - - - -- - - - - - - - - - -- 创建类 - -- - - - - - - - -- - - - - -- -// - -@interface SMKBaseTableViewManger : NSObject - -/** cell的可重用标识符 <如需显示多种cell,需继承此类,重写显示cell的数据源方法> */ -@property (nonatomic, copy) NSArray *cellIdentifierArray ; - -/** 选中cell */ -@property (nonatomic, copy) DidSelectCellBlock didSelectCellBlock ; - -/** - * 初始化方法 - */ -- (id)initWithCellIdentifiers:(NSArray *)cellIdentifiersArray - didSelectBlock:(DidSelectCellBlock)didselectBlock ; - -/** - * 设置UITableView的Datasource和Delegate为self - */ -- (void)handleTableViewDatasourceAndDelegate:(UITableView *)table ; - -/** - * 获取UITableView中Item所在的indexPath - */ -- (id)itemAtIndexPath:(NSIndexPath *)indexPath ; - -/** - * 获取模型数组 - * - * @param modelArrayBlock 返回模型数组Block - * @param completion 获取数据完成时 - */ -- (void)getItemsWithModelArray:(NSArray * (^) ( ))modelArrayBlock completion:( void(^) ( ))completion; - - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.m deleted file mode 100755 index 17bfa3c..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.m +++ /dev/null @@ -1,107 +0,0 @@ -// -// SMKBaseTableViewManger.m -// DevelopFramework -// -// Created by momo on 15/12/5. -// Copyright © 2015年 teason. All rights reserved. -// - -#import "SMKBaseTableViewManger.h" -#import "UITableViewCell+Extension.h" -#import "UITableView+FDTemplateLayoutCell.h" - - -@interface SMKBaseTableViewManger () -/** items */ -@property (nonatomic, strong) NSArray *smk_dataArrayList; - -@end - -@implementation SMKBaseTableViewManger -- (NSArray *)smk_dataArrayList { - if (_smk_dataArrayList == nil) { - _smk_dataArrayList = [NSArray array]; - } - return _smk_dataArrayList; -} - -- (NSArray *)cellIdentifierArray { - if (_cellIdentifierArray == nil) { - _cellIdentifierArray = [NSArray array]; - } - return _cellIdentifierArray; -} - -- (id)initWithCellIdentifiers:(NSArray *)cellIdentifiersArray didSelectBlock:(DidSelectCellBlock)didselectBlock { - self = [super init] ; - if (self) { - self.cellIdentifierArray = cellIdentifiersArray ; - self.didSelectCellBlock = didselectBlock ; - } - - return self ; -} - -- (id)itemAtIndexPath:(NSIndexPath *)indexPath -{ - return self.smk_dataArrayList[indexPath.row]; -} - -- (void)handleTableViewDatasourceAndDelegate:(UITableView *)table -{ - - table.dataSource = self ; - table.delegate = self ; - - [UITableViewCell registerTable:table nibIdentifier:self.cellIdentifierArray[0]] ; - table.tableFooterView = [UIView new]; -} - -- (void)getItemsWithModelArray:(NSArray *(^)())modelArrayBlock completion:(void (^)())completion{ - if (modelArrayBlock) { - self.smk_dataArrayList = modelArrayBlock(); - if (completion) { - completion(); - } - } -} - -#pragma mark - UITableViewDataSource - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - return self.smk_dataArrayList.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - id item = [self itemAtIndexPath:indexPath] ; - - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:self.cellIdentifierArray[0] forIndexPath:indexPath] ; - - [cell configure:cell customObj:item indexPath:indexPath]; - // self.configureCellBlock(indexPath,item,cell) ; - return cell ; - -} - -#pragma mark - UITableViewDelegate -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath -{ - id item = [self itemAtIndexPath:indexPath] ; - __weak typeof(self) weakSelf = self; - - return [tableView fd_heightForCellWithIdentifier:weakSelf.cellIdentifierArray[0] cacheByIndexPath:indexPath configuration:^(UITableViewCell *cell) { - [cell configure:cell customObj:item indexPath:indexPath]; - }]; - -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - id item = [self itemAtIndexPath:indexPath] ; - self.didSelectCellBlock(indexPath,item) ; -} - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/.DS_Store b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 -@class SMKBaseCollectionViewManger; - -NS_ASSUME_NONNULL_BEGIN - -@interface UICollectionView (CollectionDataDelegateAdditions) - -@property (nullable,nonatomic,strong) SMKBaseCollectionViewManger *collectionHander; - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionView+CollectionDataDelegateAdditions.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionView+CollectionDataDelegateAdditions.m deleted file mode 100644 index de16857..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionView+CollectionDataDelegateAdditions.m +++ /dev/null @@ -1,30 +0,0 @@ -// -// UICollectionView+CollectionDataDelegateAdditions.m -// MVVMFramework -// -// Created by zzZ on 16/1/8. -// Copyright © 2016年 momo. All rights reserved. -// - -#import "UICollectionView+CollectionDataDelegateAdditions.h" -#import "SMKBaseCollectionViewManger.h" -#import - -@implementation UICollectionView (CollectionDataDelegateAdditions) - - -- (SMKBaseCollectionViewManger *)collectionHander -{ - return objc_getAssociatedObject(self, _cmd); -} -- (void)setCollectionHander:(SMKBaseCollectionViewManger *)collectionHander -{ - if (collectionHander) { - [collectionHander handleCollectionViewDatasourceAndDelegate:self]; - } - objc_setAssociatedObject(self, @selector(collectionHander), collectionHander, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - - -@end - diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.h deleted file mode 100755 index bcaa513..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// UITableViewCell+Extension.h -// DevelopFramework -// -// Created by momo on 15/12/16. -// Copyright © 2015年 teason. All rights reserved. -// - -#import - -@interface UICollectionViewCell (Extension) - -/** - * 从nib文件中根据重用标识符注册UICollectionViewcell - */ -+ (void)registerCollect:(UICollectionView *)table - nibIdentifier:(NSString *)identifier ; - -/** - * 配置UICollectionViewcell,设置UICollectionViewcell内容 - */ -- (void)configure:(UICollectionViewCell *)cell - customObj:(id)obj - indexPath:(NSIndexPath *)indexPath ; - -/** - * 获取自定义对象的cell高度 - */ -+ (CGFloat)getCellHeightWithCustomObj:(id)obj - indexPath:(NSIndexPath *)indexPath ; - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.m deleted file mode 100755 index 064d0a8..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.m +++ /dev/null @@ -1,47 +0,0 @@ -// -// UITableViewCell+Extension.m -// DevelopFramework -// -// Created by momo on 15/12/16. -// Copyright © 2015年 teason. All rights reserved. -// - -#import "UICollectionViewCell+Extension.h" - -@implementation UICollectionViewCell (Extension) - -#pragma mark -- -+ (UINib *)nibWithIdentifier:(NSString *)identifier -{ - return [UINib nibWithNibName:identifier bundle:nil]; -} - -#pragma mark - Public -+ (void)registerCollect:(UICollectionView *)collect - nibIdentifier:(NSString *)identifier -{ - [collect registerNib:[self nibWithIdentifier:identifier] forCellWithReuseIdentifier:identifier]; - -} - -#pragma mark -- -#pragma mark - Rewrite these func in SubClass ! -- (void)configure:(UICollectionViewCell *)cell - customObj:(id)obj - indexPath:(NSIndexPath *)indexPath -{ - // Rewrite this func in SubClass ! - -} - -+ (CGFloat)getCellHeightWithCustomObj:(id)obj - indexPath:(NSIndexPath *)indexPath -{ - // Rewrite this func in SubClass if necessary - if (!obj) { - return 0.0f ; // if obj is null . - } - return 44.0f ; // default cell height -} - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.h deleted file mode 100644 index 1c5ac62..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// UITableView+TableDataDelegateAdditions.h -// MVVMFramework -// -// Created by zzZ on 16/1/8. -// Copyright © 2016年 momo. All rights reserved. -// - -#import -@class SMKBaseTableViewManger; - -NS_ASSUME_NONNULL_BEGIN - -@interface UITableView (TableDataDelegateAdditions) - -@property (nullable,nonatomic,strong) SMKBaseTableViewManger *tableHander; - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.m deleted file mode 100644 index e7e46bc..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.m +++ /dev/null @@ -1,30 +0,0 @@ -// -// UITableView+TableDataDelegateAdditions.m -// MVVMFramework -// -// Created by zzZ on 16/1/8. -// Copyright © 2016年 momo. All rights reserved. -// - -#import "UITableView+TableDataDelegateAdditions.h" -#import "SMKBaseTableViewManger.H" -#import - -@implementation UITableView (TableDataDelegateAdditions) - -- (SMKBaseTableViewManger *)tableHander -{ - return objc_getAssociatedObject(self, _cmd); -} - -- (void)setTableHander:(SMKBaseTableViewManger *)tableHander -{ - if (tableHander) { - [tableHander handleTableViewDatasourceAndDelegate:self]; - } - objc_setAssociatedObject(self, @selector(tableHander), tableHander, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -@end - - diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.h deleted file mode 100755 index 1554817..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// UITableViewCell+Extension.h -// DevelopFramework -// -// Created by momo on 15/12/16. -// Copyright © 2015年 teason. All rights reserved. -// - -#import - -@interface UITableViewCell (Extension) - -/** - * 从nib文件中根据重用标识符注册UITableViewCell - */ -+ (void)registerTable:(UITableView *)table - nibIdentifier:(NSString *)identifier ; -/** - * 配置UITableViewCell,设置UITableViewCell内容 - */ -- (void)configure:(UITableViewCell *)cell - customObj:(id)obj - indexPath:(NSIndexPath *)indexPath ; -/** - * 获取自定义对象的cell高度 (已集成UITableView+FDTemplateLayoutCell,现在创建的cell自动计算高度) - */ -+ (CGFloat)getCellHeightWithCustomObj:(id)obj - indexPath:(NSIndexPath *)indexPath ; - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.m deleted file mode 100755 index 1be8997..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// UITableViewCell+Extension.m -// DevelopFramework -// -// Created by momo on 15/12/16. -// Copyright © 2015年 teason. All rights reserved. -// - -#import "UITableViewCell+Extension.h" - -@implementation UITableViewCell (Extension) - -#pragma mark -- -+ (UINib *)nibWithIdentifier:(NSString *)identifier -{ - return [UINib nibWithNibName:identifier bundle:nil]; -} - -#pragma mark - Public -+ (void)registerTable:(UITableView *)table - nibIdentifier:(NSString *)identifier -{ - [table registerNib:[self nibWithIdentifier:identifier] forCellReuseIdentifier:identifier] ; -} - -#pragma mark -- -#pragma mark - Rewrite these func in SubClass ! -- (void)configure:(UITableViewCell *)cell - customObj:(id)obj - indexPath:(NSIndexPath *)indexPath -{ - // Rewrite this func in SubClass ! - -} - -+ (CGFloat)getCellHeightWithCustomObj:(id)obj - indexPath:(NSIndexPath *)indexPath -{ - // Rewrite this func in SubClass if necessary - if (!obj) { - return 0.0f ; // if obj is null . - } - return 44.0f ; // default cell height -} - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.h deleted file mode 100644 index 9c8a3a1..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// UIView+Configure.h -// SUIMVVMDemo -// -// Created by yuantao on 16/2/22. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import - -@interface UIView (Configure) - -/** - * 根据obj配置UIView,设置UIView内容 - */ -- (void)configureViewWithCustomObj:(id)obj; - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.m deleted file mode 100644 index 9d04463..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.m +++ /dev/null @@ -1,21 +0,0 @@ -// -// UIView+Configure.m -// SUIMVVMDemo -// -// Created by yuantao on 16/2/22. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import "UIView+Configure.h" - -@implementation UIView (Configure) - -#pragma mark -- -#pragma mark - Rewrite these func in SubClass ! -- (void)configureViewWithCustomObj:(id)obj { - - // Rewrite this func in SubClass ! - -} - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.h deleted file mode 100644 index 4d0d38b..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// UIView+ViewDelegateAdditions.h -// SUIMVVMDemo -// -// Created by yuantao on 16/3/5. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import -#import "SMKViewProtocolDelegate.h" - -NS_ASSUME_NONNULL_BEGIN - -typedef void (^ViewEventsBlock)( ); - -@interface UIView (ViewDelegateAdditions) - -@property (nullable, nonatomic, weak) id delegate; - -@property (nonatomic, copy) ViewEventsBlock viewEventsBlock; -@end - -NS_ASSUME_NONNULL_END - diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.h deleted file mode 100644 index c25a8f2..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// UIViewController+ControllerAdditions.h -// SUIMVVMDemo -// -// Created by yuantao on 16/3/10. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import -#import "SMKViewControllerProtocolDelegate.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface UIViewController (ControllerAdditions) - -@property (nonatomic,strong) __kindof NSObject *smk_viewModel; -@property (nonatomic,strong) __kindof NSObject *smk_viewManger; - -@end -NS_ASSUME_NONNULL_END \ No newline at end of file diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.m deleted file mode 100644 index 658d937..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.m +++ /dev/null @@ -1,47 +0,0 @@ -// -// UIViewController+ControllerAdditions.m -// SUIMVVMDemo -// -// Created by yuantao on 16/3/10. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import "UIViewController+ControllerAdditions.h" -#import - -@implementation UIViewController (ControllerAdditions) - -- (NSObject *)smk_viewModel { - NSObject *curVM = objc_getAssociatedObject(self, @selector(smk_viewModel)); - if (curVM) return curVM; - if (![self respondsToSelector:@selector(smk_classOfViewModel)]) { - NSException *exp = [NSException exceptionWithName:@"not found smk_classOfViewModel" reason:@"you forgot to add smk_classOfViewModel() in VC" userInfo:nil]; - [exp raise]; - } - curVM = [[[self smk_classOfViewModel] alloc] init]; - self.smk_viewModel = curVM; - return curVM; -} - -- (void)setSmk_viewModel:(__kindof NSObject *)smk_viewModel { - objc_setAssociatedObject(self, @selector(smk_viewModel), smk_viewModel, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -- (NSObject *)smk_viewManger { - NSObject *curVM = objc_getAssociatedObject(self, @selector(smk_viewManger)); - if (curVM) return curVM; - if (![self respondsToSelector:@selector(smk_classOfViewManger)]) { - NSException *exp = [NSException exceptionWithName:@"not found smk_classOfViewManger" reason:@"you forgot to add smk_classOfViewManger() in VC" userInfo:nil]; - [exp raise]; - } - curVM = [[[self smk_classOfViewManger] alloc] init]; - self.smk_viewManger = curVM; - return curVM; -} - -- (void)setSmk_viewManger:(__kindof NSObject *)smk_viewManger { - objc_setAssociatedObject(self, @selector(smk_viewManger), smk_viewManger, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - - -@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Handler/.DS_Store b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Handler/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 - -@protocol SMKViewControllerProtocolDelegate -@optional - -- (Class)smk_classOfViewModel; - -- (Class)smk_classOfViewManger; - -@end - -#endif /* SMKViewControllerProtocolDelegate_h */ diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewModelProtocolDelegate.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewModelProtocolDelegate.h deleted file mode 100644 index 483d1eb..0000000 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewModelProtocolDelegate.h +++ /dev/null @@ -1,44 +0,0 @@ -// -// SMKViewModelProtocolDelegate.h -// SUIMVVMDemo -// -// Created by yuantao on 16/2/23. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#ifndef SMKViewModelProtocolDelegate_h -#define SMKViewModelProtocolDelegate_h -#import - -@protocol SMKViewModelProtocolDelegate - -@optional - -/** - * 返回指定viewModel的所引用的控制器 - */ -- (void)smk_viewModelWithViewController:(UIViewController *)viewController; - -/** - * 用来判断是否加载成功,方便外部根据不同需求处理 (外部使用) - */ -- (void)smk_viewModelWithGetDataSuccessHandler:(void (^)(NSArray *array))successHandler; - -/** - * 返回指定indexPath的item - */ -- (instancetype)smk_viewModelWithIndexPath:(NSIndexPath *)indexPath; - -/** - * 每组中显示多少行 (用于tableView) - */ -- (NSUInteger)smk_viewModelWithNumberOfRowsInSection:(NSUInteger)section; - -/** - * 每组中显示多少个 (用于collectionView) - */ -- (NSUInteger)smk_viewModelWithNumberOfItemsInSection:(NSUInteger)section; - -@end - -#endif /* SMKViewModelProtocolDelegate_h */ diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UICollectionViewCell+SMKConfigure.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UICollectionViewCell+SMKConfigure.h new file mode 100755 index 0000000..7f2fbb7 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UICollectionViewCell+SMKConfigure.h @@ -0,0 +1,46 @@ +// +// UICollectionViewCell+SMKConfigure.h +// DevelopFramework +// +// Created by momo on 15/12/16. +// Copyright © 2015年 teason. All rights reserved. +// + +#import +#import "SMKViewModelProtocol.h" + +@interface UICollectionViewCell (SMKConfigure) + +/** + * 从nib文件中根据重用标识符注册UICollectionViewcell + */ ++ (void)smk_registerCollect:(UICollectionView *)collect + nibIdentifier:(NSString *)identifier; + +/** + * 从class根据重用标识符注册UICollectionViewcell + */ ++ (void)smk_registerCollect:(UICollectionView *)collect + classIdentifier:(NSString *)identifier; + +/** + * 根据model配置UICollectionViewcell,设置UICollectionViewcell内容 + */ +- (void)smk_configure:(UICollectionViewCell *)cell + model:(id)model + indexPath:(NSIndexPath *)indexPath; + +/** + * 根据viewModel配置UICollectionViewcell,设置UICollectionViewcell内容 + */ +- (void)smk_configure:(UICollectionViewCell *)cell + viewModel:(id)viewModel + indexPath:(NSIndexPath *)indexPath; + +/** + * 获取自定义对象的cell高度 + */ ++ (CGFloat)smk_getCellHeightWithModel:(id)model + indexPath:(NSIndexPath *)indexPath; + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UICollectionViewCell+SMKConfigure.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UICollectionViewCell+SMKConfigure.m new file mode 100755 index 0000000..9851109 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UICollectionViewCell+SMKConfigure.m @@ -0,0 +1,51 @@ +// +// UICollectionViewCell+SMKConfigure.m +// DevelopFramework +// +// Created by momo on 15/12/16. +// Copyright © 2015年 teason. All rights reserved. +// + +#import "UICollectionViewCell+SMKConfigure.h" + +@implementation UICollectionViewCell (SMKConfigure) + +#pragma mark -- ++ (UINib *)nibWithIdentifier:(NSString *)identifier +{ + return [UINib nibWithNibName:identifier bundle:nil]; +} + +#pragma mark - Public ++ (void)smk_registerCollect:(UICollectionView *)collect + nibIdentifier:(NSString *)identifier +{ + [collect registerNib:[self nibWithIdentifier:identifier] forCellWithReuseIdentifier:identifier]; +} + ++ (void)smk_registerCollect:(UICollectionView *)collect classIdentifier:(NSString *)identifier { + [collect registerClass:[self class] forCellWithReuseIdentifier:identifier]; +} + +#pragma mark -- +#pragma mark - Rewrite these func in SubClass ! +- (void)smk_configure:(UICollectionViewCell *)cell model:(id)model indexPath:(NSIndexPath *)indexPath +{ + // Rewrite this func in SubClass ! +} + +- (void)smk_configure:(UICollectionViewCell *)cell viewModel:(id)viewModel indexPath:(NSIndexPath *)indexPath +{ + // Rewrite this func in SubClass ! +} + ++ (CGFloat)smk_getCellHeightWithModel:(id)model indexPath:(NSIndexPath *)indexPath +{ + // Rewrite this func in SubClass if necessary + if (!model) { + return 0.0f ; // if obj is null . + } + return 44.0f ; // default cell height +} + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UITableViewCell+SMKConfigure.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UITableViewCell+SMKConfigure.h new file mode 100755 index 0000000..f0fc1c4 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UITableViewCell+SMKConfigure.h @@ -0,0 +1,46 @@ +// +// UITableViewCell+SMKConfigure.h +// DevelopFramework +// +// Created by momo on 15/12/16. +// Copyright © 2015年 teason. All rights reserved. +// + +#import +#import "SMKViewModelProtocol.h" + +@interface UITableViewCell (SMKConfigure) + +/** + * 从nib文件中根据重用标识符注册UITableViewCell + */ ++ (void)smk_registerTable:(UITableView *)table + nibIdentifier:(NSString *)identifier; + +/** + * 从class中根据重用标识符注册UITableViewCell + */ ++ (void)smk_registerTable:(UITableView *)table + classIdentifier:(NSString *)identifier; + +/** + * 根据model配置UITableViewCell,设置UITableViewCell内容 + */ +- (void)smk_configure:(UITableViewCell *)cell + model:(id)model + indexPath:(NSIndexPath *)indexPath; + +/** + * 根据viewModel配置UITableViewCell,设置UITableViewCell内容 + */ +- (void)smk_configure:(UITableViewCell *)cell + viewModel:(id)viewModel + indexPath:(NSIndexPath *)indexPath; + +/** + * 获取自定义对象的cell高度 (已集成UITableView+FDTemplateLayoutCell,现在创建的cell自动计算高度) + */ ++ (CGFloat)smk_getCellHeightWithModel:(id)model + indexPath:(NSIndexPath *)indexPath ; + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UITableViewCell+SMKConfigure.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UITableViewCell+SMKConfigure.m new file mode 100755 index 0000000..2a8c3ab --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UITableViewCell+SMKConfigure.m @@ -0,0 +1,51 @@ +// +// UITableViewCell+SMKConfigure.m +// DevelopFramework +// +// Created by momo on 15/12/16. +// Copyright © 2015年 teason. All rights reserved. +// + +#import "UITableViewCell+SMKConfigure.h" + +@implementation UITableViewCell (SMKConfigure) + +#pragma mark -- private ++ (UINib *)nibWithIdentifier:(NSString *)identifier +{ + return [UINib nibWithNibName:identifier bundle:nil]; +} + +#pragma mark - public ++ (void)smk_registerTable:(UITableView *)table + nibIdentifier:(NSString *)identifier +{ + [table registerNib:[self nibWithIdentifier:identifier] forCellReuseIdentifier:identifier]; +} ++ (void)smk_registerTable:(UITableView *)table + classIdentifier:(NSString *)identifier +{ + [table registerClass:[self class] forCellReuseIdentifier:identifier]; +} +#pragma mark -- +#pragma mark - Rewrite these func in SubClass ! +- (void)smk_configure:(UITableViewCell *)cell model:(id)model indexPath:(NSIndexPath *)indexPath +{ + // Rewrite this func in SubClass ! +} + +- (void)smk_configure:(UITableViewCell *)cell viewModel:(id)viewModel indexPath:(NSIndexPath *)indexPath +{ + // Rewrite this func in SubClass ! +} + ++ (CGFloat)smk_getCellHeightWithModel:(id)model indexPath:(NSIndexPath *)indexPath +{ + // Rewrite this func in SubClass if necessary + if (!model) { + return 0.0f ; // if obj is null . + } + return 44.0f ; // default cell height +} + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UIView+SMKConfigure.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UIView+SMKConfigure.h new file mode 100644 index 0000000..0713b65 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UIView+SMKConfigure.h @@ -0,0 +1,24 @@ +// +// UIView+SMKConfigure.h +// SUIMVVMDemo +// +// Created by yuantao on 16/2/22. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#import +#import "SMKViewModelProtocol.h" + +@interface UIView (SMKConfigure) + +/** + * 根据model配置UIView,设置UIView内容 + */ +- (void)smk_configureViewWithModel:(id)model; + +/** + * 根据viewModel配置UIView,设置UIView内容 + */ +- (void)smk_configureViewWithViewModel:(id)viewModel; + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UIView+SMKConfigure.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UIView+SMKConfigure.m new file mode 100644 index 0000000..2cf9b0e --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UIView+SMKConfigure.m @@ -0,0 +1,24 @@ +// +// UIView+SMKConfigure.m +// SUIMVVMDemo +// +// Created by yuantao on 16/2/22. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#import "UIView+SMKConfigure.h" + +@implementation UIView (SMKConfigure) + +#pragma mark -- +#pragma mark - Rewrite these func in SubClass ! + +- (void)smk_configureViewWithModel:(id)model { + // Rewrite this func in SubClass ! +} + +- (void)smk_configureViewWithViewModel:(id)viewModel { + // Rewrite this func in SubClass ! +} + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UIView+SMKEvents.h b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UIView+SMKEvents.h new file mode 100644 index 0000000..603d222 --- /dev/null +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UIView+SMKEvents.h @@ -0,0 +1,34 @@ +// +// UIView+SMKEvents.h +// SUIMVVMDemo +// +// Created by yuantao on 16/3/5. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#import +#import "SMKViewProtocol.h" +#import "SMKViewMangerProtocol.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^ViewEventsBlock)( ); + +@interface UIView (SMKEvents) + +/** + * delegate 传递事件 + */ +@property (nullable, nonatomic, weak) id delegate; + +/** + * block 传递事件 + */ +@property (nonatomic, copy) ViewEventsBlock viewEventsBlock; + +- (void)smk_viewWithViewManger:(id)viewManger; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.m b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UIView+SMKEvents.m similarity index 65% rename from SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.m rename to SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UIView+SMKEvents.m index d6aaf9a..2f2470e 100644 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.m +++ b/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/UIView+SMKEvents.m @@ -1,21 +1,21 @@ // -// UIView+ViewDelegateAdditions.m +// UIView+SMKEvents.m // SUIMVVMDemo // // Created by yuantao on 16/3/5. // Copyright © 2016年 lovemo. All rights reserved. // -#import "UIView+ViewDelegateAdditions.h" +#import "UIView+SMKEvents.h" #import -@implementation UIView (ViewDelegateAdditions) +@implementation UIView (SMKEvents) -- (id)delegate { +- (id)delegate { return objc_getAssociatedObject(self, _cmd); } -- (void)setDelegate:(id)delegate { +- (void)setDelegate:(id)delegate { objc_setAssociatedObject(self, @selector(delegate), delegate, OBJC_ASSOCIATION_ASSIGN); } @@ -27,4 +27,10 @@ - (void)setViewEventsBlock:(ViewEventsBlock)viewEventsBlock { objc_setAssociatedObject(self, @selector(viewEventsBlock), viewEventsBlock, OBJC_ASSOCIATION_COPY); } +- (void)smk_viewWithViewManger:(id)viewManger { + if (viewManger) { + self.delegate = viewManger; + } +} + @end diff --git a/SUIMVVMKit.podspec b/SUIMVVMKit.podspec index 682166b..976ccc1 100644 --- a/SUIMVVMKit.podspec +++ b/SUIMVVMKit.podspec @@ -1,13 +1,13 @@ Pod::Spec.new do |s| s.name = 'SUIMVVMKit' -s.version = '0.3.8' +s.version = '0.3.9' s.summary = 'SUIMVVMKit is a MVVM frameWork easy to develop iOS' s.homepage = 'https://github.com/lovemo/MVVMFramework' s.platform = :ios, '7.0' s.license = 'MIT' s.author = { 'lovemo' => 'lovemomoyulin@qq.com' } -s.source = { :git => 'https://github.com/lovemo/MVVMFramework.git',:tag => '0.3.8' } +s.source = { :git => 'https://github.com/lovemo/MVVMFramework.git',:tag => '0.3.9' } s.requires_arc = true s.public_header_files = 'SUIMVVMKit/**/*.h' s.source_files = 'SUIMVVMKit/SUIMVVMKit.h' @@ -17,8 +17,7 @@ s.subspec 'SUIMVVMKit' do |ss| ss.requires_arc = true ss.library = 'sqlite3' ss.dependency 'AFNetworking' -ss.dependency 'MJRefresh' -ss.dependency 'SUIMVVMNetwork' +ss.dependency 'FMDB' ss.dependency 'SUIUtils' ss.source_files = 'SUIMVVMKit/SUIMVVMKit/**/*' ss.public_header_files = 'SUIMVVMKit/SUIMVVMKit/**/*.h' diff --git a/SUIMVVMKit/.DS_Store b/SUIMVVMKit/.DS_Store index 6c7998c6cca08c851a39dea45f9652fdfc943d1d..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 100644 GIT binary patch delta 70 zcmZoMXfc=|#>AjHu~2NHo+1YW5HK<@2yDK{XvVhr0b>>8W_AvK4xj>{$am(+{342+ UKzW7)kiy9(Jj$D6L{=~Z06T*Zn*aa+ delta 278 zcmZoMXfc=|#>B`mF;Q%yo}wr#0|Nsi1A_nqLl_YHGI%p&GL%eATwV{7;9>}72xagD z3L{D8q#Fh&=jRpxJhro{yr#93SxT$GoS wpO+4_l5u0AIoo6d5thx|9NZj0UvEtO&ODi4M3I#VD625pP(*mMhsYjg0EoFa-~a#s diff --git a/SUIMVVMKit/NSObject+SMKProperties.h b/SUIMVVMKit/NSObject+SMKProperties.h new file mode 100755 index 0000000..4876e51 --- /dev/null +++ b/SUIMVVMKit/NSObject+SMKProperties.h @@ -0,0 +1,18 @@ +// +// NSObject+SMKProperties.h +// SMKMVVM +// +// Created by Mac on 16/4/7. +// Copyright © 2016年 momo. All rights reserved. +// + +#import + +@interface NSObject (SMKProperties) + +/** + * 获取一个对象的所有属性 + */ +- (nullable NSDictionary *)smk_allProperties; + +@end diff --git a/SUIMVVMKit/NSObject+SMKProperties.m b/SUIMVVMKit/NSObject+SMKProperties.m new file mode 100755 index 0000000..c02f835 --- /dev/null +++ b/SUIMVVMKit/NSObject+SMKProperties.m @@ -0,0 +1,39 @@ +// +// NSObject+SMKProperties.m +// SMKMVVM +// +// Created by Mac on 16/4/7. +// Copyright © 2016年 momo. All rights reserved. +// + +#import "NSObject+SMKProperties.h" +#import + +@implementation NSObject (SMKProperties) + +- (nullable NSDictionary *)smk_allProperties +{ + unsigned int count = 0; + + objc_property_t *properties = class_copyPropertyList([self class], &count); + NSMutableDictionary *resultDict = [@{} mutableCopy]; + + for (NSUInteger i = 0; i < count; i ++) { + + const char *propertyName = property_getName(properties[i]); + NSString *name = [NSString stringWithUTF8String:propertyName]; + id propertyValue = [self valueForKey:name]; + + if (propertyValue) { + resultDict[name] = propertyValue; + } else { + resultDict[name] = @"字典的key对应的value不能为nil"; + } + } + + free(properties); + + return resultDict; +} + +@end diff --git a/SUIMVVMKit/NSObject+SMKRequest.h b/SUIMVVMKit/NSObject+SMKRequest.h new file mode 100644 index 0000000..acd9eea --- /dev/null +++ b/SUIMVVMKit/NSObject+SMKRequest.h @@ -0,0 +1,56 @@ +// +// NSObject+SMKRequest.h +// SMKMVVM +// +// Created by yuantao on 16/4/7. +// Copyright © 2016年 momo. All rights reserved. +// + +#import + +typedef enum : NSUInteger { + /** GET */ + SMKRequestMethodGET, + /** POST */ + SMKRequestMethodPOST, + /** UPLOAD */ + SMKRequestMethodUPLOAD, + /** DOWNLOAD */ + SMKRequestMethodDOWNLOAD + +} SMKRequestMethod; + + +@class SMKRequestFileConfig; +@interface NSObject (SMKRequest) + +/** + * scheme (eg: http, https, ftp) + */ +@property (nonatomic, copy, nonnull) NSString *smk_scheme; +/** + * host + */ +@property (nonatomic, copy, nonnull) NSString *smk_host; +/** + * path + */ +@property (nonatomic, copy, nonnull) NSString *smk_path; +/** + * method + */ +@property (nonatomic, assign) SMKRequestMethod smk_method; +/** + * url + */ +@property (nonatomic, copy, nonnull) NSString *smk_url; +/** + * parameters + */ +@property (nonatomic, retain, nonnull) id smk_params; +/** + * fileConfig + */ +@property (nonatomic, retain, nonnull) SMKRequestFileConfig *smk_fileConfig; + +@end diff --git a/SUIMVVMKit/NSObject+SMKRequest.m b/SUIMVVMKit/NSObject+SMKRequest.m new file mode 100644 index 0000000..28d833e --- /dev/null +++ b/SUIMVVMKit/NSObject+SMKRequest.m @@ -0,0 +1,84 @@ +// +// NSObject+SMKRequest.m +// SMKMVVM +// +// Created by yuantao on 16/4/7. +// Copyright © 2016年 momo. All rights reserved. +// + +#import "NSObject+SMKRequest.h" +#import + +@implementation NSObject (SMKRequest) + +/** + * scheme (eg: http, https, ftp) + */ +- (NSString *)smk_scheme { + return objc_getAssociatedObject(self, @selector(smk_scheme)); +} +- (void)setSmk_scheme:(NSString *)smk_scheme { + objc_setAssociatedObject(self, @selector(smk_scheme), smk_scheme, OBJC_ASSOCIATION_COPY_NONATOMIC); +} + +/** + * host + */ +- (NSString *)smk_host { + return objc_getAssociatedObject(self, @selector(smk_host)); +} +- (void)setSmk_host:(NSString *)smk_host { + objc_setAssociatedObject(self, @selector(smk_host), smk_host, OBJC_ASSOCIATION_COPY_NONATOMIC); +} + +/** + * path + */ +- (NSString *)smk_path { + return objc_getAssociatedObject(self, @selector(smk_path)); +} +- (void)setSmk_path:(NSString *)smk_path { + objc_setAssociatedObject(self, @selector(smk_path), smk_path, OBJC_ASSOCIATION_COPY_NONATOMIC); +} + +/** + * method + */ +- (SMKRequestMethod)smk_method { + return [objc_getAssociatedObject(self, @selector(smk_method)) integerValue]; +} +- (void)setSmk_method:(SMKRequestMethod)smk_method { + objc_setAssociatedObject(self, @selector(smk_method), @(smk_method), OBJC_ASSOCIATION_ASSIGN); +} + +/** + * url + */ +- (NSString *)smk_url { + return objc_getAssociatedObject(self, @selector(smk_url)); +} +- (void)setSmk_url:(NSString *)smk_url { + objc_setAssociatedObject(self, @selector(smk_url), smk_url, OBJC_ASSOCIATION_COPY_NONATOMIC); +} + +/** + * parameters + */ +- (id)smk_params { + return objc_getAssociatedObject(self, @selector(smk_params)); +} +- (void)setSmk_params:(id)smk_params { + objc_setAssociatedObject(self, @selector(smk_params), smk_params, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +/** + * fileConfig + */ +- (SMKRequestFileConfig *)smk_fileConfig { + return objc_getAssociatedObject(self, @selector(smk_fileConfig)); +} +- (void)setSmk_fileConfig:(SMKRequestFileConfig *)smk_fileConfig { + objc_setAssociatedObject(self, @selector(smk_fileConfig), smk_fileConfig, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end diff --git a/SUIMVVMKit/SMKAction.h b/SUIMVVMKit/SMKAction.h new file mode 100644 index 0000000..6a29998 --- /dev/null +++ b/SUIMVVMKit/SMKAction.h @@ -0,0 +1,114 @@ +// +// SMKAction.h +// SMKMVVM +// +// Created by yuantao on 16/4/7. +// Copyright © 2016年 momo. All rights reserved. +// + +#import +#import "SMKRequestProtocol.h" + +/** + * 请求成功block + */ +typedef void (^successBlock)(id responseObject); +/** + * 请求失败block + */ +typedef void (^failureBlock) (NSError *error); +/** + * 请求响应block + */ +typedef void (^responseBlock)(id dataObj, NSError *error); +/** + * 监听进度响应block + */ +typedef void (^progressBlock)(NSProgress * progress); + + + +@class SMKActionFileConfig; +@interface SMKAction : NSObject + +/** + * 请求超时时间 + */ +@property (nonatomic, assign) NSTimeInterval timeoutInterval; +/** + reachable + */ +@property (readonly, nonatomic, assign, getter = isReachable) BOOL reachable; +/** + reachableViaWWAN + */ +@property (readonly, nonatomic, assign, getter = isReachableViaWWAN) BOOL reachableViaWWAN; +/** + reachableViaWiFi + */ +@property (readonly, nonatomic, assign, getter = isReachableViaWiFi) BOOL reachableViaWiFi; + + +/** + * 单例 + */ ++ (instancetype)sharedAction; + +/** + * 取消所有操作 + */ +- (void)cancelAllOperations; + +/** + * 发送请求(在外部配置request) + */ +- (NSURLSessionTask *)sendRequest: + (id)request + progress:(progressBlock)progress + success:(successBlock)success + failure:(failureBlock)failure; + +/** + * 发送请求Block(在block内部配置request) + */ +- (NSURLSessionTask *)sendRequestBlock: + (id (^)())requestBlock + progress:(progressBlock)progress + success:(successBlock)success + failure:(failureBlock)failure; + + + +@end + + +/** + * 用来封装上文件数据的模型类 + */ +@interface SMKRequestFileConfig : NSObject + +/** + * 文件数据 + */ +@property (nonatomic, strong) NSData *fileData; +/** + * 服务器接收参数名 + */ +@property (nonatomic, copy) NSString *name; +/** + * 文件名 + */ +@property (nonatomic, copy) NSString *fileName; +/** + * 文件类型 + */ +@property (nonatomic, copy) NSString *mimeType; + ++ (instancetype)fileConfigWithfileData:(NSData *)fileData name:(NSString *)name fileName:(NSString *)fileName mimeType:(NSString *)mimeType; + +- (instancetype)initWithfileData:(NSData *)fileData name:(NSString *)name fileName:(NSString *)fileName mimeType:(NSString *)mimeType; + +@end + + + diff --git a/SUIMVVMKit/SMKAction.m b/SUIMVVMKit/SMKAction.m new file mode 100644 index 0000000..3aa502e --- /dev/null +++ b/SUIMVVMKit/SMKAction.m @@ -0,0 +1,234 @@ +// +// SMKAction.m +// SMKMVVM +// +// Created by yuantao on 16/4/7. +// Copyright © 2016年 momo. All rights reserved. +// + +#import "SMKAction.h" +#import "AFNetworking.h" + + +static NSString * const SMKRequestUrlPath = @"SMKRequestUrlPath"; +static NSString * const SMKRequestParameters = @"SMKRequestParameters"; + + +@interface SMKAction () + +@property (strong, nonatomic) AFHTTPSessionManager *sessionManager; + +@end + +@implementation SMKAction + +static id _instace; + ++ (id)allocWithZone:(struct _NSZone *)zone +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instace = [super allocWithZone:zone]; + }); + return _instace; +} + ++ (instancetype)sharedAction +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instace = [[self alloc] init]; + }); + return _instace; +} + +- (id)copyWithZone:(NSZone *)zone +{ + return _instace; +} + +- (AFHTTPSessionManager *)sessionManager { + if (_sessionManager == nil) { + _sessionManager = [AFHTTPSessionManager manager]; + _sessionManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", @"text/plain",nil]; + _sessionManager.requestSerializer.timeoutInterval = (!self.timeoutInterval ?: self.timeoutInterval); + } + return _sessionManager; +} + +- (NSURLSessionTask *)sendRequest:(id)request progress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure { + if ([request respondsToSelector:@selector(smk_requestConfigures)]) { + [request smk_requestConfigures]; + } + + NSObject *requestObject = (NSObject *)request; + NSURLSessionTask *sessionDataTask = nil; + + switch (requestObject.smk_method) { + + case SMKRequestMethodGET: + sessionDataTask = [self get:request progress:progress success:success failure:failure]; + break; + + case SMKRequestMethodPOST: + sessionDataTask = [self post:request progress:progress success:success failure:failure]; + break; + + case SMKRequestMethodUPLOAD: + sessionDataTask = [self upload:request progress:progress success:success failure:failure]; + break; + + case SMKRequestMethodDOWNLOAD: + sessionDataTask = [self download:request progress:progress success:success failure:failure]; + break; + default: + break; + } + + return sessionDataTask; +} + +- (NSURLSessionTask *)sendRequestBlock:(id (^)())requestBlock progress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure { + if (requestBlock) return [self sendRequest:requestBlock() progress:progress success:success failure:failure]; + return nil; +} + +- (NSURLSessionDataTask *)get:(id)request progress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure { + + NSDictionary *requestDictionary = [self requestObject:request]; + NSString *urlPath = requestDictionary[SMKRequestUrlPath]; + NSDictionary *parameters = requestDictionary[SMKRequestParameters]; + + return [self.sessionManager GET:urlPath parameters:parameters progress:^(NSProgress * _Nonnull downloadProgress) { + if (progress) { + if (downloadProgress) progress(downloadProgress); + } + } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { + if (success) { + if (responseObject) success(responseObject); + } + } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { + if (failure) { + if (error) failure(error); + } + }]; +} + +- (NSURLSessionDataTask *)post:(id)request progress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure { + NSDictionary *requestDictionary = [self requestObject:request]; + NSString *urlPath = requestDictionary[SMKRequestUrlPath]; + NSDictionary *parameters = requestDictionary[SMKRequestParameters]; + + return [self.sessionManager POST:urlPath parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) { + if (progress) { + if (uploadProgress) progress(uploadProgress); + } + } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { + if (success) { + if (responseObject) success(responseObject); + } + } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { + if (failure) { + if (error) failure(error); + } + }]; +} + +- (NSURLSessionDownloadTask *)download:(id)request progress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure { + + NSDictionary *requestDictionary = [self requestObject:request]; + NSString *urlPath = requestDictionary[SMKRequestUrlPath]; + NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; + AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:sessionConfiguration]; + NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:urlPath]]; + + NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:req progress:^(NSProgress * _Nonnull downloadProgress) { + if (progress) { + if (downloadProgress) progress(downloadProgress); + } + } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) { + NSURL *documentUrl = [[NSFileManager defaultManager] URLForDirectory :NSCachesDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; + + return [documentUrl URLByAppendingPathComponent:[response suggestedFilename]]; + } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) { + if (failure) { + if (error) failure(error); + } + if (success) { + if (response) success(response); + } + }]; + + [downloadTask resume]; + return downloadTask; +} + +- (NSURLSessionDataTask *)upload:(id)request progress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure { + + NSDictionary *requestDictionary = [self requestObject:request]; + NSString *urlPath = requestDictionary[SMKRequestUrlPath]; + NSDictionary *parameters = requestDictionary[SMKRequestParameters]; + + NSObject *requestObject = (NSObject *)request; + + return [self.sessionManager POST:urlPath parameters:parameters constructingBodyWithBlock:^(id _Nonnull formData) { + [formData appendPartWithFileData:requestObject.smk_fileConfig.fileData name:requestObject.smk_fileConfig.name fileName:requestObject.smk_fileConfig.fileName mimeType:requestObject.smk_fileConfig.mimeType]; + } progress:^(NSProgress * _Nonnull uploadProgress) { + if (progress) { + if (uploadProgress) progress(uploadProgress); + } + } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { + if (success) { + if (responseObject) success(responseObject); + } + } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { + if (failure) { + if (error) failure(error); + } + }]; + +} + +- (NSDictionary *)requestObject:(id)request { + + NSObject *requestObject = (NSObject *)request; + + // urlPath + NSString *urlPath = nil; + if (requestObject.smk_url.length) { + urlPath = requestObject.smk_url; + } else { + urlPath = [NSString stringWithFormat:@"%@://%@%@",requestObject.smk_scheme, requestObject.smk_host, requestObject.smk_path]; + } + + // parameters + id parameters = nil; + if ([request respondsToSelector:@selector(smk_requestParameters)]) { + parameters = [request smk_requestParameters]; + } else if ([request respondsToSelector:@selector(setSmk_params:)]) { + parameters = requestObject.smk_params; + } + + return @{ + SMKRequestUrlPath : urlPath, + SMKRequestParameters : parameters ? : @"" + }; +} + +- (void)cancelAllOperations { + [self.sessionManager.operationQueue cancelAllOperations]; +} + +- (BOOL)isReachable { + return [AFNetworkReachabilityManager sharedManager].isReachable; +} + +- (BOOL)isReachableViaWWAN { + return [AFNetworkReachabilityManager sharedManager].isReachableViaWWAN; +} + +- (BOOL)isReachableViaWiFi { + return [AFNetworkReachabilityManager sharedManager].isReachableViaWiFi; +} + +@end diff --git a/SUIMVVMKit/SUIMVVMKit/Constant/SMKConstant.h b/SUIMVVMKit/SMKConstant.h similarity index 100% rename from SUIMVVMKit/SUIMVVMKit/Constant/SMKConstant.h rename to SUIMVVMKit/SMKConstant.h diff --git a/SUIMVVMKit/SMKExtendPublic.h b/SUIMVVMKit/SMKExtendPublic.h new file mode 100644 index 0000000..b78dc21 --- /dev/null +++ b/SUIMVVMKit/SMKExtendPublic.h @@ -0,0 +1,19 @@ +// +// SMKExtend.h +// SUIMVVMDemo +// +// Created by yuantao on 16/2/22. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#ifndef SMKExtendPublic_h +#define SMKExtendPublic_h + +#import "NSObject+SMKProperties.h" +#import "NSObject+SMKRequest.h" +#import "UICollectionViewCell+SMKConfigure.h" +#import "UITableViewCell+SMKConfigure.h" +#import "UIView+SMKConfigure.h" +#import "UIView+SMKEvents.h" + +#endif /* SMKExtendPublic_h */ diff --git a/SUIMVVMKit/SMKRequestProtocol.h b/SUIMVVMKit/SMKRequestProtocol.h new file mode 100644 index 0000000..a1050b2 --- /dev/null +++ b/SUIMVVMKit/SMKRequestProtocol.h @@ -0,0 +1,27 @@ +// +// SMKRequestProtocol.h +// SMKMVVM +// +// Created by yuantao on 16/4/7. +// Copyright © 2016年 momo. All rights reserved. +// + +#import + +@protocol SMKRequestProtocol + +@optional + +/** + * 配置request请求参数 + * + * @return NSDictionary 或者 自定义参数模型 + */ +- (id)smk_requestParameters; + +/** + * 配置request的路径、请求参数等 + */ +- (void)smk_requestConfigures; + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Constant/SMKSingleton.h b/SUIMVVMKit/SMKSingleton.h similarity index 100% rename from SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Constant/SMKSingleton.h rename to SUIMVVMKit/SMKSingleton.h diff --git a/SUIMVVMKit/SMKStore.h b/SUIMVVMKit/SMKStore.h new file mode 100644 index 0000000..f303113 --- /dev/null +++ b/SUIMVVMKit/SMKStore.h @@ -0,0 +1,86 @@ +// +// SMKKeyValueStore.h +// Ape +// +// Created by TangQiao on 12-11-6. +// Copyright (c) 2012年 TangQiao. All rights reserved. +// + +#import + + +@interface SMKStoreItem : NSObject + +@property (strong, nonatomic) NSString *smk_itemId; +@property (strong, nonatomic) id smk_itemObject; +@property (strong, nonatomic) NSDate *smk_createdTime; + +@end + + +@interface SMKStore : NSObject + +/** + * 根据dbName初始化数据库 + */ +- (id)initDBWithName:(NSString *)dbName; +/** + * 根据dbPath初始化数据库 + */ +- (id)initWithDBWithPath:(NSString *)dbPath; +/** + * 根据tableName创建数据表 + */ +- (void)smk_createTableWithName:(NSString *)tableName; +/** + * 清空数据表 + */ +- (void)smk_clearTable:(NSString *)tableName; +/** + * tableName是否存在 + */ +- (BOOL)smk_isExistTableWithName:(NSString *)tableName; +/** + * 删除表 + */ +- (BOOL)smk_deleteTable:(NSString *)tableName; +/** + * 删除数据库 + */ +- (void)smk_deleteDatabseWithDBName:(NSString *)DBName; +/** + * 获得数据库存储路径 + */ +- (NSString *)smk_getDBPath; +/** + * 关闭数据库 + */ +- (void)smk_close; + +///************************ Put&Get methods ***************************************** + +- (void)smk_putObject:(id)object withId:(NSString *)objectId intoTable:(NSString *)tableName; + +- (id)smk_getObjectById:(NSString *)objectId fromTable:(NSString *)tableName; + +- (SMKStoreItem *)smk_getSMKStoreItemById:(NSString *)objectId fromTable:(NSString *)tableName; + +- (void)smk_putString:(NSString *)string withId:(NSString *)stringId intoTable:(NSString *)tableName; + +- (NSString *)smk_getStringById:(NSString *)stringId fromTable:(NSString *)tableName; + +- (void)smk_putNumber:(NSNumber *)number withId:(NSString *)numberId intoTable:(NSString *)tableName; + +- (NSNumber *)smk_getNumberById:(NSString *)numberId fromTable:(NSString *)tableName; + +- (NSArray *)smk_getAllItemsFromTable:(NSString *)tableName; + +- (void)smk_deleteObjectById:(NSString *)objectId fromTable:(NSString *)tableName; + +- (void)smk_deleteObjectsByIdArray:(NSArray *)objectIdArray fromTable:(NSString *)tableName; + +- (void)smk_deleteObjectsByIdPrefix:(NSString *)objectIdPrefix fromTable:(NSString *)tableName; + +- (NSArray *)smk_getItemsFromTable:(NSString *)tableName withRange:(NSRange)range; + +@end diff --git a/SUIMVVMKit/SMKStore.m b/SUIMVVMKit/SMKStore.m new file mode 100644 index 0000000..c884332 --- /dev/null +++ b/SUIMVVMKit/SMKStore.m @@ -0,0 +1,428 @@ +// +// SMKStore.m +// Ape +// +// Created by TangQiao on 12-11-6. +// Copyright (c) 2012年 TangQiao. All rights reserved. +// + +#import "SMKStore.h" +#import "FMDatabase.h" +#import "FMDatabaseQueue.h" + +#ifdef DEBUG +#define debugLog(...) NSLog(__VA_ARGS__) +#define debugMethod() NSLog(@"%s", __func__) +#define debugError() NSLog(@"Error at %s Line:%d", __func__, __LINE__) +#else +#define debugLog(...) +#define debugMethod() +#define debugError() +#endif + +#define PATH_OF_CACHES [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0] + +@implementation SMKStoreItem + +- (NSString *)description { + return [NSString stringWithFormat:@"id=%@, value=%@, timeStamp=%@", self.smk_itemId, self.smk_itemObject, self.smk_createdTime]; +} + +@end + +@interface SMKStore() + +@property (strong, nonatomic) FMDatabaseQueue * dbQueue; +@property (nonatomic, copy) NSString *dbPath; + +@end + +@implementation SMKStore + +static NSString *const DEFAULT_DB_NAME = @"database.sqlite"; + +static NSString *const CREATE_TABLE_SQL = +@"CREATE TABLE IF NOT EXISTS %@ ( \ +id TEXT NOT NULL, \ +json TEXT NOT NULL, \ +createdTime TEXT NOT NULL, \ +PRIMARY KEY(id)) \ +"; + +static NSString *const UPDATE_ITEM_SQL = @"REPLACE INTO %@ (id, json, createdTime) values (?, ?, ?)"; + +static NSString *const QUERY_ITEM_SQL = @"SELECT json, createdTime from %@ where id = ? Limit 1"; + +static NSString *const SELECT_ALL_SQL = @"SELECT * from %@"; + +static NSString *const CLEAR_ALL_SQL = @"DELETE from %@"; + +static NSString *const DELETE_ITEM_SQL = @"DELETE from %@ where id = ?"; + +static NSString *const DELETE_ITEMS_SQL = @"DELETE from %@ where id in ( %@ )"; + +static NSString *const DELETE_ITEMS_WITH_PREFIX_SQL = @"DELETE from %@ where id like ? "; + ++ (BOOL)smk_checkTableName:(NSString *)tableName { + if (tableName == nil || tableName.length == 0 || [tableName rangeOfString:@" "].location != NSNotFound) { + debugLog(@"ERROR, table name: %@ format error.", tableName); + return NO; + } + return YES; +} + +- (id)init { + return [self initDBWithName:DEFAULT_DB_NAME]; +} + +- (id)initDBWithName:(NSString *)dbName { + self = [super init]; + if (self) { + NSString * dbPath = [PATH_OF_CACHES stringByAppendingPathComponent:dbName]; + _dbPath = dbPath; + if (_dbQueue) { + [self smk_close]; + } + _dbQueue = [FMDatabaseQueue databaseQueueWithPath:dbPath]; + } + return self; +} + +- (id)initWithDBWithPath:(NSString *)dbPath { + self = [super init]; + if (self) { + _dbPath = dbPath; + if (_dbQueue) { + [self smk_close]; + } + _dbQueue = [FMDatabaseQueue databaseQueueWithPath:dbPath]; + } + return self; +} + +- (void)smk_createTableWithName:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { + return; + } + NSString * sql = [NSString stringWithFormat:CREATE_TABLE_SQL, tableName]; + __block BOOL result; + [_dbQueue inDatabase:^(FMDatabase *db) { + result = [db executeUpdate:sql]; + }]; + if (!result) { + debugLog(@"ERROR, failed to create table: %@", tableName); + } +} + +- (void)smk_clearTable:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { + return; + } + NSString * sql = [NSString stringWithFormat:CLEAR_ALL_SQL, tableName]; + __block BOOL result; + [_dbQueue inDatabase:^(FMDatabase *db) { + result = [db executeUpdate:sql]; + }]; + if (!result) { + debugLog(@"ERROR, failed to clear table: %@", tableName); + } +} + +- (void)smk_putObject:(id)object withId:(NSString *)objectId intoTable:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { + return; + } + + NSError * error; + id obj = nil; + NSBundle *mainB = [NSBundle bundleForClass:[object class]]; + if (mainB == [NSBundle mainBundle]) { + obj = [object smk_allProperties]; + + }else + { + obj = object; + } + + NSData * data = [NSJSONSerialization dataWithJSONObject:obj options:0 error:&error]; + if (error) { + debugLog(@"ERROR, faild to get json data"); + return; + } + NSString * jsonString = [[NSString alloc] initWithData:data encoding:(NSUTF8StringEncoding)]; + NSDate * createdTime = [NSDate date]; + NSString * sql = [NSString stringWithFormat:UPDATE_ITEM_SQL, tableName]; + __block BOOL result; + [_dbQueue inDatabase:^(FMDatabase *db) { + result = [db executeUpdate:sql, objectId, jsonString, createdTime]; + }]; + if (!result) { + debugLog(@"ERROR, failed to insert/replace into table: %@", tableName); + } +} + +- (id)smk_getObjectById:(NSString *)objectId fromTable:(NSString *)tableName { + SMKStoreItem * item = [self smk_getSMKStoreItemById:objectId fromTable:tableName]; + if (item) { + return item.smk_itemObject; + } else { + return nil; + } +} + +- (SMKStoreItem *)smk_getSMKStoreItemById:(NSString *)objectId fromTable:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { + return nil; + } + NSString * sql = [NSString stringWithFormat:QUERY_ITEM_SQL, tableName]; + __block NSString * json = nil; + __block NSDate * createdTime = nil; + [_dbQueue inDatabase:^(FMDatabase *db) { + FMResultSet * rs = [db executeQuery:sql, objectId]; + if ([rs next]) { + json = [rs stringForColumn:@"json"]; + createdTime = [rs dateForColumn:@"createdTime"]; + } + [rs close]; + }]; + if (json) { + NSError * error; + id result = [NSJSONSerialization JSONObjectWithData:[json dataUsingEncoding:NSUTF8StringEncoding] + options:(NSJSONReadingAllowFragments) error:&error]; + if (error) { + debugLog(@"ERROR, faild to prase to json"); + return nil; + } + SMKStoreItem * item = [[SMKStoreItem alloc] init]; + item.smk_itemId = objectId; + item.smk_itemObject = result; + item.smk_createdTime = createdTime; + return item; + } else { + return nil; + } +} + +- (void)smk_putString:(NSString *)string withId:(NSString *)stringId intoTable:(NSString *)tableName { + if (string == nil) { + debugLog(@"error, string is nil"); + return; + } + [self smk_putObject:@[string] withId:stringId intoTable:tableName]; +} + +- (NSString *)smk_getStringById:(NSString *)stringId fromTable:(NSString *)tableName { + NSArray * array = [self smk_getObjectById:stringId fromTable:tableName]; + if (array && [array isKindOfClass:[NSArray class]]) { + return array[0]; + } + return nil; +} + +- (void)smk_putNumber:(NSNumber *)number withId:(NSString *)numberId intoTable:(NSString *)tableName { + if (number == nil) { + debugLog(@"error, number is nil"); + return; + } + [self smk_putObject:@[number] withId:numberId intoTable:tableName]; +} + +- (NSNumber *)smk_getNumberById:(NSString *)numberId fromTable:(NSString *)tableName { + NSArray * array = [self smk_getObjectById:numberId fromTable:tableName]; + if (array && [array isKindOfClass:[NSArray class]]) { + return array[0]; + } + return nil; +} + +- (NSArray *)smk_getAllItemsFromTable:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { + return nil; + } + NSString * sql = [NSString stringWithFormat:SELECT_ALL_SQL, tableName]; + __block NSMutableArray * result = [NSMutableArray array]; + [_dbQueue inDatabase:^(FMDatabase *db) { + FMResultSet * rs = [db executeQuery:sql]; + while ([rs next]) { + SMKStoreItem * item = [[SMKStoreItem alloc] init]; + item.smk_itemId = [rs stringForColumn:@"id"]; + item.smk_itemObject = [rs stringForColumn:@"json"]; + item.smk_createdTime = [rs dateForColumn:@"createdTime"]; + [result addObject:item]; + } + [rs close]; + }]; + // parse json string to object + NSError * error; + for (SMKStoreItem * item in result) { + error = nil; + id object = [NSJSONSerialization JSONObjectWithData:[item.smk_itemObject dataUsingEncoding:NSUTF8StringEncoding] + options:(NSJSONReadingAllowFragments) error:&error]; + if (error) { + debugLog(@"ERROR, faild to prase to json."); + } else { + item.smk_itemObject = object; + } + } + return result; +} + +- (void)smk_deleteObjectById:(NSString *)objectId fromTable:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { + return; + } + NSString * sql = [NSString stringWithFormat:DELETE_ITEM_SQL, tableName]; + __block BOOL result; + [_dbQueue inDatabase:^(FMDatabase *db) { + result = [db executeUpdate:sql, objectId]; + }]; + if (!result) { + debugLog(@"ERROR, failed to delete item from table: %@", tableName); + } +} + +- (void)smk_deleteObjectsByIdArray:(NSArray *)objectIdArray fromTable:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { + return; + } + NSMutableString *stringBuilder = [NSMutableString string]; + for (id objectId in objectIdArray) { + NSString *item = [NSString stringWithFormat:@" '%@' ", objectId]; + if (stringBuilder.length == 0) { + [stringBuilder appendString:item]; + } else { + [stringBuilder appendString:@","]; + [stringBuilder appendString:item]; + } + } + NSString *sql = [NSString stringWithFormat:DELETE_ITEMS_SQL, tableName, stringBuilder]; + __block BOOL result; + [_dbQueue inDatabase:^(FMDatabase *db) { + result = [db executeUpdate:sql]; + }]; + if (!result) { + debugLog(@"ERROR, failed to delete items by ids from table: %@", tableName); + } +} + +- (void)smk_deleteObjectsByIdPrefix:(NSString *)objectIdPrefix fromTable:(NSString *)tableName { + if ([SMKStore smk_checkTableName:tableName] == NO) { + return; + } + NSString *sql = [NSString stringWithFormat:DELETE_ITEMS_WITH_PREFIX_SQL, tableName]; + NSString *prefixArgument = [NSString stringWithFormat:@"%@%%", objectIdPrefix]; + __block BOOL result; + [_dbQueue inDatabase:^(FMDatabase *db) { + result = [db executeUpdate:sql, prefixArgument]; + }]; + if (!result) { + debugLog(@"ERROR, failed to delete items by id prefix from table: %@", tableName); + } +} + +- (void)smk_close { + [_dbQueue close]; + _dbQueue = nil; +} + +- (NSArray *)smk_getItemsFromTable:(NSString *)tableName withRange:(NSRange)range { + + if ([SMKStore smk_checkTableName:tableName] == NO) { + return nil; + } + + NSString * sql = [NSString stringWithFormat:@"SELECT * FROM %@ LIMIT %zd, %zd",tableName, range.location, range.length]; + __block NSMutableArray * result = [NSMutableArray array]; + [_dbQueue inDatabase:^(FMDatabase *db) { + FMResultSet * rs = [db executeQuery:sql]; + while ([rs next]) { + SMKStoreItem * item = [[SMKStoreItem alloc] init]; + item.smk_itemId = [rs stringForColumn:@"id"]; + item.smk_itemObject = [rs stringForColumn:@"json"]; + item.smk_createdTime = [rs dateForColumn:@"createdTime"]; + [result addObject:item]; + } + [rs close]; + }]; + // parse json string to object + NSError * error; + for (SMKStoreItem * item in result) { + error = nil; + id object = [NSJSONSerialization JSONObjectWithData:[item.smk_itemObject dataUsingEncoding:NSUTF8StringEncoding] + options:(NSJSONReadingAllowFragments) error:&error]; + if (error) { + debugLog(@"ERROR, faild to prase to json."); + } else { + item.smk_itemObject = object; + } + } + return result; + + +} + +- (BOOL)smk_isExistTableWithName:(NSString *)tableName +{ + __block BOOL result; + + [_dbQueue inDatabase:^(FMDatabase *db) { + FMResultSet * rs = [db executeQuery:@"select count(*) as 'count' from sqlite_master where type ='table' and name = ?", tableName]; + while ([rs next]) + { + // just print out what we've got in a number of formats. + NSInteger count = [rs intForColumn:@"count"]; + if (0 == count) + { + result = NO; + } + else + { + result = YES; + } + } + + }]; + return result; +} + +// 删除表 +- (BOOL)smk_deleteTable:(NSString *)tableName +{ + __block BOOL result; + [_dbQueue inDatabase:^(FMDatabase *db) { + NSString *sqlstr = [NSString stringWithFormat:@"DROP TABLE %@", tableName]; + if (![db executeUpdate:sqlstr]) + { + debugLog(@"Delete table error!"); + result = NO; + } + result = YES; + }]; + return result; +} + +// 删除数据库 +- (void)smk_deleteDatabseWithDBName:(NSString *)DBName +{ + __block BOOL success; + __block NSError *error; + + NSFileManager *fileManager = [NSFileManager defaultManager]; + + // delete the old db. + if ([fileManager fileExistsAtPath:DBName]) + { + [_dbQueue inDatabase:^(FMDatabase *db) { + [db close]; + success = [fileManager removeItemAtPath:DBName error:&error]; + if (!success) { + NSAssert1(0, @"Failed to delete old database file with message '%@'.", [error localizedDescription]); + } + }]; + } +} + +- (NSString *)smk_getDBPath { + return _dbPath; +} +@end diff --git a/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewMangerProtocolDelegate.h b/SUIMVVMKit/SMKViewMangerProtocol.h similarity index 86% rename from SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewMangerProtocolDelegate.h rename to SUIMVVMKit/SMKViewMangerProtocol.h index dffffb3..3a021dc 100644 --- a/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewMangerProtocolDelegate.h +++ b/SUIMVVMKit/SMKViewMangerProtocol.h @@ -1,16 +1,17 @@ // -// SMKViewMangerProtocolDelegate.h +// SMKViewMangerProtocol.h // SUIMVVMDemo // // Created by yuantao on 16/2/23. // Copyright © 2016年 lovemo. All rights reserved. // -#ifndef SMKViewMangerProtocolDelegate_h -#define SMKViewMangerProtocolDelegate_h + #import -@protocol SMKViewMangerProtocolDelegate +typedef void (^ViewEventsBlock)( ); + +@protocol SMKViewMangerProtocol @optional @@ -67,6 +68,10 @@ */ - (void)smk_viewMangerWithModel:(NSDictionary * (^) ( ))dictBlock; +/** + * 处理viewBlock事件 + */ +- (ViewEventsBlock)smk_viewMangerWithEventBlockOfView:(__kindof UIView *)view; + @end -#endif /* SMKViewMangerProtocolDelegate_h */ diff --git a/SUIMVVMKit/SMKViewModelProtocol.h b/SUIMVVMKit/SMKViewModelProtocol.h new file mode 100644 index 0000000..4bf9f9e --- /dev/null +++ b/SUIMVVMKit/SMKViewModelProtocol.h @@ -0,0 +1,43 @@ +// +// SMKViewModelProtocol.h +// SUIMVVMDemo +// +// Created by yuantao on 16/4/8. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#import + +/** + * 请求成功block + */ +typedef void (^successBlock)(id responseObject); +/** + * 请求失败block + */ +typedef void (^failureBlock) (NSError *error); +/** + * 请求响应block + */ +typedef void (^responseBlock)(id dataObj, NSError *error); +/** + * 监听进度响应block + */ +typedef void (^progressBlock)(NSProgress * progress); + + +@protocol SMKViewModelProtocol + +@optional +/** + * 返回指定viewModel的所引用的控制器 + */ +- (void)smk_viewModelWithViewController:(UIViewController *)viewController; + +/** + * 加载数据 + */ +- (NSURLSessionTask *)smk_viewModelWithProgress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure; + + +@end diff --git a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewProtocolDelegate.h b/SUIMVVMKit/SMKViewProtocol.h similarity index 67% rename from SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewProtocolDelegate.h rename to SUIMVVMKit/SMKViewProtocol.h index eaf2491..ea87bcc 100644 --- a/SUIMVVMDemo/SUIMVVMDemo/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewProtocolDelegate.h +++ b/SUIMVVMKit/SMKViewProtocol.h @@ -1,16 +1,15 @@ // -// SMKViewProtocolDelegate.h +// SMKViewProtocol.h // SUIMVVMDemo // // Created by yuantao on 16/3/5. // Copyright © 2016年 lovemo. All rights reserved. // -#ifndef SMKViewProtocolDelegate_h -#define SMKViewProtocolDelegate_h + #import -@protocol SMKViewProtocolDelegate +@protocol SMKViewProtocol @optional @@ -23,7 +22,5 @@ - (void)smk_view:(__kindof UIView *)view withEvents:(NSDictionary *)events; - @end -#endif /* SMKViewProtocolDelegate_h */ diff --git a/SUIMVVMKit/SUIMVVMKit.h b/SUIMVVMKit/SUIMVVMKit.h index a05ed92..32f57f9 100644 --- a/SUIMVVMKit/SUIMVVMKit.h +++ b/SUIMVVMKit/SUIMVVMKit.h @@ -9,24 +9,15 @@ #ifndef SUIMVVMKit_h #define SUIMVVMKit_h -// Base: -#import "SMKBaseTableViewManger.h" -#import "SMKBaseCollectionViewManger.h" - -// Extend: #import "SMKExtendPublic.h" - -// Protocol: -#import "SMKViewMangerProtocolDelegate.h" -#import "SMKViewModelProtocolDelegate.h" -#import "SMKViewProtocolDelegate.h" - -// Constant: +#import "SMKAction.h" #import "SMKConstant.h" +#import "SMKStore.h" #import "SMKSingleton.h" +#import "SMKRequestProtocol.h" +#import "SMKViewMangerProtocol.h" +#import "SMKViewModelProtocol.h" +#import "SMKViewProtocol.h" -// Vender: -#import "SUIUtils.h" -#import "UITableView+FDTemplateLayoutCell.h" #endif /* SUIMVVMKit_h */ diff --git a/SUIMVVMKit/SUIMVVMKit/.DS_Store b/SUIMVVMKit/SUIMVVMKit/.DS_Store deleted file mode 100644 index 1f58ad841683ae2840ec80041340f099ea6ea3fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKPfP1S5Z|p;Q@un~5Z-04LJ!sY?---+C=?=!sMLf6yAYDnq!uZKoW1)6)Te%r z$9vzwkMeGBW_MeZ>QPad3A4Z1*_qw!Z^LeuF~;3)xWbst7_&eTOBEc&%2rHcaBv}hEZVbhM%{F_I{eiBij!SWYlZg3p;6&`!b0-&r(kgWfG=6H|-{2 zcH-&&4rQ3Pn)YI&6J0=R!%w0EnaM!LGQYGc_%!XMe!sr8S{1AH^+8qiH#cilu~y$0 z4D4&m`mwyey?4|eT;1H>{kng6{QXC-0*4P)$-KcK`~_n~$c5KQ;xsu2-!Og{M@S41 z1H`}=X25J|*6bIa1HC#iKn%PO1Gqm3P(;UIp;2ueP~h()wwDo6z{a}-qA=(fEHpw3 z2-m5AI+dF%2G{A}7beazSZLJgjH{8MA2TvHHx#Z$2ft9^j5`{sBnF6qmkdnks*UIW z&$sXYFO#T73=jj~iUD5U^>$sDk~v$)CWmLO06ham!MH->C<{z%S4M VbPN_6!2?1+0*VGIh=C7f;6M6wV~+p; diff --git a/SUIMVVMKit/SUIMVVMKit/Base/.DS_Store b/SUIMVVMKit/SUIMVVMKit/Base/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 -#import "UICollectionView+CollectionDataDelegateAdditions.h" - -/** - * 选中UICollectionViewCell的Block - */ -typedef void (^DidSelectCellBlock)(NSIndexPath *indexPath, id item) ; -/** - * 设置UICollectionViewCell大小的Block - */ -typedef CGSize (^CellItemSize)() ; -/** - * 设置UICollectionViewCell间隔Margin的Block - */ -typedef UIEdgeInsets (^CellItemMargin)() ; - - - // - - - - - -- - - - - - - - - - -- 创建类 - -- - - - - - - - -- - - - - -- -// - -@interface SMKBaseCollectionViewManger : NSObject - -/** collectionViewCell 重用标识符 */ -@property (nonatomic, copy) NSString *cellIdentifier ; - -/** collectionView布局方式 */ -@property (nonatomic, strong) UICollectionViewLayout *collectionViewLayout; - -/** 选中cell */ -@property (nonatomic, copy) DidSelectCellBlock didSelectCellBlock ; - -/** cell的Size */ -@property (nonatomic, copy) CellItemSize cellItemSize; - -/** cell的Margin */ -@property (nonatomic, copy) CellItemMargin cellItemMargin; - - -/** - * 设置UICollectionViewCell大小 - */ -- (void)itemSize:(CellItemSize)cellItemSize; - -/** - * 设置UICollectionViewCell间隔Margin - */ -- (void)itemInset:(CellItemMargin)cellItemMargin; - -/** - * 初始化方法 - */ -- (id)initWithCellIdentifier:(NSString *)aCellIdentifier - collectionViewLayout:(UICollectionViewLayout *)collectionViewLayout - cellItemSizeBlock:(CellItemSize)cellItemSize - cellItemMarginBlock:(CellItemMargin)cellItemMargin - didSelectBlock:(DidSelectCellBlock)didselectBlock ; - -/** - * 设置CollectionView的Datasource和Delegate为self - */ -- (void)handleCollectionViewDatasourceAndDelegate:(UICollectionView *)collection ; - -/** - * 获取CollectionView中Item所在的indexPath - */ -- (id)itemAtIndexPath:(NSIndexPath *)indexPath ; - -/** - * 获取模型数组 - * - * @param modelArrayBlock 返回模型数组Block - * @param completion 获取数据完成时 - */ -- (void)getItemsWithModelArray:(NSArray * (^) ( ))modelArrayBlock completion:( void(^) ( ))completion; - -@end diff --git a/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseCollectionViewManger.m b/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseCollectionViewManger.m deleted file mode 100755 index 0b38354..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseCollectionViewManger.m +++ /dev/null @@ -1,112 +0,0 @@ -// -// SMKBaseCollectionViewManger.m -// DevelopFramework -// -// Created by momo on 15/12/16. -// Copyright © 2015年 teason. All rights reserved. -// - -#import "SMKBaseCollectionViewManger.h" -#import "UICollectionViewCell+Extension.h" - -@interface SMKBaseCollectionViewManger () -/** items */ -@property (nonatomic, strong) NSArray *smk_dataArrayList; - -@end - -@implementation SMKBaseCollectionViewManger - -- (id)initWithCellIdentifier:(NSString *)aCellIdentifier - collectionViewLayout:(UICollectionViewLayout *)collectionViewLayout - cellItemSizeBlock:(CellItemSize)cellItemSize - cellItemMarginBlock:(CellItemMargin)cellItemMargin - didSelectBlock:(DidSelectCellBlock)didselectBlock -{ - self = [super init] ; - if (self) { - self.cellIdentifier = aCellIdentifier ; - self.collectionViewLayout = collectionViewLayout == nil ? [[UICollectionViewFlowLayout alloc]init] : collectionViewLayout; - self.cellItemSize = cellItemSize; - self.cellItemMargin = cellItemMargin; - self.didSelectCellBlock = didselectBlock ; - } - - return self ; -} - -- (void)itemSize:(CellItemSize)cellItemSize { - self.cellItemSize = cellItemSize; -} - -- (void)itemInset:(CellItemMargin)cellItemMargin { - self.cellItemMargin = cellItemMargin; -} - -- (id)itemAtIndexPath:(NSIndexPath *)indexPath -{ - return self.smk_dataArrayList[indexPath.item]; -} - -- (void)handleCollectionViewDatasourceAndDelegate:(UICollectionView *)collection -{ - collection.collectionViewLayout = self.collectionViewLayout; - collection.dataSource = self ; - collection.delegate = self ; -} - -- (void)getItemsWithModelArray:(NSArray *(^)())modelArrayBlock completion:(void (^)())completion { - if (modelArrayBlock) { - self.smk_dataArrayList = modelArrayBlock(); - if (completion) { - completion(); - } - } -} - -#pragma mark --UICollectionViewDelegateFlowLayout - -// 定义每个Item 的大小 -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath -{ - return self.cellItemSize(); -} - -// 定义每个UICollectionView 的 margin -- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section -{ - return self.cellItemMargin(); -} - -// 定义每个UICollectionView 纵向的间距 -- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { - return 0; -} - -#pragma mark --UICollectionViewDelegate && UICollectionViewDataSourse -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.smk_dataArrayList.count; -} -- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { - return 1; -} - -- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - id item = [self itemAtIndexPath:indexPath] ; - - [UICollectionViewCell registerCollect:collectionView nibIdentifier:self.cellIdentifier]; - UICollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:self.cellIdentifier forIndexPath:indexPath]; - - [cell configure:cell customObj:item indexPath:indexPath]; - return cell ; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - id item = [self itemAtIndexPath:indexPath] ; - self.didSelectCellBlock(indexPath,item) ; -} -- (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath { - return YES; -} - -@end diff --git a/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.h b/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.h deleted file mode 100755 index 0966362..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.h +++ /dev/null @@ -1,52 +0,0 @@ -// -// SMKBaseTableViewManger.h -// DevelopFramework -// -// Created by momo on 15/12/5. -// Copyright © 2015年 teason. All rights reserved. -// - -#import -#import "UITableView+TableDataDelegateAdditions.h" - -/** - * 选中UITableViewCell的Block - */ -typedef void (^DidSelectCellBlock)(NSIndexPath *indexPath, id item) ; - - // - - - - - -- - - - - - - - - - -- 创建类 - -- - - - - - - - -- - - - - -- -// - -@interface SMKBaseTableViewManger : NSObject - -/** cell的可重用标识符 <如需显示多种cell,需继承此类,重写显示cell的数据源方法> */ -@property (nonatomic, copy) NSArray *cellIdentifierArray ; - -/** 选中cell */ -@property (nonatomic, copy) DidSelectCellBlock didSelectCellBlock ; - -/** - * 初始化方法 - */ -- (id)initWithCellIdentifiers:(NSArray *)cellIdentifiersArray - didSelectBlock:(DidSelectCellBlock)didselectBlock ; - -/** - * 设置UITableView的Datasource和Delegate为self - */ -- (void)handleTableViewDatasourceAndDelegate:(UITableView *)table ; - -/** - * 获取UITableView中Item所在的indexPath - */ -- (id)itemAtIndexPath:(NSIndexPath *)indexPath ; - -/** - * 获取模型数组 - * - * @param modelArrayBlock 返回模型数组Block - * @param completion 获取数据完成时 - */ -- (void)getItemsWithModelArray:(NSArray * (^) ( ))modelArrayBlock completion:( void(^) ( ))completion; - - -@end diff --git a/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.m b/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.m deleted file mode 100755 index 17bfa3c..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Base/SMKBaseTableViewManger.m +++ /dev/null @@ -1,107 +0,0 @@ -// -// SMKBaseTableViewManger.m -// DevelopFramework -// -// Created by momo on 15/12/5. -// Copyright © 2015年 teason. All rights reserved. -// - -#import "SMKBaseTableViewManger.h" -#import "UITableViewCell+Extension.h" -#import "UITableView+FDTemplateLayoutCell.h" - - -@interface SMKBaseTableViewManger () -/** items */ -@property (nonatomic, strong) NSArray *smk_dataArrayList; - -@end - -@implementation SMKBaseTableViewManger -- (NSArray *)smk_dataArrayList { - if (_smk_dataArrayList == nil) { - _smk_dataArrayList = [NSArray array]; - } - return _smk_dataArrayList; -} - -- (NSArray *)cellIdentifierArray { - if (_cellIdentifierArray == nil) { - _cellIdentifierArray = [NSArray array]; - } - return _cellIdentifierArray; -} - -- (id)initWithCellIdentifiers:(NSArray *)cellIdentifiersArray didSelectBlock:(DidSelectCellBlock)didselectBlock { - self = [super init] ; - if (self) { - self.cellIdentifierArray = cellIdentifiersArray ; - self.didSelectCellBlock = didselectBlock ; - } - - return self ; -} - -- (id)itemAtIndexPath:(NSIndexPath *)indexPath -{ - return self.smk_dataArrayList[indexPath.row]; -} - -- (void)handleTableViewDatasourceAndDelegate:(UITableView *)table -{ - - table.dataSource = self ; - table.delegate = self ; - - [UITableViewCell registerTable:table nibIdentifier:self.cellIdentifierArray[0]] ; - table.tableFooterView = [UIView new]; -} - -- (void)getItemsWithModelArray:(NSArray *(^)())modelArrayBlock completion:(void (^)())completion{ - if (modelArrayBlock) { - self.smk_dataArrayList = modelArrayBlock(); - if (completion) { - completion(); - } - } -} - -#pragma mark - UITableViewDataSource - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - return self.smk_dataArrayList.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - id item = [self itemAtIndexPath:indexPath] ; - - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:self.cellIdentifierArray[0] forIndexPath:indexPath] ; - - [cell configure:cell customObj:item indexPath:indexPath]; - // self.configureCellBlock(indexPath,item,cell) ; - return cell ; - -} - -#pragma mark - UITableViewDelegate -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath -{ - id item = [self itemAtIndexPath:indexPath] ; - __weak typeof(self) weakSelf = self; - - return [tableView fd_heightForCellWithIdentifier:weakSelf.cellIdentifierArray[0] cacheByIndexPath:indexPath configuration:^(UITableViewCell *cell) { - [cell configure:cell customObj:item indexPath:indexPath]; - }]; - -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - id item = [self itemAtIndexPath:indexPath] ; - self.didSelectCellBlock(indexPath,item) ; -} - -@end diff --git a/SUIMVVMKit/SUIMVVMKit/Constant/SMKSingleton.h b/SUIMVVMKit/SUIMVVMKit/Constant/SMKSingleton.h deleted file mode 100755 index 725a680..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Constant/SMKSingleton.h +++ /dev/null @@ -1,66 +0,0 @@ -// .h文件 -#define SMKSingletonH(name) + (instancetype)shared##name; - -// .m文件 -#if __has_feature(objc_arc) - - #define SMKSingletonM(name) \ - static id _instace; \ - \ - + (id)allocWithZone:(struct _NSZone *)zone \ - { \ - static dispatch_once_t onceToken; \ - dispatch_once(&onceToken, ^{ \ - _instace = [super allocWithZone:zone]; \ - }); \ - return _instace; \ - } \ - \ - + (instancetype)shared##name \ - { \ - static dispatch_once_t onceToken; \ - dispatch_once(&onceToken, ^{ \ - _instace = [[self alloc] init]; \ - }); \ - return _instace; \ - } \ - \ - - (id)copyWithZone:(NSZone *)zone \ - { \ - return _instace; \ - } - -#else - - #define SMKSingletonM(name) \ - static id _instace; \ - \ - + (id)allocWithZone:(struct _NSZone *)zone \ - { \ - static dispatch_once_t onceToken; \ - dispatch_once(&onceToken, ^{ \ - _instace = [super allocWithZone:zone]; \ - }); \ - return _instace; \ - } \ - \ - + (instancetype)shared##name \ - { \ - static dispatch_once_t onceToken; \ - dispatch_once(&onceToken, ^{ \ - _instace = [[self alloc] init]; \ - }); \ - return _instace; \ - } \ - \ - - (id)copyWithZone:(NSZone *)zone \ - { \ - return _instace; \ - } \ - \ - - (oneway void)release { } \ - - (id)retain { return self; } \ - - (NSUInteger)retainCount { return 1;} \ - - (id)autorelease { return self;} - -#endif \ No newline at end of file diff --git a/SUIMVVMKit/SUIMVVMKit/Extend/.DS_Store b/SUIMVVMKit/SUIMVVMKit/Extend/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 -@class SMKBaseCollectionViewManger; - -NS_ASSUME_NONNULL_BEGIN - -@interface UICollectionView (CollectionDataDelegateAdditions) - -@property (nullable,nonatomic,strong) SMKBaseCollectionViewManger *collectionHander; - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionView+CollectionDataDelegateAdditions.m b/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionView+CollectionDataDelegateAdditions.m deleted file mode 100644 index de16857..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionView+CollectionDataDelegateAdditions.m +++ /dev/null @@ -1,30 +0,0 @@ -// -// UICollectionView+CollectionDataDelegateAdditions.m -// MVVMFramework -// -// Created by zzZ on 16/1/8. -// Copyright © 2016年 momo. All rights reserved. -// - -#import "UICollectionView+CollectionDataDelegateAdditions.h" -#import "SMKBaseCollectionViewManger.h" -#import - -@implementation UICollectionView (CollectionDataDelegateAdditions) - - -- (SMKBaseCollectionViewManger *)collectionHander -{ - return objc_getAssociatedObject(self, _cmd); -} -- (void)setCollectionHander:(SMKBaseCollectionViewManger *)collectionHander -{ - if (collectionHander) { - [collectionHander handleCollectionViewDatasourceAndDelegate:self]; - } - objc_setAssociatedObject(self, @selector(collectionHander), collectionHander, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - - -@end - diff --git a/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.h b/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.h deleted file mode 100755 index bcaa513..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// UITableViewCell+Extension.h -// DevelopFramework -// -// Created by momo on 15/12/16. -// Copyright © 2015年 teason. All rights reserved. -// - -#import - -@interface UICollectionViewCell (Extension) - -/** - * 从nib文件中根据重用标识符注册UICollectionViewcell - */ -+ (void)registerCollect:(UICollectionView *)table - nibIdentifier:(NSString *)identifier ; - -/** - * 配置UICollectionViewcell,设置UICollectionViewcell内容 - */ -- (void)configure:(UICollectionViewCell *)cell - customObj:(id)obj - indexPath:(NSIndexPath *)indexPath ; - -/** - * 获取自定义对象的cell高度 - */ -+ (CGFloat)getCellHeightWithCustomObj:(id)obj - indexPath:(NSIndexPath *)indexPath ; - -@end diff --git a/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.m b/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.m deleted file mode 100755 index 064d0a8..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Extend/UICollectionViewCell+Extension.m +++ /dev/null @@ -1,47 +0,0 @@ -// -// UITableViewCell+Extension.m -// DevelopFramework -// -// Created by momo on 15/12/16. -// Copyright © 2015年 teason. All rights reserved. -// - -#import "UICollectionViewCell+Extension.h" - -@implementation UICollectionViewCell (Extension) - -#pragma mark -- -+ (UINib *)nibWithIdentifier:(NSString *)identifier -{ - return [UINib nibWithNibName:identifier bundle:nil]; -} - -#pragma mark - Public -+ (void)registerCollect:(UICollectionView *)collect - nibIdentifier:(NSString *)identifier -{ - [collect registerNib:[self nibWithIdentifier:identifier] forCellWithReuseIdentifier:identifier]; - -} - -#pragma mark -- -#pragma mark - Rewrite these func in SubClass ! -- (void)configure:(UICollectionViewCell *)cell - customObj:(id)obj - indexPath:(NSIndexPath *)indexPath -{ - // Rewrite this func in SubClass ! - -} - -+ (CGFloat)getCellHeightWithCustomObj:(id)obj - indexPath:(NSIndexPath *)indexPath -{ - // Rewrite this func in SubClass if necessary - if (!obj) { - return 0.0f ; // if obj is null . - } - return 44.0f ; // default cell height -} - -@end diff --git a/SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.h b/SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.h deleted file mode 100644 index 1c5ac62..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// UITableView+TableDataDelegateAdditions.h -// MVVMFramework -// -// Created by zzZ on 16/1/8. -// Copyright © 2016年 momo. All rights reserved. -// - -#import -@class SMKBaseTableViewManger; - -NS_ASSUME_NONNULL_BEGIN - -@interface UITableView (TableDataDelegateAdditions) - -@property (nullable,nonatomic,strong) SMKBaseTableViewManger *tableHander; - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.m b/SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.m deleted file mode 100644 index e7e46bc..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Extend/UITableView+TableDataDelegateAdditions.m +++ /dev/null @@ -1,30 +0,0 @@ -// -// UITableView+TableDataDelegateAdditions.m -// MVVMFramework -// -// Created by zzZ on 16/1/8. -// Copyright © 2016年 momo. All rights reserved. -// - -#import "UITableView+TableDataDelegateAdditions.h" -#import "SMKBaseTableViewManger.H" -#import - -@implementation UITableView (TableDataDelegateAdditions) - -- (SMKBaseTableViewManger *)tableHander -{ - return objc_getAssociatedObject(self, _cmd); -} - -- (void)setTableHander:(SMKBaseTableViewManger *)tableHander -{ - if (tableHander) { - [tableHander handleTableViewDatasourceAndDelegate:self]; - } - objc_setAssociatedObject(self, @selector(tableHander), tableHander, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -@end - - diff --git a/SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.h b/SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.h deleted file mode 100755 index 1554817..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// UITableViewCell+Extension.h -// DevelopFramework -// -// Created by momo on 15/12/16. -// Copyright © 2015年 teason. All rights reserved. -// - -#import - -@interface UITableViewCell (Extension) - -/** - * 从nib文件中根据重用标识符注册UITableViewCell - */ -+ (void)registerTable:(UITableView *)table - nibIdentifier:(NSString *)identifier ; -/** - * 配置UITableViewCell,设置UITableViewCell内容 - */ -- (void)configure:(UITableViewCell *)cell - customObj:(id)obj - indexPath:(NSIndexPath *)indexPath ; -/** - * 获取自定义对象的cell高度 (已集成UITableView+FDTemplateLayoutCell,现在创建的cell自动计算高度) - */ -+ (CGFloat)getCellHeightWithCustomObj:(id)obj - indexPath:(NSIndexPath *)indexPath ; - -@end diff --git a/SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.m b/SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.m deleted file mode 100755 index 1be8997..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Extend/UITableViewCell+Extension.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// UITableViewCell+Extension.m -// DevelopFramework -// -// Created by momo on 15/12/16. -// Copyright © 2015年 teason. All rights reserved. -// - -#import "UITableViewCell+Extension.h" - -@implementation UITableViewCell (Extension) - -#pragma mark -- -+ (UINib *)nibWithIdentifier:(NSString *)identifier -{ - return [UINib nibWithNibName:identifier bundle:nil]; -} - -#pragma mark - Public -+ (void)registerTable:(UITableView *)table - nibIdentifier:(NSString *)identifier -{ - [table registerNib:[self nibWithIdentifier:identifier] forCellReuseIdentifier:identifier] ; -} - -#pragma mark -- -#pragma mark - Rewrite these func in SubClass ! -- (void)configure:(UITableViewCell *)cell - customObj:(id)obj - indexPath:(NSIndexPath *)indexPath -{ - // Rewrite this func in SubClass ! - -} - -+ (CGFloat)getCellHeightWithCustomObj:(id)obj - indexPath:(NSIndexPath *)indexPath -{ - // Rewrite this func in SubClass if necessary - if (!obj) { - return 0.0f ; // if obj is null . - } - return 44.0f ; // default cell height -} - -@end diff --git a/SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.h b/SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.h deleted file mode 100644 index 9c8a3a1..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// UIView+Configure.h -// SUIMVVMDemo -// -// Created by yuantao on 16/2/22. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import - -@interface UIView (Configure) - -/** - * 根据obj配置UIView,设置UIView内容 - */ -- (void)configureViewWithCustomObj:(id)obj; - -@end diff --git a/SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.m b/SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.m deleted file mode 100644 index 9d04463..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Extend/UIView+Configure.m +++ /dev/null @@ -1,21 +0,0 @@ -// -// UIView+Configure.m -// SUIMVVMDemo -// -// Created by yuantao on 16/2/22. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import "UIView+Configure.h" - -@implementation UIView (Configure) - -#pragma mark -- -#pragma mark - Rewrite these func in SubClass ! -- (void)configureViewWithCustomObj:(id)obj { - - // Rewrite this func in SubClass ! - -} - -@end diff --git a/SUIMVVMKit/SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.h b/SUIMVVMKit/SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.h deleted file mode 100644 index 4d0d38b..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// UIView+ViewDelegateAdditions.h -// SUIMVVMDemo -// -// Created by yuantao on 16/3/5. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import -#import "SMKViewProtocolDelegate.h" - -NS_ASSUME_NONNULL_BEGIN - -typedef void (^ViewEventsBlock)( ); - -@interface UIView (ViewDelegateAdditions) - -@property (nullable, nonatomic, weak) id delegate; - -@property (nonatomic, copy) ViewEventsBlock viewEventsBlock; -@end - -NS_ASSUME_NONNULL_END - diff --git a/SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.h b/SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.h deleted file mode 100644 index c25a8f2..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// UIViewController+ControllerAdditions.h -// SUIMVVMDemo -// -// Created by yuantao on 16/3/10. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import -#import "SMKViewControllerProtocolDelegate.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface UIViewController (ControllerAdditions) - -@property (nonatomic,strong) __kindof NSObject *smk_viewModel; -@property (nonatomic,strong) __kindof NSObject *smk_viewManger; - -@end -NS_ASSUME_NONNULL_END \ No newline at end of file diff --git a/SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.m b/SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.m deleted file mode 100644 index 658d937..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Extend/UIViewController+ControllerAdditions.m +++ /dev/null @@ -1,47 +0,0 @@ -// -// UIViewController+ControllerAdditions.m -// SUIMVVMDemo -// -// Created by yuantao on 16/3/10. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#import "UIViewController+ControllerAdditions.h" -#import - -@implementation UIViewController (ControllerAdditions) - -- (NSObject *)smk_viewModel { - NSObject *curVM = objc_getAssociatedObject(self, @selector(smk_viewModel)); - if (curVM) return curVM; - if (![self respondsToSelector:@selector(smk_classOfViewModel)]) { - NSException *exp = [NSException exceptionWithName:@"not found smk_classOfViewModel" reason:@"you forgot to add smk_classOfViewModel() in VC" userInfo:nil]; - [exp raise]; - } - curVM = [[[self smk_classOfViewModel] alloc] init]; - self.smk_viewModel = curVM; - return curVM; -} - -- (void)setSmk_viewModel:(__kindof NSObject *)smk_viewModel { - objc_setAssociatedObject(self, @selector(smk_viewModel), smk_viewModel, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -- (NSObject *)smk_viewManger { - NSObject *curVM = objc_getAssociatedObject(self, @selector(smk_viewManger)); - if (curVM) return curVM; - if (![self respondsToSelector:@selector(smk_classOfViewManger)]) { - NSException *exp = [NSException exceptionWithName:@"not found smk_classOfViewManger" reason:@"you forgot to add smk_classOfViewManger() in VC" userInfo:nil]; - [exp raise]; - } - curVM = [[[self smk_classOfViewManger] alloc] init]; - self.smk_viewManger = curVM; - return curVM; -} - -- (void)setSmk_viewManger:(__kindof NSObject *)smk_viewManger { - objc_setAssociatedObject(self, @selector(smk_viewManger), smk_viewManger, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - - -@end diff --git a/SUIMVVMKit/SUIMVVMKit/Handler/.DS_Store b/SUIMVVMKit/SUIMVVMKit/Handler/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 - -@protocol SMKViewControllerProtocolDelegate -@optional - -- (Class)smk_classOfViewModel; - -- (Class)smk_classOfViewManger; - -@end - -#endif /* SMKViewControllerProtocolDelegate_h */ diff --git a/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewModelProtocolDelegate.h b/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewModelProtocolDelegate.h deleted file mode 100644 index 483d1eb..0000000 --- a/SUIMVVMKit/SUIMVVMKit/Protocol/SMKViewModelProtocolDelegate.h +++ /dev/null @@ -1,44 +0,0 @@ -// -// SMKViewModelProtocolDelegate.h -// SUIMVVMDemo -// -// Created by yuantao on 16/2/23. -// Copyright © 2016年 lovemo. All rights reserved. -// - -#ifndef SMKViewModelProtocolDelegate_h -#define SMKViewModelProtocolDelegate_h -#import - -@protocol SMKViewModelProtocolDelegate - -@optional - -/** - * 返回指定viewModel的所引用的控制器 - */ -- (void)smk_viewModelWithViewController:(UIViewController *)viewController; - -/** - * 用来判断是否加载成功,方便外部根据不同需求处理 (外部使用) - */ -- (void)smk_viewModelWithGetDataSuccessHandler:(void (^)(NSArray *array))successHandler; - -/** - * 返回指定indexPath的item - */ -- (instancetype)smk_viewModelWithIndexPath:(NSIndexPath *)indexPath; - -/** - * 每组中显示多少行 (用于tableView) - */ -- (NSUInteger)smk_viewModelWithNumberOfRowsInSection:(NSUInteger)section; - -/** - * 每组中显示多少个 (用于collectionView) - */ -- (NSUInteger)smk_viewModelWithNumberOfItemsInSection:(NSUInteger)section; - -@end - -#endif /* SMKViewModelProtocolDelegate_h */ diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSArray+SUIAdditions.h b/SUIMVVMKit/SUIUtils/Foundation/NSArray+SUIAdditions.h deleted file mode 100644 index 07fff62..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSArray+SUIAdditions.h +++ /dev/null @@ -1,79 +0,0 @@ -// -// NSArray+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/15. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface NSArray (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Prehash - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Prehash - -@property (nullable,readonly,copy) NSString *sui_toString; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Operate - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Operate - -- (void)sui_each:(void (^)(ObjectType obj, NSUInteger index))cb; - -- (void)sui_eachReverse:(void (^)(ObjectType obj, NSUInteger index))cb; - -- (void)sui_eachWithStop:(BOOL (^)(ObjectType obj, NSUInteger index))cb; - -- (void)sui_eachReverseWithStop:(BOOL (^)(ObjectType obj, NSUInteger index))cb; - -- (instancetype)sui_map:(id (^)(ObjectType obj, NSUInteger index))cb; - -- (instancetype)sui_filter:(BOOL (^)(ObjectType obj))cb; - -- (instancetype)sui_filterInArray:(NSArray *)array; - -- (instancetype)sui_filterNotInArray:(NSArray *)array; - -- (instancetype)sui_merge:(NSArray *)array; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Sequence - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Sequence - -- (nullable id)sui_randomObject; - -- (instancetype)sui_shuffledArray; - -- (instancetype)sui_reverseObject; - - -@end - - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * NSMutableArray - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -@interface NSMutableArray (SUIAdditions) - - -- (void)sui_moveObjectFromIndex:(NSUInteger)fromIndex toIndex:(NSUInteger)toIndex; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSArray+SUIAdditions.m b/SUIMVVMKit/SUIUtils/Foundation/NSArray+SUIAdditions.m deleted file mode 100644 index 5bdf07e..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSArray+SUIAdditions.m +++ /dev/null @@ -1,190 +0,0 @@ -// -// NSArray+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/15. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "NSArray+SUIAdditions.h" -#import "SUIMacro.h" - -@implementation NSArray (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Prehash - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Prehash - -- (NSString *)sui_toString -{ - if ([NSJSONSerialization isValidJSONObject:self]) { - NSError *anyError = nil; - NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:&anyError]; - if (anyError) { - SUILogError(@"array to string Error ⤭ %@ ⤪", anyError); - return nil; - } - NSString *json = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; - return json; - } else { - SUILogError(@"array to string invalid Array ⤭ %@ ⤪", self); - } - return nil; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Operate - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Operate - -- (void)sui_each:(void (^)(id _Nonnull, NSUInteger))cb -{ - if (self.count == 0) return; - [self enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - cb(obj, idx); - }]; -} - -- (void)sui_eachReverse:(void (^)(id _Nonnull, NSUInteger))cb -{ - if (self.count == 0) return; - [self enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - cb(obj, idx); - }]; -} - -- (void)sui_eachWithStop:(BOOL (^)(id _Nonnull, NSUInteger))cb -{ - if (self.count == 0) return; - [self enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - BOOL toStop = cb(obj, idx); - if (toStop) { - *stop = YES; - } - }]; -} - -- (void)sui_eachReverseWithStop:(BOOL (^)(id _Nonnull, NSUInteger))cb -{ - if (self.count == 0) return; - [self enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - BOOL toStop = cb(obj, idx); - if (toStop) { - *stop = YES; - } - }]; -} - -- (instancetype)sui_map:(id _Nonnull (^)(id _Nonnull, NSUInteger))cb -{ - if (self.count == 0) return @[]; - NSMutableArray *curAry = [NSMutableArray arrayWithCapacity:self.count]; - [self sui_each:^(id _Nonnull obj, NSUInteger index) { - id returnValue = cb(obj, index); - if (!kNilOrNull(returnValue)) { - [curAry addObject:returnValue]; - } - }]; - return curAry; -} - -- (instancetype)sui_filter:(BOOL (^)(id _Nonnull))cb -{ - if (self.count == 0) return @[]; - NSPredicate *curPredicate = [NSPredicate predicateWithBlock:^BOOL(id _Nonnull evaluatedObject, NSDictionary * _Nullable bindings) { - return cb(evaluatedObject); - }]; - NSArray *curAry = [self filteredArrayUsingPredicate:curPredicate]; - return curAry; -} - -- (instancetype)sui_filterInArray:(NSArray *)array -{ - if (self.count == 0) return @[]; - NSPredicate *curPredicate = gPredicate(@"SELF in %@", array); - NSArray *curAry = [self filteredArrayUsingPredicate:curPredicate]; - return curAry; -} - -// @[@(1), @(2), @(4)] -- @[@(1), @(3)] --> @[@(2), @(4)] -- (instancetype)sui_filterNotInArray:(NSArray *)array -{ - if (self.count == 0) return @[]; - NSPredicate *curPredicate = gPredicate(@"NOT (SELF in %@)", array); - NSArray *curAry = [self filteredArrayUsingPredicate:curPredicate]; - return curAry; -} - -- (instancetype)sui_merge:(NSArray *)array -{ - NSMutableArray *curAry = [NSMutableArray arrayWithArray:self]; - [curAry addObjectsFromArray:array]; - return curAry; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Sequence - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Sequence - - -- (id)sui_randomObject -{ - if (self.count == 0) return nil; - NSInteger curIdx = gRandomInRange(0, self.count-1); - id curObj = self[curIdx]; - return curObj; -} - -- (instancetype)sui_shuffledArray -{ - if (self.count == 0) return @[]; - NSMutableArray *curAry = [self mutableCopy]; - for (NSInteger idx = self.count - 1; idx > 0; idx--) { - [curAry exchangeObjectAtIndex:arc4random_uniform((u_int32_t)idx + 1) withObjectAtIndex:idx]; - } - return curAry; -} - -- (instancetype)sui_reverseObject -{ - if (self.count == 0) return @[]; - NSEnumerator *curEnumer = [self reverseObjectEnumerator]; - NSArray *curAry = [[NSMutableArray alloc] initWithArray:[curEnumer allObjects]]; - return curAry; -} - - -@end - - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * NSMutableArray - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -@implementation NSMutableArray (SUIAdditions) - - -- (void)sui_moveObjectFromIndex:(NSUInteger)fromIndex toIndex:(NSUInteger)toIndex -{ - if (toIndex != fromIndex && fromIndex < [self count] && toIndex< [self count]) { - id obj = [self objectAtIndex:fromIndex]; - [self removeObjectAtIndex:fromIndex]; - if (toIndex >= [self count]) { - [self addObject:obj]; - } else { - [self insertObject:obj atIndex:toIndex]; - } - } -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSArray+SUISafeAccess.h b/SUIMVVMKit/SUIUtils/Foundation/NSArray+SUISafeAccess.h deleted file mode 100644 index d89099e..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSArray+SUISafeAccess.h +++ /dev/null @@ -1,84 +0,0 @@ -// -// NSArray+SUISafeAccess.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface NSArray (SUISafeAccess) - - -- (nullable id)sui_objectWithIndex:(NSUInteger)cIndex; - -- (nullable NSString *)sui_stringWithIndex:(NSUInteger)cIndex; - -- (nullable NSNumber *)sui_numberWithIndex:(NSUInteger)cIndex; - -- (nullable NSArray *)sui_arrayWithIndex:(NSUInteger)cIndex; - -- (nullable NSMutableArray *)sui_mutableArrayWithIndex:(NSUInteger)cIndex; - -- (nullable NSDictionary *)sui_dictionaryWithIndex:(NSUInteger)cIndex; - -- (nullable NSMutableDictionary *)sui_mutableDictionaryWithIndex:(NSUInteger)cIndex; - -- (NSInteger)sui_integerWithIndex:(NSUInteger)cIndex; - -- (NSUInteger)sui_unsignedIntegerWithIndex:(NSUInteger)cIndex; - -- (BOOL)sui_boolWithIndex:(NSUInteger)cIndex; - -- (float)sui_floatWithIndex:(NSUInteger)cIndex; - -- (double)sui_doubleWithIndex:(NSUInteger)cIndex; - -- (CGFloat)sui_CGFloatWithIndex:(NSUInteger)cIndex; - -- (CGPoint)sui_pointWithIndex:(NSUInteger)cIndex; - -- (CGSize)sui_sizeWithIndex:(NSUInteger)cIndex; - -- (CGRect)sui_rectWithIndex:(NSUInteger)cIndex; - - -@end - - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * NSMutableArray - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -@interface NSMutableArray (SUISafeAccess) - - -- (void)sui_addObj:(id)a; - -- (void)sui_addInteger:(NSInteger)a; - -- (void)sui_addUnsignedInteger:(NSUInteger)a; - -- (void)sui_addBool:(BOOL)a; - -- (void)sui_addFloat:(float)a; - -- (void)sui_addDouble:(double)a; - -- (void)sui_addCGFloat:(CGFloat)a; - -- (void)sui_addPoint:(CGPoint)a; - -- (void)sui_addSize:(CGSize)a; - -- (void)sui_addRect:(CGRect)a; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSArray+SUISafeAccess.m b/SUIMVVMKit/SUIUtils/Foundation/NSArray+SUISafeAccess.m deleted file mode 100644 index a583194..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSArray+SUISafeAccess.m +++ /dev/null @@ -1,276 +0,0 @@ -// -// NSArray+SUISafeAccess.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "NSArray+SUISafeAccess.h" -#import "SUIMacro.h" -#import "NSString+SUIAdditions.h" -#import "NSNumber+SUIAdditions.h" - -@implementation NSArray (SUISafeAccess) - - -- (id)sui_objectWithIndex:(NSUInteger)cIndex -{ - if (cIndex < self.count) { - return self[cIndex]; - } - return nil; -} - -- (NSString *)sui_stringWithIndex:(NSUInteger)cIndex -{ - id curValue = [self sui_objectWithIndex:cIndex]; - if (!kNilOrNull(curValue)) { - NSString *curString = [NSString sui_stringFromObject:curValue]; - return curString; - } - return nil; -} - -- (NSNumber *)sui_numberWithIndex:(NSUInteger)cIndex -{ - id curValue = [self sui_objectWithIndex:cIndex]; - if (!kNilOrNull(curValue)) { - if ([curValue isKindOfClass:[NSNumber class]]) { - return curValue; - } - if ([curValue isKindOfClass:[NSString class]]) { - NSNumber *curNumber = ((NSString *)curValue).sui_toNumber; - return curNumber; - } - } - return nil; -} - -- (NSArray *)sui_arrayWithIndex:(NSUInteger)cIndex -{ - id curValue = [self sui_objectWithIndex:cIndex]; - if (!kNilOrNull(curValue)) { - if ([curValue isKindOfClass:[NSArray class]]) { - return curValue; - } - } - return nil; -} - -- (NSMutableArray *)sui_mutableArrayWithIndex:(NSUInteger)cIndex -{ - id curValue = [self sui_objectWithIndex:cIndex]; - if (!kNilOrNull(curValue)) { - if ([curValue isKindOfClass:[NSMutableArray class]]) { - return curValue; - } - } - return nil; -} - -- (NSDictionary *)sui_dictionaryWithIndex:(NSUInteger)cIndex -{ - id curValue = [self sui_objectWithIndex:cIndex]; - if (!kNilOrNull(curValue)) { - if ([curValue isKindOfClass:[NSDictionary class]]) { - return curValue; - } - } - return nil; -} - -- (NSMutableDictionary *)sui_mutableDictionaryWithIndex:(NSUInteger)cIndex -{ - id curValue = [self sui_objectWithIndex:cIndex]; - if (!kNilOrNull(curValue)) { - if ([curValue isKindOfClass:[NSMutableDictionary class]]) { - return curValue; - } - } - return nil; -} - -- (NSInteger)sui_integerWithIndex:(NSUInteger)cIndex -{ - id curValue = [self sui_objectWithIndex:cIndex]; - if (!kNilOrNull(curValue)) { - if ([curValue isKindOfClass:[NSString class]] || - [curValue isKindOfClass:[NSNumber class]]) { - NSInteger curInteger = [curValue integerValue]; - return curInteger; - } - } - return 0; -} - -- (NSUInteger)sui_unsignedIntegerWithIndex:(NSUInteger)cIndex -{ - id curValue = [self sui_objectWithIndex:cIndex]; - if (!kNilOrNull(curValue)) { - if ([curValue isKindOfClass:[NSString class]] || - [curValue isKindOfClass:[NSNumber class]]) { - NSUInteger curUInteger = [curValue unsignedIntegerValue]; - return curUInteger; - } - } - return 0; -} - -- (BOOL)sui_boolWithIndex:(NSUInteger)cIndex -{ - id curValue = [self sui_objectWithIndex:cIndex]; - if (!kNilOrNull(curValue)) { - if ([curValue isKindOfClass:[NSString class]] || - [curValue isKindOfClass:[NSNumber class]]) { - BOOL curRet = [curValue boolValue]; - return curRet; - } - } - return NO; -} - -- (float)sui_floatWithIndex:(NSUInteger)cIndex -{ - id curValue = [self sui_objectWithIndex:cIndex]; - if (!kNilOrNull(curValue)) { - if ([curValue isKindOfClass:[NSString class]] || - [curValue isKindOfClass:[NSNumber class]]) { - float curFloat = [curValue floatValue]; - return curFloat; - } - } - return 0; -} - -- (double)sui_doubleWithIndex:(NSUInteger)cIndex -{ - id curValue = [self sui_objectWithIndex:cIndex]; - if (!kNilOrNull(curValue)) { - if ([curValue isKindOfClass:[NSString class]] || - [curValue isKindOfClass:[NSNumber class]]) { - double curDouble = [curValue doubleValue]; - return curDouble; - } - } - return 0; -} - -- (CGFloat)sui_CGFloatWithIndex:(NSUInteger)cIndex -{ - id curValue = [self sui_objectWithIndex:cIndex]; - if (!kNilOrNull(curValue)) { - if ([curValue isKindOfClass:[NSString class]]) { - NSNumber *curNumber = ((NSString *)curValue).sui_toNumber; - CGFloat curFloat = curNumber.sui_CGFloatValue; - return curFloat; - } else if ([curValue isKindOfClass:[NSNumber class]]) { - CGFloat curFloat = ((NSNumber *)curValue).sui_CGFloatValue; - return curFloat; - } - } - return 0; -} - -- (CGPoint)sui_pointWithIndex:(NSUInteger)cIndex -{ - id curValue = [self sui_objectWithIndex:cIndex]; - if (!kNilOrNull(curValue)) { - if ([curValue isKindOfClass:[NSString class]]) { - CGPoint curPoint = CGPointFromString(curValue); - return curPoint; - } - } - return CGPointZero; -} - -- (CGSize)sui_sizeWithIndex:(NSUInteger)cIndex -{ - id curValue = [self sui_objectWithIndex:cIndex]; - if (!kNilOrNull(curValue)) { - if ([curValue isKindOfClass:[NSString class]]) { - CGSize curSize = CGSizeFromString(curValue); - return curSize; - } - } - return CGSizeZero; -} - -- (CGRect)sui_rectWithIndex:(NSUInteger)cIndex -{ - id curValue = [self sui_objectWithIndex:cIndex]; - if (!kNilOrNull(curValue)) { - if ([curValue isKindOfClass:[NSString class]]) { - CGRect curRect = CGRectFromString(curValue); - return curRect; - } - } - return CGRectZero; -} - - -@end - - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * NSMutableArray - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -@implementation NSMutableArray (SUISafeAccess) - - -- (void)sui_addObj:(id)a -{ - if (a != nil) { - [self addObject:a]; - } -} - -- (void)sui_addInteger:(NSInteger)a -{ - [self addObject:@(a)]; -} - -- (void)sui_addUnsignedInteger:(NSUInteger)a -{ - [self addObject:@(a)]; -} - -- (void)sui_addBool:(BOOL)a -{ - [self addObject:@(a)]; -} - -- (void)sui_addFloat:(float)a -{ - [self addObject:@(a)]; -} - -- (void)sui_addDouble:(double)a -{ - [self addObject:@(a)]; -} - -- (void)sui_addCGFloat:(CGFloat)a -{ - [self addObject:@(a)]; -} - -- (void)sui_addPoint:(CGPoint)a -{ - [self addObject:NSStringFromCGPoint(a)]; -} - -- (void)sui_addSize:(CGSize)a -{ - [self addObject:NSStringFromCGSize(a)]; -} - -- (void)sui_addRect:(CGRect)a -{ - [self addObject:NSStringFromCGRect(a)]; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSData+SUIAdditions.h b/SUIMVVMKit/SUIUtils/Foundation/NSData+SUIAdditions.h deleted file mode 100644 index 7ad06aa..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSData+SUIAdditions.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// NSData+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface NSData (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Prehash - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Prehash - -@property (readonly,copy) NSString *sui_toUTF8String; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Base64 - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Base64 - -@property (nullable,readonly,copy) NSString *sui_base64Encode; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSData+SUIAdditions.m b/SUIMVVMKit/SUIUtils/Foundation/NSData+SUIAdditions.m deleted file mode 100644 index e3d5bd7..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSData+SUIAdditions.m +++ /dev/null @@ -1,41 +0,0 @@ -// -// NSData+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "NSData+SUIAdditions.h" - -@implementation NSData (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Prehash - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Prehash - -- (NSString *)sui_toUTF8String -{ - NSString *curString = [[NSString alloc] initWithData:self encoding:NSUTF8StringEncoding]; - return curString; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Base64 - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Base64 - -- (NSString *)sui_base64Encode -{ - if (self.length == 0) return nil; - NSString *curStr = [self base64EncodedStringWithOptions:0]; - return curStr; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSDate+SUIAdditions.h b/SUIMVVMKit/SUIUtils/Foundation/NSDate+SUIAdditions.h deleted file mode 100644 index e077381..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSDate+SUIAdditions.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// NSDate+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface NSDate (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Prehash - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Prehash - -@property (readonly) NSTimeInterval sui_toTime; - - - - - - - - - - - - - - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSDate+SUIAdditions.m b/SUIMVVMKit/SUIUtils/Foundation/NSDate+SUIAdditions.m deleted file mode 100644 index ab98c7c..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSDate+SUIAdditions.m +++ /dev/null @@ -1,31 +0,0 @@ -// -// NSDate+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "NSDate+SUIAdditions.h" - -@implementation NSDate (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Prehash - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Prehash - -- (NSTimeInterval)sui_toTime -{ - return [self timeIntervalSince1970]; -} - - - - - - - -@end diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUIAdditions.h b/SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUIAdditions.h deleted file mode 100644 index 25d8029..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUIAdditions.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// NSDictionary+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface NSDictionary<__covariant KeyType, __covariant ObjectType> (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Prehash - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Prehash - -@property (nullable,readonly,copy) NSString *sui_toString; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Operate - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Operate - -- (BOOL)sui_hasKey:(id)cKey; - -- (void)sui_each:(void (^)(KeyType key, ObjectType obj))cb; - -- (void)sui_eachWithStop:(BOOL (^)(KeyType key, ObjectType obj))cb; - -- (instancetype)sui_map:(id (^)(KeyType key, ObjectType obj))cb; - -- (instancetype)sui_pick:(NSArray *)cKeys; - -- (instancetype)sui_Omit:(NSArray *)cKeys; - -- (instancetype)sui_merge:(NSDictionary *)dictionary; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUIAdditions.m b/SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUIAdditions.m deleted file mode 100644 index 4959f40..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUIAdditions.m +++ /dev/null @@ -1,118 +0,0 @@ -// -// NSDictionary+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "NSDictionary+SUIAdditions.h" -#import "SUIMacro.h" - -@implementation NSDictionary (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Prehash - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Prehash - -- (NSString *)sui_toString -{ - if ([NSJSONSerialization isValidJSONObject:self]) { - NSError *anyError = nil; - NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:&anyError]; - if (anyError) { - SUILogError(@"dict to string Error ⤭ %@ ⤪", anyError); - return nil; - } - NSString *json = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; - return json; - } else { - SUILogError(@"dict to string invalid Array ⤭ %@ ⤪", self); - } - return nil; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Operate - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Operate - -- (BOOL)sui_hasKey:(id)cKey -{ - id curValue = [self objectForKey:cKey]; - if (!kNilOrNull(curValue)) { - return YES; - } - return NO; -} - -- (void)sui_each:(void (^)(id _Nonnull, id _Nonnull))cb -{ - if (self.count == 0) return; - [self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { - cb(key, obj); - }]; -} - -- (void)sui_eachWithStop:(BOOL (^)(id _Nonnull, id _Nonnull))cb -{ - if (self.count == 0) return; - [self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { - BOOL toStop = cb(key, obj); - if (toStop) { - *stop = YES; - } - }]; -} - -- (instancetype)sui_map:(id _Nonnull (^)(id _Nonnull, id _Nonnull))cb -{ - if (self.count == 0) return @{}; - NSMutableDictionary *curDict = [NSMutableDictionary dictionaryWithCapacity:self.count]; - [self sui_each:^(id _Nonnull key, id _Nonnull obj) { - id returnValue = cb(key, obj); - if (!kNilOrNull(returnValue)) { - [curDict setObject:returnValue forKey:key]; - } - }]; - return curDict; -} - -- (instancetype)sui_pick:(NSArray *)cKeys -{ - if (cKeys.count == 0) return @{}; - NSMutableDictionary *curDict = [NSMutableDictionary dictionary]; - [self sui_each:^(id _Nonnull key, id _Nonnull obj) { - if ([cKeys containsObject:key]) { - curDict[key] = obj; - } - }]; - return curDict; -} - -- (instancetype)sui_Omit:(NSArray *)cKeys -{ - if (self.count == 0) return @{}; - NSMutableDictionary *curDict = [NSMutableDictionary dictionary]; - [self sui_each:^(id _Nonnull key, id _Nonnull obj) { - if (![cKeys containsObject:key]) { - curDict[key] = obj; - } - }]; - return curDict; -} - -- (instancetype)sui_merge:(NSDictionary *)dictionary -{ - NSMutableDictionary *curDict = [self mutableCopy]; - [curDict addEntriesFromDictionary:dictionary]; - return curDict; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUISafeAccess.h b/SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUISafeAccess.h deleted file mode 100644 index e68365b..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUISafeAccess.h +++ /dev/null @@ -1,84 +0,0 @@ -// -// NSDictionary+SUISafeAccess.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface NSDictionary (SUISafeAccess) - - -- (nullable id)sui_objectForKey:(id)cKey; - -- (nullable NSString *)sui_stringForKey:(id)cKey; - -- (nullable NSNumber *)sui_numberForKey:(id)cKey; - -- (nullable NSArray *)sui_arrayForKey:(id)cKey; - -- (nullable NSMutableArray *)sui_mutableArrayForKey:(id)cKey; - -- (nullable NSDictionary *)sui_dictionaryForKey:(id)cKey; - -- (nullable NSMutableDictionary *)sui_mutableDictionaryForKey:(id)cKey; - -- (NSInteger)sui_integerForKey:(id)cKey; - -- (NSUInteger)sui_unsignedIntegerForKey:(id)cKey; - -- (BOOL)sui_boolForKey:(id)cKey; - -- (float)sui_floatForKey:(id)cKey; - -- (double)sui_doubleForKey:(id)cKey; - -- (CGFloat)sui_CGFloatForKey:(id)cKey; - -- (CGPoint)sui_pointForKey:(id)cKey; - -- (CGSize)sui_sizeForKey:(id)cKey; - -- (CGRect)sui_rectForKey:(id)cKey; - - -@end - - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * NSMutableDictionary - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -@interface NSMutableDictionary(SUISafeAccess) - - -- (void)sui_setObj:(id)a forKey:(NSString *)cKey; - -- (void)sui_setInteger:(NSInteger)a forKey:(NSString *)cKey; - -- (void)sui_setUnsignedInteger:(NSUInteger)a forKey:(NSString *)cKey; - -- (void)sui_setBool:(BOOL)a forKey:(NSString *)cKey; - -- (void)sui_setFloat:(float)a forKey:(NSString *)cKey; - -- (void)sui_setDouble:(double)a forKey:(NSString *)cKey; - -- (void)sui_setCGFloat:(CGFloat)a forKey:(NSString *)cKey; - -- (void)sui_setPoint:(CGPoint)a forKey:(NSString *)cKey; - -- (void)sui_setSize:(CGSize)a forKey:(NSString *)cKey; - -- (void)sui_setRect:(CGRect)a forKey:(NSString *)cKey; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUISafeAccess.m b/SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUISafeAccess.m deleted file mode 100644 index 513e186..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSDictionary+SUISafeAccess.m +++ /dev/null @@ -1,277 +0,0 @@ -// -// NSDictionary+SUISafeAccess.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "NSDictionary+SUISafeAccess.h" -#import "SUIMacro.h" -#import "NSString+SUIAdditions.h" -#import "NSNumber+SUIAdditions.h" - -@implementation NSDictionary (SUISafeAccess) - - -- (id)sui_objectForKey:(id)cKey -{ - id curValue = [self objectForKey:cKey]; - if (!kNilOrNull(curValue)) { - return curValue; - } - return nil; -} - -- (NSString *)sui_stringForKey:(id)cKey -{ - id curValue = [self sui_objectForKey:cKey]; - if (curValue) { - NSString *curString = [NSString sui_stringFromObject:curValue]; - return curString; - } - return nil; -} - -- (NSNumber *)sui_numberForKey:(id)cKey -{ - id curValue = [self sui_objectForKey:cKey]; - if (curValue) { - if ([curValue isKindOfClass:[NSNumber class]]) { - return curValue; - } - if ([curValue isKindOfClass:[NSString class]]) { - NSNumber *curNumber = ((NSString *)curValue).sui_toNumber; - return curNumber; - } - } - return nil; -} - -- (NSArray *)sui_arrayForKey:(id)cKey -{ - id curValue = [self sui_objectForKey:cKey]; - if (curValue) { - if ([curValue isKindOfClass:[NSArray class]]) { - return curValue; - } - } - return nil; -} - -- (NSMutableArray *)sui_mutableArrayForKey:(id)cKey -{ - id curValue = [self sui_objectForKey:cKey]; - if (curValue) { - if ([curValue isKindOfClass:[NSMutableArray class]]) { - return curValue; - } - } - return nil; -} - -- (NSDictionary *)sui_dictionaryForKey:(id)cKey -{ - id curValue = [self sui_objectForKey:cKey]; - if (curValue) { - if ([curValue isKindOfClass:[NSDictionary class]]) { - return curValue; - } - } - return nil; -} - -- (NSMutableDictionary *)sui_mutableDictionaryForKey:(id)cKey -{ - id curValue = [self sui_objectForKey:cKey]; - if (curValue) { - if ([curValue isKindOfClass:[NSMutableDictionary class]]) { - return curValue; - } - } - return nil; -} - -- (NSInteger)sui_integerForKey:(id)cKey -{ - id curValue = [self sui_objectForKey:cKey]; - if (curValue) { - if ([curValue isKindOfClass:[NSString class]] || - [curValue isKindOfClass:[NSNumber class]]) { - NSInteger curInteger = [curValue integerValue]; - return curInteger; - } - } - return 0; -} - -- (NSUInteger)sui_unsignedIntegerForKey:(id)cKey -{ - id curValue = [self sui_objectForKey:cKey]; - if (curValue) { - if ([curValue isKindOfClass:[NSString class]] || - [curValue isKindOfClass:[NSNumber class]]) { - NSUInteger curUInteger = [curValue unsignedIntegerValue]; - return curUInteger; - } - } - return 0; -} - -- (BOOL)sui_boolForKey:(id)cKey -{ - id curValue = [self sui_objectForKey:cKey]; - if (!kNilOrNull(curValue)) { - if ([curValue isKindOfClass:[NSString class]] || - [curValue isKindOfClass:[NSNumber class]]) { - BOOL curRet = [curValue boolValue]; - return curRet; - } - } - return NO; -} - -- (float)sui_floatForKey:(id)cKey -{ - id curValue = [self sui_objectForKey:cKey]; - if (curValue) { - if ([curValue isKindOfClass:[NSString class]] || - [curValue isKindOfClass:[NSNumber class]]) { - float curFloat = [curValue floatValue]; - return curFloat; - } - } - return 0; -} - -- (double)sui_doubleForKey:(id)cKey -{ - id curValue = [self sui_objectForKey:cKey]; - if (curValue) { - if ([curValue isKindOfClass:[NSString class]] || - [curValue isKindOfClass:[NSNumber class]]) { - double curDouble = [curValue doubleValue]; - return curDouble; - } - } - return 0; -} - -- (CGFloat)sui_CGFloatForKey:(id)cKey -{ - id curValue = [self sui_objectForKey:cKey]; - if (curValue) { - if ([curValue isKindOfClass:[NSString class]]) { - NSNumber *curNumber = ((NSString *)curValue).sui_toNumber; - CGFloat curFloat = curNumber.sui_CGFloatValue; - return curFloat; - } else if ([curValue isKindOfClass:[NSNumber class]]) { - CGFloat curFloat = ((NSNumber *)curValue).sui_CGFloatValue; - return curFloat; - } - } - return 0; -} - -- (CGPoint)sui_pointForKey:(id)cKey -{ - id curValue = [self sui_objectForKey:cKey]; - if (curValue) { - if ([curValue isKindOfClass:[NSString class]]) { - CGPoint curPoint = CGPointFromString(curValue); - return curPoint; - } - } - return CGPointZero; -} - -- (CGSize)sui_sizeForKey:(id)cKey -{ - id curValue = [self sui_objectForKey:cKey]; - if (curValue) { - if ([curValue isKindOfClass:[NSString class]]) { - CGSize curSize = CGSizeFromString(curValue); - return curSize; - } - } - return CGSizeZero; -} - -- (CGRect)sui_rectForKey:(id)cKey -{ - id curValue = [self sui_objectForKey:cKey]; - if (curValue) { - if ([curValue isKindOfClass:[NSString class]]) { - CGRect curRect = CGRectFromString(curValue); - return curRect; - } - } - return CGRectZero; -} - - -@end - - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * NSMutableDictionary - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -@implementation NSMutableDictionary (SUISafeAccess) - - -- (void)sui_setObj:(id)a forKey:(NSString *)cKey -{ - if (a != nil) { - [self setObject:a forKey:cKey]; - } -} - -- (void)sui_setInteger:(NSInteger)a forKey:(NSString *)cKey -{ - [self setObject:@(a) forKey:cKey]; -} - -- (void)sui_setUnsignedInteger:(NSUInteger)a forKey:(NSString *)cKey -{ - [self setObject:@(a) forKey:cKey]; -} - -- (void)sui_setBool:(BOOL)a forKey:(NSString *)cKey -{ - [self setObject:@(a) forKey:cKey]; -} - -- (void)sui_setFloat:(float)a forKey:(NSString *)cKey -{ - [self setObject:@(a) forKey:cKey]; -} - -- (void)sui_setDouble:(double)a forKey:(NSString *)cKey -{ - [self setObject:@(a) forKey:cKey]; -} - -- (void)sui_setCGFloat:(CGFloat)a forKey:(NSString *)cKey -{ - [self setObject:@(a) forKey:cKey]; -} - -- (void)sui_setPoint:(CGPoint)a forKey:(NSString *)cKey -{ - [self setObject:NSStringFromCGPoint(a) forKey:cKey]; -} - -- (void)sui_setSize:(CGSize)a forKey:(NSString *)cKey -{ - [self setObject:NSStringFromCGSize(a) forKey:cKey]; -} - -- (void)sui_setRect:(CGRect)a forKey:(NSString *)cKey -{ - [self setObject:NSStringFromCGRect(a) forKey:cKey]; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSIndexPath+SUIAdditions.h b/SUIMVVMKit/SUIUtils/Foundation/NSIndexPath+SUIAdditions.h deleted file mode 100644 index b28c2b6..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSIndexPath+SUIAdditions.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// NSIndexPath+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface NSIndexPath (SUIAdditions) - - -- (instancetype)sui_previousRow; - -- (instancetype)sui_nextRow; - -- (instancetype)sui_previousSection; - -- (instancetype)sui_nextSection; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSIndexPath+SUIAdditions.m b/SUIMVVMKit/SUIUtils/Foundation/NSIndexPath+SUIAdditions.m deleted file mode 100644 index 7df3bd4..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSIndexPath+SUIAdditions.m +++ /dev/null @@ -1,44 +0,0 @@ -// -// NSIndexPath+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "NSIndexPath+SUIAdditions.h" -#import - -@implementation NSIndexPath (SUIAdditions) - - -- (instancetype)sui_previousRow -{ - NSIndexPath *curIndexPath = [NSIndexPath indexPathForRow:self.row-1 - inSection:self.section]; - return curIndexPath; -} - -- (instancetype)sui_nextRow -{ - NSIndexPath *curIndexPath = [NSIndexPath indexPathForRow:self.row+1 - inSection:self.section]; - return curIndexPath; -} - -- (instancetype)sui_previousSection -{ - NSIndexPath *curIndexPath = [NSIndexPath indexPathForRow:self.row - inSection:self.section-1]; - return curIndexPath; -} - -- (instancetype)sui_nextSection -{ - NSIndexPath *curIndexPath = [NSIndexPath indexPathForRow:self.row - inSection:self.section+1]; - return curIndexPath; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSNumber+SUIAdditions.h b/SUIMVVMKit/SUIUtils/Foundation/NSNumber+SUIAdditions.h deleted file mode 100644 index d5ef967..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSNumber+SUIAdditions.h +++ /dev/null @@ -1,63 +0,0 @@ -// -// NSNumber+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface NSNumber (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Prehash - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Prehash - -@property (readonly,copy) NSDate *sui_toDate; - -@property (readonly,copy) NSString *sui_toString; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * FloatValue - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - CGFloatValue - -@property (readonly) CGFloat sui_CGFloatValue; - -+ (instancetype)sui_numberWithCGFloat:(CGFloat)cValue; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Round - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Round - -- (instancetype)sui_roundWithDigit:(NSUInteger)digit; - -- (instancetype)sui_ceilWithDigit:(NSUInteger)digit; - -- (instancetype)sui_floorWithDigit:(NSUInteger)digit; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * RomanNumeral - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - romanNumeral - -@property (readonly,copy) NSString *sui_toRomanNumeral; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSNumber+SUIAdditions.m b/SUIMVVMKit/SUIUtils/Foundation/NSNumber+SUIAdditions.m deleted file mode 100644 index 5582b51..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSNumber+SUIAdditions.m +++ /dev/null @@ -1,125 +0,0 @@ -// -// NSNumber+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "NSNumber+SUIAdditions.h" - -@implementation NSNumber (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Prehash - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Prehash - -- (NSDate *)sui_toDate -{ - double curTime = [self doubleValue]; - NSDate *curDate = [NSDate dateWithTimeIntervalSince1970:curTime]; - return curDate; -} - -- (NSString *)sui_toString -{ - NSString *curString = [NSString stringWithFormat:@"%@", self]; - return curString; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * FloatValue - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - CGFloatValue - -- (CGFloat)sui_CGFloatValue -{ -#if (CGFLOAT_IS_DOUBLE == 1) - CGFloat curValue = [self doubleValue]; -#else - CGFloat curValue = [self floatValue]; -#endif - return curValue; -} - -+ (instancetype)sui_numberWithCGFloat:(CGFloat)cValue -{ -#if (CGFLOAT_IS_DOUBLE == 1) - NSNumber *curNumber = [[self alloc] initWithDouble:cValue]; -#else - NSNumber *curNumber = [[self alloc] initWithFloat:cValue]; -#endif - return curNumber; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Round - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Round - -- (instancetype)sui_roundWithDigit:(NSUInteger)digit -{ - NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; - [formatter setRoundingMode:NSNumberFormatterRoundHalfUp]; - [formatter setMaximumFractionDigits:digit]; - [formatter setMinimumFractionDigits:digit]; - NSString *curString = [formatter stringFromNumber:self]; - NSNumber *curNumber = [NSNumber numberWithDouble:[curString doubleValue]]; - return curNumber; -} - -- (instancetype)sui_ceilWithDigit:(NSUInteger)digit -{ - NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; - [formatter setRoundingMode:NSNumberFormatterRoundCeiling]; - [formatter setMaximumFractionDigits:digit]; - NSString *curString = [formatter stringFromNumber:self]; - NSNumber *curNumber = [NSNumber numberWithDouble:[curString doubleValue]]; - return curNumber; -} - -- (instancetype)sui_floorWithDigit:(NSUInteger)digit -{ - NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; - [formatter setRoundingMode:NSNumberFormatterRoundFloor]; - [formatter setMaximumFractionDigits:digit]; - NSString *curString = [formatter stringFromNumber:self]; - NSNumber *curNumber = [NSNumber numberWithDouble:[curString doubleValue]]; - return curNumber; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * RomanNumeral - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - romanNumeral - -- (NSString *)sui_toRomanNumeral -{ - NSArray *numerals = [NSArray arrayWithObjects:@"M", @"CM", @"D", @"CD", @"C", @"XC", @"L", @"XL", @"X", @"IX", @"V", @"IV", @"I", nil]; - NSUInteger valueCount = 13; - NSUInteger values[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; - - NSMutableString *numeralString = [NSMutableString string]; - NSInteger curInteger = [self integerValue]; - for (NSUInteger i = 0; i < valueCount; i++) - { - while (curInteger >= values[i]) - { - curInteger -= values[i]; - [numeralString appendString:[numerals objectAtIndex:i]]; - } - } - return numeralString; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSObject+SUIAdditions.h b/SUIMVVMKit/SUIUtils/Foundation/NSObject+SUIAdditions.h deleted file mode 100644 index 47c4d24..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSObject+SUIAdditions.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// NSObject+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface NSObject (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * AssociatedObject - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - AssociatedObject - -- (nullable id)sui_getAssociatedObjectWithKey:(const void *)cKey; - -- (void)sui_setAssociatedAssignObject:(nullable id)cValue key:(const void *)cKey; - -- (void)sui_setAssociatedRetainObject:(nullable id)cValue key:(const void *)cKey; - -- (void)sui_setAssociatedCopyObject:(nullable id)cValue key:(const void *)cKey; - -- (void)sui_setAssociatedObject:(nullable id)cValue key:(const void *)cKey policy:(objc_AssociationPolicy)cPolicy; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * PerformedOnce - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - PerformedOnce - -- (void)sui_performOnce:(void (^)(void))cb key:(NSString *)cKey; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSObject+SUIAdditions.m b/SUIMVVMKit/SUIUtils/Foundation/NSObject+SUIAdditions.m deleted file mode 100644 index 99855b9..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSObject+SUIAdditions.m +++ /dev/null @@ -1,73 +0,0 @@ -// -// NSObject+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "NSObject+SUIAdditions.h" - -@implementation NSObject (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * AssociatedObject - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - AssociatedObject - -- (id)sui_getAssociatedObjectWithKey:(const void *)cKey -{ - return objc_getAssociatedObject(self, cKey); -} - -- (void)sui_setAssociatedAssignObject:(id)cValue key:(const void *)cKey -{ - objc_setAssociatedObject(self, cKey, cValue, OBJC_ASSOCIATION_ASSIGN); -} - -- (void)sui_setAssociatedRetainObject:(id)cValue key:(const void *)cKey -{ - objc_setAssociatedObject(self, cKey, cValue, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -- (void)sui_setAssociatedCopyObject:(id)cValue key:(const void *)cKey -{ - objc_setAssociatedObject(self, cKey, cValue, OBJC_ASSOCIATION_COPY); -} - -- (void)sui_setAssociatedObject:(id)cValue key:(const void *)cKey policy:(objc_AssociationPolicy)cPolicy -{ - objc_setAssociatedObject(self, cKey, cValue, cPolicy); -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * PerformedOnce - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - PerformedOnce - -- (void)sui_performOnce:(void (^)(void))cb key:(NSString *)cKey -{ - NSMutableArray *performedArray = [self sui_performedArray]; - if (![performedArray containsObject:cKey]) - { - [performedArray addObject:cKey]; - cb(); - } -} - -- (NSMutableArray *)sui_performedArray -{ - NSMutableArray *curArray = [self sui_getAssociatedObjectWithKey:_cmd]; - if (curArray) return curArray; - - curArray = [NSMutableArray array]; - [self sui_setAssociatedObject:curArray key:_cmd policy:OBJC_ASSOCIATION_RETAIN_NONATOMIC]; - return curArray; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSString+SUIAdditions.h b/SUIMVVMKit/SUIUtils/Foundation/NSString+SUIAdditions.h deleted file mode 100644 index 27ef48f..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSString+SUIAdditions.h +++ /dev/null @@ -1,117 +0,0 @@ -// -// NSString+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface NSString (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Prehash - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Prehash - -@property (nullable,readonly,copy) NSData *sui_toData; -@property (nullable,readonly,copy) NSURL *sui_toURL; -@property (nullable,readonly,copy) NSURLRequest *sui_toURLRequest; -@property (readonly,copy) NSNumber *sui_toNumber; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Formatter - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Formatter - -+ (nullable NSString *)sui_stringFromObject:(id)cObject; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Appending - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Appending - -- (NSString *)sui_appendingObject:(id)cObject; -- (NSString *)sui_appendingString:(NSString *)cString; -- (NSString *)sui_appendingFormat:(NSString *)cFormat, ... NS_FORMAT_FUNCTION(1,2); - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Contains - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Contains - -- (BOOL)sui_containsObject:(id)cObject; -- (BOOL)sui_containsString:(NSString *)cString; -- (BOOL)sui_isNotEmpty; -- (BOOL)sui_containsChinese; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Delstr - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Delstr - -- (NSString *)sui_delstrBlankInHeadTail; -- (NSString *)sui_delstrBlankAndWrapInHeadTail; -- (NSString *)sui_delstrStringInHeadTail:(NSString *)cString; -- (NSString *)sui_delstrWrapInHeadTail; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Substr - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Substr - -- (NSString *)sui_substrToIndex:(NSUInteger)cIndex; -- (nullable NSString *)sui_substrFromIndex:(NSUInteger)cIndex; -- (nullable NSString *)sui_substrWithRange:(NSRange)cRange; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Replace - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Replace - -- (NSString *)sui_replaceString:(NSString *)cString withString:(NSString *)cReplacement; -- (NSString *)sui_replaceString:(NSString *)cString withString:(NSString *)cReplacement options:(NSStringCompareOptions)cOptions; -- (NSString *)sui_replaceRegex:(NSString *)cRegex withString:(NSString *)cReplacement; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Resource - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Resource - -- (nullable NSString *)sui_resourceNameCompleteOfType:(nullable NSString *)ext; -- (nullable NSString *)sui_resourcePathForMainBundleOfType:(nullable NSString *)ext; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Size - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Size - -- (CGFloat)sui_heightWithFont:(nullable UIFont *)font constrainedToWidth:(CGFloat)width; -- (CGSize)sui_sizeWithFont:(nullable UIFont *)font constrainedToWidth:(CGFloat)width; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSString+SUIAdditions.m b/SUIMVVMKit/SUIUtils/Foundation/NSString+SUIAdditions.m deleted file mode 100644 index 0d0e158..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSString+SUIAdditions.m +++ /dev/null @@ -1,331 +0,0 @@ -// -// NSString+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "NSString+SUIAdditions.h" -#import "SUIMacro.h" -#import "NSArray+SUIAdditions.h" -#import "NSDictionary+SUIAdditions.h" -#import "NSString+SUICrypto.h" -#import "NSString+SUIRegex.h" - -@implementation NSString (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Prehash - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Prehash - -- (NSData *)sui_toData -{ - if (self.length == 0) return nil; - NSData *curData = [self dataUsingEncoding:NSUTF8StringEncoding]; - return curData; -} - -- (NSURL *)sui_toURL -{ - if (self.length == 0) return nil; - NSURL *curURL = [NSURL URLWithString:self]; - if (curURL == nil) { - curURL = [NSURL URLWithString:[self sui_URLEncode]]; - } - return curURL; -} - -- (NSURLRequest *)sui_toURLRequest -{ - if (self.length == 0) return nil; - NSURLRequest *curURLRequest = [NSURLRequest requestWithURL:self.sui_toURL]; - return curURLRequest; -} - -- (NSNumber *)sui_toNumber -{ - NSNumberFormatter *curFormatter = [[NSNumberFormatter alloc] init]; - [curFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; - NSNumber *curNumber = [curFormatter numberFromString:self]; - return curNumber; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Formatter - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Formatter - -+ (NSString *)sui_stringFromObject:(id)cObject -{ - NSString *curStr = nil; - if (kNilOrNull(cObject)) { - SUILogError(@"Object is nil. This may not be what you want."); - } else if ([cObject isKindOfClass:[NSString class]]) { - curStr = cObject; - } else if ([cObject isKindOfClass:[NSNumber class]]) { - NSNumber *curNumber = cObject; - curStr = [curNumber description]; - } else if ([cObject isKindOfClass:[NSURL class]]) { - NSURL *curURL = cObject; - curStr = [curURL absoluteString]; - } else if ([cObject isKindOfClass:[NSArray class]]) { - NSArray *curAry = cObject; - curStr = [curAry sui_toString]; - } else if ([cObject isKindOfClass:[NSDictionary class]]) { - NSDictionary *curDict = cObject; - curStr = [curDict sui_toString]; - } else { - curStr = [cObject description]; - } - return curStr; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Appending - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Appending - -- (NSString *)sui_appendingObject:(id)cObject -{ - NSString *curStr = [NSString sui_stringFromObject:cObject]; - curStr = [self sui_appendingString:curStr]; - return curStr; -} -- (NSString *)sui_appendingString:(NSString *)cString -{ - if (cString.length == 0) return self; - NSString *curStr = [self stringByAppendingString:cString]; - return curStr; -} -- (NSString *)sui_appendingFormat:(NSString *)cFormat, ... -{ - va_list args; - va_start(args, cFormat); - NSString *curStr = [[NSString alloc] initWithFormat:cFormat arguments:args]; - va_end(args); - curStr = [self sui_appendingString:curStr]; - return curStr; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Contains - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Contains - -- (BOOL)sui_containsObject:(id)cObject -{ - NSString *curStr = [NSString sui_stringFromObject:cObject]; - return [self sui_containsString:curStr]; -} -- (BOOL)sui_containsString:(NSString *)cString -{ - if (cString.length == 0) return NO; - - BOOL isContains = ([self rangeOfString:cString].location != NSNotFound); - return isContains; -} -- (BOOL)sui_isNotEmpty -{ - if (kNilOrNull(self)) return NO; - NSString *curStr = [self sui_regex:@"\\S"]; - if (curStr.length == 0) return NO; - return YES; -} -- (BOOL)sui_containsChinese -{ - NSUInteger length = [self length]; - for (NSUInteger i = 0; i < length; i++) { - NSRange range = NSMakeRange(i, 1); - NSString *subString = [self substringWithRange:range]; - const char *cString = [subString UTF8String]; - if (strlen(cString) == 3) { - return YES; - } - } - return NO; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Delstr - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Delstr - -- (NSString *)sui_delstrBlankInHeadTail -{ - NSString *curStr = [self sui_delstrStringInHeadTail:@" "]; - return curStr; -} -- (NSString *)sui_delstrBlankAndWrapInHeadTail -{ - NSString *curBlank = @" "; - NSString *curWrap = @"\n"; - - NSString *curStr = self; - while (1) { - if ([curStr hasPrefix:curBlank]) { - curStr = [curStr substringFromIndex:curBlank.length]; - continue; - } else if ([curStr hasSuffix:curBlank]) { - curStr = [curStr substringToIndex:curStr.length-curBlank.length]; - continue; - } else if ([curStr hasPrefix:curWrap]) { - curStr = [curStr substringFromIndex:curWrap.length]; - continue; - } else if ([curStr hasSuffix:curWrap]) { - curStr = [curStr substringToIndex:curStr.length-curWrap.length]; - continue; - } else { - break; - } - } - return curStr; -} -- (NSString *)sui_delstrStringInHeadTail:(NSString *)cString -{ - if (cString.length == 0) return self; - NSString *curStr = self; - while (1) { - if ([curStr hasPrefix:cString]) { - curStr = [curStr substringFromIndex:cString.length]; - continue; - } else if ([curStr hasSuffix:cString]) { - curStr = [curStr substringToIndex:curStr.length-cString.length]; - continue; - } else { - break; - } - } - return curStr; -} -- (NSString *)sui_delstrWrapInHeadTail -{ - NSString *curStr = [self sui_delstrStringInHeadTail:@"\n"]; - return curStr; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Substr - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Substr - -- (NSString *)sui_substrToIndex:(NSUInteger)cIndex -{ - if (self.length <= cIndex) { - SUILogError(@"substrTo Str ⤭ %@ ⤪ length <= Index ⤭ %zd ⤪", self, cIndex); - return self; - } - return [self substringToIndex:cIndex]; -} -- (NSString *)sui_substrFromIndex:(NSUInteger)cIndex -{ - if (self.length < cIndex) { - SUILogError(@"substrFrom Str ⤭ %@ ⤪ length < Index ⤭ %zd ⤪", self, cIndex); - return nil; - } - return [self substringFromIndex:cIndex]; -} -- (NSString *)sui_substrWithRange:(NSRange)cRange -{ - if (self.length < cRange.location) { - SUILogError(@"substrWithRange Str ⤭ %@ ⤪ length < Range ⤭ %@ ⤪", self, NSStringFromRange(cRange)); - return nil; - } else if (self.length < cRange.location + cRange.length) { - SUILogError(@"substrWithRange Str ⤭ %@ ⤪ length < Range.location+length ⤭ %@ ⤪", self, NSStringFromRange(cRange)); - return [self sui_substrFromIndex:cRange.location]; - } - return [self substringWithRange:cRange]; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Replace - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Replace - -- (NSString *)sui_replaceString:(NSString *)cString withString:(NSString *)cReplacement -{ - if (cString.length == 0) return self; - NSString *curStr = [self stringByReplacingOccurrencesOfString:cString withString:cReplacement]; - return curStr; -} -- (NSString *)sui_replaceString:(NSString *)cString withString:(NSString *)cReplacement options:(NSStringCompareOptions)cOptions -{ - if (cString.length == 0) return self; - NSString *curStr = [self stringByReplacingOccurrencesOfString:cString withString:cReplacement options:cOptions range:NSMakeRange(0, self.length)]; - return curStr; -} -- (NSString *)sui_replaceRegex:(NSString *)cRegex withString:(NSString *)cReplacement -{ - if (cRegex.length == 0) return self; - NSString *curStr = [self stringByReplacingOccurrencesOfString:cRegex withString:cReplacement options:NSRegularExpressionSearch range:NSMakeRange(0, self.length)]; - return curStr; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Resource - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Resource - -- (NSString *)sui_resourceNameCompleteOfType:(nullable NSString *)ext -{ - NSString *curName = nil; - if (ext.length == 0 || [self hasSuffix:ext]) { - curName = self; - } else { - curName = [self stringByAppendingPathExtension:ext]; - } - return curName; -} -- (NSString *)sui_resourcePathForMainBundleOfType:(nullable NSString *)ext -{ - NSString *curName = [self sui_resourceNameCompleteOfType:ext]; - NSString *curPath = [[NSBundle mainBundle] pathForResource:curName ofType:nil];; - return curPath; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Size - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Size - -- (CGFloat)sui_heightWithFont:(UIFont *)font constrainedToWidth:(CGFloat)width -{ - CGFloat curHeight = [self sui_sizeWithFont:font constrainedToWidth:width].height; - return curHeight; -} -- (CGSize)sui_sizeWithFont:(UIFont *)font constrainedToWidth:(CGFloat)width -{ - UIFont *textFont = font ? font : [UIFont systemFontOfSize:[UIFont systemFontSize]]; - NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init]; - paragraph.lineBreakMode = NSLineBreakByWordWrapping; - NSDictionary *attributes = @{NSFontAttributeName: textFont, - NSParagraphStyleAttributeName: paragraph}; - CGSize textSize = [self boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) - options:(NSStringDrawingUsesLineFragmentOrigin) - attributes:attributes - context:nil].size; - CGSize curSize = CGSizeMake(width, ceil(textSize.height)); - return curSize; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSString+SUICrypto.h b/SUIMVVMKit/SUIUtils/Foundation/NSString+SUICrypto.h deleted file mode 100644 index c280394..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSString+SUICrypto.h +++ /dev/null @@ -1,106 +0,0 @@ -// -// NSString+SUICrypto.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface NSString (SUICrypto) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * URL - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - URL - -@property (nullable,readonly,copy) NSString *sui_URLEncode; - -@property (nullable,readonly,copy) NSString *sui_URLDecode; - -- (nullable NSString *)sui_URLEncodeUsingEncoding:(NSStringEncoding)encoding; - -- (nullable NSString *)sui_URLDecodeUsingEncoding:(NSStringEncoding)encoding; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Base64 - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Base64 - -@property (nullable,readonly,copy) NSString *sui_base64Encode; - -@property (nullable,readonly,copy) NSString *sui_base64Decode; - -@property (nullable,readonly,copy) NSData *sui_base64EncodeData; - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * SHA1 MD5 SHA224 SHA256 SHA384 SHA512 - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - SHA1 MD5 SHA224 SHA256 SHA384 SHA512 - -- (nullable NSString *)sui_md5Digest; - -- (nullable NSString *)sui_HMACDigestWithKey:(NSString *)cKey algorithm:(CCHmacAlgorithm)cAlgorithm; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Rc4 - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Rc4 - -- (nullable NSData *)sui_rc4WithKey:(NSString *)cKey; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * AES - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - AES - -- (nullable NSString *)sui_AESEncryptWithKey:(NSString *)cKey andIV:(NSData *)iv; -- (nullable NSString *)sui_AESDecryptWithKey:(NSString *)cKey andIV:(NSData *)iv; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * 3DES - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - 3DES - -- (nullable NSString *)sui_3DESEncryptWithKey:(NSString *)cKey andIV:(NSData *)iv; -- (nullable NSString *)sui_3DESDecryptWithKey:(NSString *)cKey andIV:(NSData *)iv; - - -@end - - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * NSData+SUICrypto - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -@interface NSData (SUICrypto) - - -- (nullable NSData *)sui_AESEncryptWithKey:(NSString *)cKey andIV:(NSData *)iv; - -- (nullable NSData *)sui_AESDecryptWithKey:(NSString *)cKey andIV:(NSData *)iv; - -- (nullable NSData *)sui_3DESEncryptWithKey:(NSString *)cKey andIV:(NSData *)iv; - -- (nullable NSData *)sui_3DESDecryptWithKey:(NSString *)cKey andIV:(NSData *)iv; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSString+SUICrypto.m b/SUIMVVMKit/SUIUtils/Foundation/NSString+SUICrypto.m deleted file mode 100644 index 0e63381..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSString+SUICrypto.m +++ /dev/null @@ -1,365 +0,0 @@ -// -// NSString+SUICrypto.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "NSString+SUICrypto.h" -#import "SUIMacro.h" -#import "NSString+SUIAdditions.h" -#import "NSData+SUIAdditions.h" - -@implementation NSString (SUICrypto) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * URL - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - URL - -- (NSString *)sui_URLEncode -{ - return [self sui_URLEncodeUsingEncoding:NSUTF8StringEncoding]; -} - -- (NSString *)sui_URLDecode -{ - return [self sui_URLDecodeUsingEncoding:NSUTF8StringEncoding]; -} - -- (NSString *)sui_URLEncodeUsingEncoding:(NSStringEncoding)encoding -{ - if (self.length == 0) return nil; - NSData *curData = [self dataUsingEncoding:encoding]; - NSString *curStr = [curData base64EncodedStringWithOptions:0]; - return curStr; -} - -- (NSString *)sui_URLDecodeUsingEncoding:(NSStringEncoding)encoding -{ - if (self.length == 0) return nil; - NSData *curData = [[NSData alloc] initWithBase64EncodedString:self options:0]; - NSString *curStr = [[NSString alloc] initWithData:curData encoding:encoding]; - return curStr; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Base64 - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Base64 - -- (NSString *)sui_base64Encode -{ - if (self.length == 0) return nil; - NSData *curData = [self sui_toData]; - NSString *curStr = [curData base64EncodedStringWithOptions:0]; - return curStr; -} - -- (NSString *)sui_base64Decode -{ - if (self.length == 0) return nil; - NSData *curData = self.sui_base64EncodeData; - NSString *curStr = curData.sui_toUTF8String; - return curStr; -} - -- (NSData *)sui_base64EncodeData -{ - if (self.length == 0) return nil; - NSData *curData = [[NSData alloc] initWithBase64EncodedString:self options:0]; - return curData; -} - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * SHA1 MD5 SHA224 SHA256 SHA384 SHA512 - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - SHA1 MD5 SHA224 SHA256 SHA384 SHA512 - -+ (NSString *)sui_stringFromDigest:(uint8_t *)cDigest length:(int)cLength -{ - NSMutableString *curHash = [[NSMutableString alloc] initWithCapacity:cLength * 2]; - for (int idx=0; idxexp) 贪婪子表达式 - (?-exp) 平衡组 - (?im-nsx:exp) 在子表达式exp中改变处理选项 - (?im-nsx) 为表达式后面的部分改变处理选项 - (?(exp)yes|no) 把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表达式;否则使用no - (?(exp)yes) 同上,只是使用空表达式作为no - (?(name)yes|no) 如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no - (?(name)yes) 同上,只是使用空表达式作为no - - 捕获 - (exp) 匹配exp,并捕获文本到自动命名的组里 - (?exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) - (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号 - 零宽断言 - (?=exp) 匹配exp前面的位置 - (?<=exp) 匹配exp后面的位置 - (?!exp) 匹配后面跟的不是exp的位置 - (? - -NS_ASSUME_NONNULL_BEGIN - -@interface NSString (SUIRegex) - - -- (nullable NSString *)sui_regex:(NSString *)cRegex; - - -- (BOOL)sui_validateByRegex:(NSString *)cRegex; - -- (BOOL)sui_validateNickname; - -- (BOOL)sui_validateMobile; - -- (BOOL)sui_validateIPAddress; - -- (BOOL)sui_validateURL; - -- (BOOL)sui_validateEmail; - -- (BOOL)sui_validateIDCardNumber; - -- (BOOL)sui_validateCarNumber; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Foundation/NSString+SUIRegex.m b/SUIMVVMKit/SUIUtils/Foundation/NSString+SUIRegex.m deleted file mode 100644 index 8337f21..0000000 --- a/SUIMVVMKit/SUIUtils/Foundation/NSString+SUIRegex.m +++ /dev/null @@ -1,99 +0,0 @@ -// -// NSString+SUIRegex.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "NSString+SUIRegex.h" - -@implementation NSString (SUIRegex) - - -- (NSString *)sui_regex:(NSString *)cRegex -{ - if (cRegex.length == 0) return nil; - NSRange curRange = [self rangeOfString:cRegex options:NSRegularExpressionSearch]; - if (curRange.location == NSNotFound) return nil; - NSString *curStr = [self substringWithRange:curRange]; - return curStr; -} - - -- (BOOL)sui_validateByRegex:(NSString *)cRegex -{ - NSPredicate *curPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",cRegex]; - BOOL ret = [curPredicate evaluateWithObject:self]; - return ret; -} - -- (BOOL)sui_validateNickname -{ - NSString *curRegex = @"^[0-9a-zA-Z\u4e00-\u9fa5]+$"; - BOOL ret = [self sui_validateByRegex:curRegex]; - return ret; -} - -- (BOOL)sui_validateMobile -{ - /** - * 手机号以13、15、18、170开头,8个 \d 数字字符 - * 小灵通 区号:010,020,021,022,023,024,025,027,028,029 还有未设置的新区号xxx - */ - NSString *mobileNoRegex = @"^1((3\\d|5[0-35-9]|8[025-9])\\d|70[059])\\d{7}$";//除4以外的所有个位整数,不能使用[^4,\\d]匹配,这里是否iOS Bug? - NSString *phsRegex = @"^0(10|2[0-57-9]|\\d{3})\\d{7,8}$"; - BOOL ret = [self sui_validateByRegex:mobileNoRegex]; - BOOL ret1 = [self sui_validateByRegex:phsRegex]; - return (ret || ret1); -} - -- (BOOL)sui_validateIPAddress -{ - NSString *curRegex = @"^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$"; - BOOL ret = [self sui_validateByRegex:curRegex]; - if (ret) { - NSArray *componds = [self componentsSeparatedByString:@","]; - BOOL v = YES; - for (NSString *s in componds) { - if (s.integerValue > 255) { - v = NO; - break; - } - } - return v; - } - return NO; -} - -- (BOOL)sui_validateURL -{ - NSString *curRegex = @"^((http)|(https))+:[^\\s]+\\.[^\\s]*$"; - BOOL ret = [self sui_validateByRegex:curRegex]; - return ret; -} - -- (BOOL)sui_validateEmail -{ - NSString *curRegex = @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; - BOOL ret = [self sui_validateByRegex:curRegex]; - return ret; -} - -- (BOOL)sui_validateIDCardNumber -{ - NSString *curRegex = @"^(\\d{14}|\\d{17})(\\d|[xX])$"; - BOOL ret = [self sui_validateByRegex:curRegex]; - return ret; -} - -- (BOOL)sui_validateCarNumber -{ - //车牌号:湘K-DE829 香港车牌号码:粤Z-J499港 - NSString *curRegex = @"^[\u4e00-\u9fff]{1}[a-zA-Z]{1}[-][a-zA-Z_0-9]{4}[a-zA-Z_0-9_\u4e00-\u9fff]$";//其中\u4e00-\u9fa5表示unicode编码中汉字已编码部分,\u9fa5-\u9fff是保留部分,将来可能会添加 - BOOL ret = [self sui_validateByRegex:curRegex]; - return ret; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Helper/SUITableHelper.h b/SUIMVVMKit/SUIUtils/Helper/SUITableHelper.h deleted file mode 100644 index 404d7bb..0000000 --- a/SUIMVVMKit/SUIUtils/Helper/SUITableHelper.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// SUITableHelper.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/20. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NSString * __nonnull (^SUITableHelperCellIdentifierBlock)(NSIndexPath *cIndexPath, id model); -typedef void (^SUITableHelperDidSelectBlock)(NSIndexPath *cIndexPath, id model); - -@interface SUITableHelper : NSObject - - -@property (nullable,nonatomic,copy) NSString *cellIdentifier; -- (void)cellMultipleIdentifier:(SUITableHelperCellIdentifierBlock)cb; - -- (void)didSelect:(SUITableHelperDidSelectBlock)cb; - -@property (nonatomic,weak) UITableView *sui_tableView; -@property (nonatomic,strong) NSIndexPath *sui_indexPath; - -- (void)resetDataAry:(NSArray *)newDataAry forSection:(NSUInteger)cSection; -- (void)reloadDataAry:(NSArray *)newDataAry forSection:(NSUInteger)cSection; -- (void)addDataAry:(NSArray *)newDataAry forSection:(NSUInteger)cSection; -- (void)insertData:(id)cModel AtIndex:(NSIndexPath *)cIndexPath; -- (void)deleteDataAtIndex:(NSIndexPath *)cIndexPath; - -- (id)currentModel; -- (id)currentModelAtIndexPath:(NSIndexPath *)cIndexPath; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Helper/SUITableHelper.m b/SUIMVVMKit/SUIUtils/Helper/SUITableHelper.m deleted file mode 100644 index caa3db3..0000000 --- a/SUIMVVMKit/SUIUtils/Helper/SUITableHelper.m +++ /dev/null @@ -1,265 +0,0 @@ -// -// SUITableHelper.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/20. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "SUITableHelper.h" -#import "SUIMacro.h" -#import "UIViewController+SUIAdditions.h" -#import "UITableView+FDTemplateLayoutCell.h" -#import "UITableViewCell+SUIHelper.h" -#import "UITableView+SUIHelper.h" - -@interface SUITableHelper () - -@property (nonatomic,strong) NSMutableArray *dataArray; -@property (nonatomic,copy) SUITableHelperCellIdentifierBlock cellIdentifierBlock; -@property (nonatomic,copy) SUITableHelperDidSelectBlock didSelectBlock; - -@end - -@implementation SUITableHelper - - -- (NSString *)cellIdentifier -{ - if (_cellIdentifier == nil) { - NSString *curVCIdentifier = self.sui_tableView.sui_vc.sui_identifier; - if (curVCIdentifier) { - NSString *curCellIdentifier = gFormat(@"SUI%@Cell", curVCIdentifier); - _cellIdentifier = curCellIdentifier; - } - } - return _cellIdentifier; -} - -- (void)cellMultipleIdentifier:(SUITableHelperCellIdentifierBlock)cb -{ - self.cellIdentifierBlock = cb; -} - - -- (void)didSelect:(SUITableHelperDidSelectBlock)cb -{ - self.didSelectBlock = cb; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * TableView DataSource Delegate - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - TableView DataSource Delegate - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ - NSInteger curNumOfSections = self.dataArray.count; - return curNumOfSections; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - NSInteger curNumOfRows = 0; - if (self.dataArray.count > section) { - NSMutableArray *subDataAry = self.dataArray[section]; - curNumOfRows = subDataAry.count; - } - return curNumOfRows; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - UITableViewCell *curCell = nil; - id curModel = [self currentModelAtIndexPath:indexPath]; - NSString *curCellIdentifier = [self cellIdentifierForRowAtIndexPath:indexPath model:curModel]; - curCell = [tableView dequeueReusableCellWithIdentifier:curCellIdentifier forIndexPath:indexPath]; - SUIAssert(curCell, @"cell if nil Identifier ⤭ %@ ⤪", curCellIdentifier); - - if ([curCell respondsToSelector:@selector(sui_willDisplayWithModel:)]) { - [curCell sui_willDisplayWithModel:curModel]; - } - return curCell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath -{ - CGFloat curHeight = 0; - if (tableView.sui_autoSizingCell) { - id curModel = [self currentModelAtIndexPath:indexPath]; - NSString *curCellIdentifier = [self cellIdentifierForRowAtIndexPath:indexPath model:curModel]; - curHeight = [tableView fd_heightForCellWithIdentifier:curCellIdentifier cacheByIndexPath:indexPath configuration:^(id cell) { - if ([cell respondsToSelector:@selector(sui_willDisplayWithModel:)]) { - [cell sui_willDisplayWithModel:curModel]; - } - }]; - } else { - curHeight = tableView.rowHeight; - } - return curHeight; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - self.sui_indexPath = indexPath; - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.didSelectBlock) { - id curModel = [self currentModelAtIndexPath:indexPath]; - self.didSelectBlock(indexPath, curModel); - } -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Handler - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Handler - -- (NSString *)cellIdentifierForRowAtIndexPath:(NSIndexPath *)cIndexPath model:(id)model -{ - NSString *curCellIdentifier = nil; - if (self.cellIdentifierBlock) { - curCellIdentifier = self.cellIdentifierBlock(cIndexPath, model); - } else { - curCellIdentifier = self.cellIdentifier; - } - return curCellIdentifier; -} - -- (id)currentModel -{ - return [self currentModelAtIndexPath:self.sui_indexPath]; -} - -- (id)currentModelAtIndexPath:(NSIndexPath *)cIndexPath -{ - if (self.dataArray.count > cIndexPath.section) { - NSMutableArray *subDataAry = self.dataArray[cIndexPath.section]; - if (subDataAry.count > cIndexPath.row) { - id curModel = subDataAry[cIndexPath.row]; - return curModel; - } - } - return nil; -} - - -- (void)resetDataAry:(NSArray *)newDataAry forSection:(NSUInteger)cSection -{ - uMainQueue - ( - [self sui_makeUpDataAryForSection:cSection]; - NSMutableArray *subAry = self.dataArray[cSection]; - if (subAry.count) [subAry removeAllObjects]; - if (newDataAry.count) { - [subAry addObjectsFromArray:newDataAry]; - } - [self.sui_tableView reloadData]; - ) -} -- (void)reloadDataAry:(NSArray *)newDataAry forSection:(NSUInteger)cSection -{ - if (newDataAry.count == 0) return; - uMainQueue - ( - NSIndexSet *curIndexSet = [self sui_makeUpDataAryForSection:cSection]; - NSMutableArray *subAry = self.dataArray[cSection]; - if (subAry.count) [subAry removeAllObjects]; - [subAry addObjectsFromArray:newDataAry]; - - [self.sui_tableView beginUpdates]; - if (curIndexSet) { - [self.sui_tableView insertSections:curIndexSet withRowAnimation:UITableViewRowAnimationAutomatic]; - } else { - [self.sui_tableView reloadSections:[NSIndexSet indexSetWithIndex:cSection] withRowAnimation:UITableViewRowAnimationNone]; - } - [self.sui_tableView endUpdates]; - ) -} -- (void)addDataAry:(NSArray *)newDataAry forSection:(NSUInteger)cSection -{ - if (newDataAry.count == 0) return; - uMainQueue - ( - NSIndexSet *curIndexSet = [self sui_makeUpDataAryForSection:cSection]; - NSMutableArray *subAry = self.dataArray[cSection]; - if (curIndexSet) { - [subAry addObjectsFromArray:newDataAry]; - [self.sui_tableView beginUpdates]; - [self.sui_tableView insertSections:curIndexSet withRowAnimation:UITableViewRowAnimationAutomatic]; - [self.sui_tableView endUpdates]; - } else { - __block NSMutableArray *curIndexPaths = [NSMutableArray arrayWithCapacity:newDataAry.count]; - [newDataAry enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - [curIndexPaths addObject:[NSIndexPath indexPathForRow:subAry.count+idx inSection:cSection]]; - }]; - [subAry addObjectsFromArray:newDataAry]; - [self.sui_tableView beginUpdates]; - [self.sui_tableView insertRowsAtIndexPaths:curIndexPaths withRowAnimation:UITableViewRowAnimationAutomatic]; - [self.sui_tableView endUpdates]; - } - ) -} -- (void)insertData:(id)cModel AtIndex:(NSIndexPath *)cIndexPath; -{ - uMainQueue - ( - NSIndexSet *curIndexSet = [self sui_makeUpDataAryForSection:cIndexPath.section]; - NSMutableArray *subAry = self.dataArray[cIndexPath.section]; - if (subAry.count < cIndexPath.row) return; - [subAry insertObject:cModel atIndex:cIndexPath.row]; - if (curIndexSet) { - [self.sui_tableView beginUpdates]; - [self.sui_tableView insertSections:curIndexSet withRowAnimation:UITableViewRowAnimationAutomatic]; - [self.sui_tableView endUpdates]; - } else { - [subAry insertObject:cModel atIndex:cIndexPath.row]; - [self.sui_tableView beginUpdates]; - [self.sui_tableView insertRowsAtIndexPaths:@[cIndexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; - [self.sui_tableView endUpdates]; - } - ) -} -- (void)deleteDataAtIndex:(NSIndexPath *)cIndexPath -{ - uMainQueue - ( - if (self.dataArray.count <= cIndexPath.section) return; - NSMutableArray *subAry = self.dataArray[cIndexPath.section]; - if (subAry.count <= cIndexPath.row) return; - - [subAry removeObjectAtIndex:cIndexPath.row]; - [self.sui_tableView beginUpdates]; - [self.sui_tableView deleteRowsAtIndexPaths:@[cIndexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; - [self.sui_tableView endUpdates]; - ) -} - -- (NSIndexSet *)sui_makeUpDataAryForSection:(NSInteger)cSection -{ - NSMutableIndexSet *curIndexSet = nil; - if (self.dataArray.count <= cSection) { - curIndexSet = [NSMutableIndexSet indexSet]; - for (NSInteger idx=0; idx<(cSection-self.dataArray.count+1); idx++) { - NSMutableArray *subAry = [NSMutableArray array]; - [self.dataArray addObject:subAry]; - [curIndexSet addIndex:cSection-idx]; - } - } - return curIndexSet; -} - - -- (NSMutableArray *)dataArray -{ - if (!_dataArray) { - _dataArray = [NSMutableArray new]; - } - return _dataArray; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Helper/UITableView+SUIHelper.h b/SUIMVVMKit/SUIUtils/Helper/UITableView+SUIHelper.h deleted file mode 100644 index c94b5d5..0000000 --- a/SUIMVVMKit/SUIUtils/Helper/UITableView+SUIHelper.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// UITableView+SUIHelper.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/20. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -@class SUITableHelper; - -NS_ASSUME_NONNULL_BEGIN - -@interface UITableView (SUIHelper) - - -@property (null_resettable,strong) SUITableHelper *sui_tableHelper; - -@property (nonatomic) IBInspectable BOOL sui_autoSizingCell; - -- (void)sui_resetDataAry:(NSArray *)newDataAry; -- (void)sui_resetDataAry:(NSArray *)newDataAry forSection:(NSInteger)cSection; -- (void)sui_reloadDataAry:(NSArray *)newDataAry; -- (void)sui_reloadDataAry:(NSArray *)newDataAry forSection:(NSInteger)cSection; -- (void)sui_addDataAry:(NSArray *)newDataAry; -- (void)sui_addDataAry:(NSArray *)newDataAry forSection:(NSInteger)cSection; -- (void)sui_insertData:(id)cModel AtIndex:(NSIndexPath *)cIndexPath; -- (void)sui_deleteDataAtIndex:(NSIndexPath *)cIndexPath; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Helper/UITableView+SUIHelper.m b/SUIMVVMKit/SUIUtils/Helper/UITableView+SUIHelper.m deleted file mode 100644 index f5db087..0000000 --- a/SUIMVVMKit/SUIUtils/Helper/UITableView+SUIHelper.m +++ /dev/null @@ -1,78 +0,0 @@ -// -// UITableView+SUIHelper.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/20. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "UITableView+SUIHelper.h" -#import "NSObject+SUIAdditions.h" -#import "SUITableHelper.h" - -@implementation UITableView (SUIHelper) - - -- (SUITableHelper *)sui_tableHelper -{ - SUITableHelper *curTableHelper = [self sui_getAssociatedObjectWithKey:@selector(sui_tableHelper)]; - if (curTableHelper) return curTableHelper; - - curTableHelper = [SUITableHelper new]; - self.sui_tableHelper = curTableHelper; - return curTableHelper; -} -- (void)setSui_tableHelper:(SUITableHelper *)sui_tableHelper -{ - [self sui_setAssociatedRetainObject:sui_tableHelper key:@selector(sui_tableHelper)]; - self.delegate = sui_tableHelper; - self.dataSource = sui_tableHelper; - sui_tableHelper.sui_tableView = self; -} - - -- (BOOL)sui_autoSizingCell -{ - return [[self sui_getAssociatedObjectWithKey:@selector(sui_autoSizingCell)] boolValue]; -} -- (void)setSui_autoSizingCell:(BOOL)sui_autoSizingCell -{ - [self sui_setAssociatedRetainObject:@(sui_autoSizingCell) key:@selector(sui_autoSizingCell)]; -} - - -- (void)sui_resetDataAry:(NSArray *)newDataAry -{ - [self sui_resetDataAry:newDataAry forSection:0]; -} -- (void)sui_resetDataAry:(NSArray *)newDataAry forSection:(NSInteger)cSection -{ - [self.sui_tableHelper resetDataAry:newDataAry forSection:cSection]; -} -- (void)sui_reloadDataAry:(NSArray *)newDataAry -{ - [self sui_reloadDataAry:newDataAry forSection:0]; -} -- (void)sui_reloadDataAry:(NSArray *)newDataAry forSection:(NSInteger)cSection -{ - [self.sui_tableHelper reloadDataAry:newDataAry forSection:cSection]; -} -- (void)sui_addDataAry:(NSArray *)newDataAry -{ - [self sui_addDataAry:newDataAry forSection:0]; -} -- (void)sui_addDataAry:(NSArray *)newDataAry forSection:(NSInteger)cSection -{ - [self.sui_tableHelper addDataAry:newDataAry forSection:cSection]; -} -- (void)sui_insertData:(id)cModel AtIndex:(NSIndexPath *)cIndexPath; -{ - [self.sui_tableHelper insertData:cModel AtIndex:cIndexPath]; -} -- (void)sui_deleteDataAtIndex:(NSIndexPath *)cIndexPath -{ - [self.sui_tableHelper deleteDataAtIndex:cIndexPath]; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Helper/UITableViewCell+SUIHelper.h b/SUIMVVMKit/SUIUtils/Helper/UITableViewCell+SUIHelper.h deleted file mode 100644 index 4ca60e4..0000000 --- a/SUIMVVMKit/SUIUtils/Helper/UITableViewCell+SUIHelper.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// UITableViewCell+SUIHelper.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/20. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol SUITableHelperProtocol -@optional - -- (void)sui_willDisplayWithModel:(id)cModel; - -@end - - - -@interface UITableViewCell (SUIHelper) - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Helper/UITableViewCell+SUIHelper.m b/SUIMVVMKit/SUIUtils/Helper/UITableViewCell+SUIHelper.m deleted file mode 100644 index 11e5eb8..0000000 --- a/SUIMVVMKit/SUIUtils/Helper/UITableViewCell+SUIHelper.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// UITableViewCell+SUIHelper.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/20. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "UITableViewCell+SUIHelper.h" - -@implementation UITableViewCell (SUIHelper) - -@end diff --git a/SUIMVVMKit/SUIUtils/SUIUtils.h b/SUIMVVMKit/SUIUtils/SUIUtils.h deleted file mode 100644 index 6cea3a0..0000000 --- a/SUIMVVMKit/SUIUtils/SUIUtils.h +++ /dev/null @@ -1,74 +0,0 @@ -// -// SUIUtils.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/15. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#ifndef SUIUtils_h -#define SUIUtils_h - - -#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0 -#error SUIKitTool doesn't support Deployement Target version < 7.0 -#endif - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Tool - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#import "SUIMacro.h" -#import "SUITool.h" -#import "SUITool+Delay.h" -#import "SUITool+Camera.h" -#import "SUITool+OpenURL.h" -#import "SUITool+FileManager.h" - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Categorie - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -// Foundation - -#import "NSObject+SUIAdditions.h" -#import "NSString+SUIAdditions.h" -#import "NSString+SUICrypto.h" -#import "NSString+SUIRegex.h" -#import "NSData+SUIAdditions.h" -#import "NSDate+SUIAdditions.h" -#import "NSNumber+SUIAdditions.h" -#import "NSArray+SUIAdditions.h" -#import "NSArray+SUISafeAccess.h" -#import "NSDictionary+SUIAdditions.h" -#import "NSDictionary+SUISafeAccess.h" -#import "NSIndexPath+SUIAdditions.h" - - -// UIKit - -#import "UIView+SUIAdditions.h" -#import "UIViewController+SUIAdditions.h" -#import "UINavigationController+SUIAdditions.h" -#import "UITableViewCell+SUIAdditions.h" -#import "UIButton+SUIAdditions.h" -#import "UIControl+SUIAdditions.h" -#import "UILabel+SUIAdditions.h" -#import "UITextView+SUIAdditions.h" -#import "UITextField+SUIAdditions.h" -#import "UIImage+SUIAdditions.h" -#import "UIScrollView+SUIAdditions.h" - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Helper - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#import "SUITableHelper.h" -#import "UITableViewCell+SUIHelper.h" -#import "UITableView+SUIHelper.h" - - -#endif /* SUIUtils_h */ diff --git a/SUIMVVMKit/SUIUtils/Tool/SUIMacro.h b/SUIMVVMKit/SUIUtils/Tool/SUIMacro.h deleted file mode 100644 index 03f5ca8..0000000 --- a/SUIMVVMKit/SUIUtils/Tool/SUIMacro.h +++ /dev/null @@ -1,288 +0,0 @@ -// -// SUIMacro.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/15. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#ifndef SUIMacro_h -#define SUIMacro_h - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Log - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Log - -#ifdef DEBUG -#define NSLog(...) NSLog(__VA_ARGS__); -#else -#define NSLog(...) {} -#endif - -#define uXCODE_COLORS_ESCAPE @"\033[" -#define uXCODE_COLORS_RESET_FG uXCODE_COLORS_ESCAPE @"fg;" -#define uXCODE_COLORS_RESET_BG uXCODE_COLORS_ESCAPE @"bg;" -#define uXCODE_COLORS_RESET uXCODE_COLORS_ESCAPE @";" - -#define SUIExtensionLog(colors, eFormat, format, ...) \ -NSLog((uXCODE_COLORS_ESCAPE colors eFormat format uXCODE_COLORS_RESET), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); -#define SUIExtensionLog2(colors, eFormat, format, ...) \ -NSLog((uXCODE_COLORS_ESCAPE colors eFormat format uXCODE_COLORS_RESET), ##__VA_ARGS__); -#define SUIExtensionLog3(colors, eFormat, format, ...) \ -NSLog((uXCODE_COLORS_ESCAPE colors eFormat uXCODE_COLORS_RESET), __PRETTY_FUNCTION__, __LINE__, #format, format, ##__VA_ARGS__); - -#define SUILog(format, ...) SUIExtensionLog(@"fg0,178,238;", @"\n%s\n<%d> ", format, ##__VA_ARGS__) -#define SUILogInfo(format, ...) SUIExtensionLog2(@"fg0,168,0;", @"\n-> ", format, ##__VA_ARGS__) -#define SUILogError(format, ...) SUIExtensionLog2(@"fg255,41,105;", @"\n## ", format, ##__VA_ARGS__) - -#define SUILogObj(obj) SUIExtensionLog3(@"fg89,89,207;", @"\n%s\n<%d> %s ⤭ %@ ⤪[;", obj) -#define SUILogInteger(integer) SUIExtensionLog3(@"fg89,89,207;", @"\n%s\n<%d> %s ⤭ %zd ⤪[;", integer) -#define SUILogFloat(float) SUIExtensionLog3(@"fg89,89,207;", @"\n%s\n<%d> %s ⤭ %lf ⤪[;", float) -#define SUILogRect(rect) SUIExtensionLog3(@"fg89,89,207;", @"\n%s\n<%d> %s ⤭ %@ ⤪", NSStringFromCGRect(rect)) -#define SUILogSize(size) SUIExtensionLog3(@"fg89,89,207;", @"\n%s\n<%d> %s ⤭ %@ ⤪[;", NSStringFromCGSize(size)) -#define SUILogPoint(point) SUIExtensionLog3(@"fg89,89,207;", @"\n%s\n<%d> %s ⤭ %@ ⤪[;", NSStringFromCGPoint(point)) -#define SUILogEdgeInsets(edgeInsets) SUIExtensionLog3(@"fg89,89,207;", @"\n%s\n<%d> %s ⤭ %@ ⤪[;", NSStringFromUIEdgeInsets(edgeInsets)) -#define SUILogLine SUIExtensionLog(@"fg217,56,41;", @"\n%s\n<%d> ----- ----- ----- -----",) - -#define SUIAssert(condition, format, ...) \ -do { \ -_Pragma("clang diagnostic push") \ -_Pragma("clang diagnostic ignored \"-Wformat-extra-args\"") \ -if ((condition) == NO) \ -SUILogError(format, ##__VA_ARGS__); \ -_Pragma("clang diagnostic pop") \ -} while (0); - -#define SUIAssertParamNotNil(param, format, ...) \ -SUIAssert(kNilOrNull(param) == NO, format, ##__VA_ARGS__) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * k - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - k - -#define kIOSVersion [[[UIDevice currentDevice] systemVersion] floatValue] -#define kAboveIOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) -#define kAboveIOS8 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) -#define kAboveIOS9 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0) - -#define kIPhone4 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO) -#define kIPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO) -#define kIPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO) -#define kIPhone6Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO) -#define kIPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) - -#define kVersion [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] -#define kBuildVersion [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] -#define kAppName [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"] -#define kProjectName [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleExecutableKey] - -#define kScreenWidth [UIScreen mainScreen].bounds.size.width -#define kScreenHeight [UIScreen mainScreen].bounds.size.height -#define kScreenFrame [UIScreen mainScreen].bounds - -// iOS7 @"zh-Hans", @"zh-Hant", ... -// iOS8 @"zh-Hans", @"zh-Hant", @"zh-HK", ... -// iOS9 @"zh-Hans-CN", @"zh-Hant-CN", @"zh-HK", @"zh-TW", ... -#define kLanguage [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0] -#define kHans [kLanguage hasPrefix:@"zh-Hans"] -#define kHant ([kLanguage rangeOfString:@"^(zh-Hant|zh-HK|zh-TW).*$" options:NSRegularExpressionSearch].location != NSNotFound) -#define kHansOrHant (kHans || kHant) - -#define kPathOfDocument [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] -#define kURLOfDocument [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] - -#define kPathOfCaches [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] -#define kPathOfTmp NSTemporaryDirectory() -#define kPathOfHome NSHomeDirectory() - -#define kOpenRemoteNoti ((kAboveIOS8) ? [[UIApplication sharedApplication] isRegisteredForRemoteNotifications] : ([[UIApplication sharedApplication] enabledRemoteNotificationTypes] ? YES : NO)) - -#define kNilOrNull(__ref) (((__ref) == nil) || ([(__ref) isEqual:[NSNull null]])) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * g - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - g - -#define gFormat(__format, ...) [NSString stringWithFormat:__format, ##__VA_ARGS__] -#define gFormatObj(__obj) [NSString stringWithFormat:@"%@", __obj] -#define gFormatInteger(__integer) [NSString stringWithFormat:@"%zd", __integer] -#define gFormatFloat(__float) [NSString stringWithFormat:@"%lf", __float] -#define gPredicate(__format, ...) [NSPredicate predicateWithFormat:__format, ##__VA_ARGS__] - -#define gRGBA(__r,__g,__b,__a) [UIColor colorWithRed:(__r)/255.0f green:(__g)/255.0f blue:(__b)/255.0f alpha:__a] -#define gRGB(__r,__g,__b) gRGBA(__r, __g, __b, 1.0) -// Hex string that looks like @"#FF0000" or @"FF0000" -#define gHexA(__hex, __a) ({unsigned rgbValue = 0; \ -NSString *hexString = [__hex stringByReplacingOccurrencesOfString:@"#" withString:@""]; \ -[[NSScanner scannerWithString:hexString] scanHexInt:&rgbValue]; \ -[UIColor colorWithRed:((rgbValue & 0xFF0000) >> 16)/255.0 green:((rgbValue & 0xFF00) >> 8)/255.0 blue:(rgbValue & 0xFF)/255.0 alpha:__a];}) -#define gHex(__hex) gHexA(__hex, 1.0) -#define gRandomColo [UIColor colorWithRed:gRandomInRange(0, 255)/255.0f green:gRandomInRange(0, 255)/255.0f blue:gRandomInRange(0, 255)/255.0f alpha:1.0f] - -#define gFont(__fontSize) [UIFont systemFontOfSize:__fontSize] -#define gBFont(__fontSize) [UIFont boldSystemFontOfSize:__fontSize] - -#define gImageNamed(__name) [UIImage imageNamed:__name] -#define gImageResource(__name, __type) [UIImage imageWithData:[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:__name ofType:__type]]] - -#define gUserDefaults [NSUserDefaults standardUserDefaults] -#define gUserDefaultsBoolForKey(__key) [gUserDefaults boolForKey:__key] -#define gUserDefaultsObjForKey(__key) [gUserDefaults objectForKey:__key] -#define gUserDefaultsIntegerForKey(__key) [gUserDefaults integerForKey:__key] - -#define gNotiCenter [NSNotificationCenter defaultCenter] -#define gNotiCenterPost(__notiName, __obj) [gNotiCenter postNotificationName:__notiName object:__obj] - -#define gClassName(__obj) [NSString stringWithUTF8String:object_getClassName(__obj)] - -#define gLocalString(__string) NSLocalizedString(__string, nil) -#define gLocalStringFromTable(__string, __fileName) NSLocalizedStringFromTable(__string, __fileName, nil) - -#define gWindow ((UIWindow *)[[[UIApplication sharedApplication] windows] objectAtIndex:0]) -#define gKeyWindow [UIApplication sharedApplication].keyWindow - -#define gStoryboardNamed(__name) [UIStoryboard storyboardWithName:__name bundle:nil] -#define gStoryboardCurrentInstantiateWithStoryboardID(__storyboardID) [self.storyboard instantiateViewControllerWithIdentifier:__storyboardID] -#define gStoryboardInstantiate(__name, __storyboardID) [gStoryboardNamed(__name) instantiateViewControllerWithIdentifier:__storyboardID] -#define gStoryboardInitialViewController(__name) gStoryboardNamed(__name).instantiateInitialViewController - - -#define gRandomInRange(__startIndex, __endIndex) (int)(arc4random_uniform((u_int32_t)(__endIndex-__startIndex+1)) + __startIndex) // __startIndex ~ __endIndex - -#define gAdapt(__length) round( kScreenWidth / 320.0 * __length ) -#define gDegree(__para) __para*M_PI/180.0 - -#define gCurrDict(__obj) NSDictionary *currDict = (NSDictionary *)__obj; -#define gCurrAry(__Obj) NSArray *currAry = (NSArray *)__obj; - -#define gIndexPath(__row, __section) [NSIndexPath indexPathForRow:__row inSection:__section] - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * u - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - u - -#define uWeakSelf typeof(self) __weak weakSelf = self; -#define uStrongSelf typeof(weakSelf) __strong strongSelf = weakSelf; - -#define uWeak(__obj) typeof(__obj) __weak weak_##__obj = __obj; -#define uBlock(__obj) typeof(__obj) __block block_##__obj = __obj; - -//#define uTypeof(__TYPE, __PROPERTY) ({typeof(__TYPE *) __CLASS = __PROPERTY; __CLASS;}) -#define uTypeof(__TYPE, __PROPERTY) ((__TYPE *)__PROPERTY) - -#define uBorder(__view) __view.layer.borderColor=[gRandomColo CGColor];__view.layer.borderWidth=1; - -#define uMainQueue(__stuff) \ -if ([NSThread isMainThread]) { \ -__stuff \ -} else { \ -dispatch_async(dispatch_get_main_queue(), ^{ \ -__stuff \ -}); \ -} - -#define uGlobalQueue(__stuff) { \ -dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ \ -__stuff \ -}); \ -} - -#define uRepeat(__count, __stuff) \ -for (NSInteger idx=0; idx < __count; idx ++) { \ -__stuff \ -} - -#define uForIn(__ary, __declare, __stuff) \ -for (NSInteger idx=0; idx<__ary.count; idx++) { \ -__declare = __ary[idx]; \ -__stuff \ -} - -#define uRegisterRemoteNoti {if (kAboveIOS8) { [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound categories:nil]]; [[UIApplication sharedApplication] registerForRemoteNotifications]; } else { [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound]; }} - -#define uOnceToken(__stuff) \ -{ \ -static dispatch_once_t onceToken;\ -dispatch_once(&onceToken, ^{\ -__stuff \ -});\ -} - -#define uSharedInstance \ -+ (instancetype)sharedInstance { \ -static id sharedSingleton = nil; \ -static dispatch_once_t onceToken; \ -dispatch_once(&onceToken, ^{ \ -sharedSingleton = [[self alloc] init]; \ -}); \ -return sharedSingleton; \ -} - -#define uSharedInstanceWithCommonInit \ -+ (instancetype)sharedInstance { \ -static id sharedSingleton = nil; \ -static dispatch_once_t onceToken; \ -dispatch_once(&onceToken, ^{ \ -sharedSingleton = [[self alloc] init]; \ -[sharedSingleton commonInit]; \ -}); \ -return sharedSingleton; \ -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Warc - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Warc - -#define uWarc - -#if __clang__ -#define __PRAGMA_NO_EXTRA_ARG_WARNINGS_PUSH(__warc) \ -do { \ -_Pragma("clang diagnostic push") \ -_Pragma(__warc) -#define __PRAGMA_NO_EXTRA_ARG_WARNINGS_POP \ -_Pragma("clang diagnostic pop") \ -} while (0); -#else -#define __PRAGMA_NO_EXTRA_ARG_WARNINGS_PUSH -#define __PRAGMA_NO_EXTRA_ARG_WARNINGS_POP -#endif - - -#define uWarcPerformSelector(__stuff) \ -__PRAGMA_NO_EXTRA_ARG_WARNINGS_PUSH("clang diagnostic ignored \"-Warc-performSelector-leaks\"") \ -__stuff \ -__PRAGMA_NO_EXTRA_ARG_WARNINGS_POP - -#define uWarcUnreachable(__stuff) \ -__PRAGMA_NO_EXTRA_ARG_WARNINGS_PUSH("clang diagnostic ignored \"-Wunreachable\"") \ -__stuff \ -__PRAGMA_NO_EXTRA_ARG_WARNINGS_POP - -#define uWarcUnused(__stuff) \ -__PRAGMA_NO_EXTRA_ARG_WARNINGS_PUSH("clang diagnostic ignored \"-Wunused\"") \ -__stuff \ -__PRAGMA_NO_EXTRA_ARG_WARNINGS_POP - -#define uWarcDeprecated(__stuff) \ -__PRAGMA_NO_EXTRA_ARG_WARNINGS_PUSH("clang diagnostic ignored \"-Wdeprecated\"") \ -__stuff \ -__PRAGMA_NO_EXTRA_ARG_WARNINGS_POP - - -#endif /* SUIMacro_h */ diff --git a/SUIMVVMKit/SUIUtils/Tool/SUITool+Camera.h b/SUIMVVMKit/SUIUtils/Tool/SUITool+Camera.h deleted file mode 100644 index ac60b38..0000000 --- a/SUIMVVMKit/SUIUtils/Tool/SUITool+Camera.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// SUITool+Camera.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/15. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "SUITool.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface SUITool (Camera) - - -+ (BOOL)cameraAvailable; - -+ (BOOL)cameraRearAvailable; - -+ (BOOL)cameraFrontAvailable; - -+ (BOOL)photoLibraryAvailable; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Tool/SUITool+Camera.m b/SUIMVVMKit/SUIUtils/Tool/SUITool+Camera.m deleted file mode 100644 index 4b0834f..0000000 --- a/SUIMVVMKit/SUIUtils/Tool/SUITool+Camera.m +++ /dev/null @@ -1,45 +0,0 @@ -// -// SUITool+Camera.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/15. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "SUITool+Camera.h" -#import -#import "SUIMacro.h" - -@implementation SUITool (Camera) - - -+ (BOOL)cameraAvailable -{ - BOOL ret = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]; - SUIAssert(ret, @"Camera unavailable."); - return ret; -} - -+ (BOOL)cameraRearAvailable -{ - BOOL ret = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear]; - SUIAssert(ret, @"Camera rear unavailable."); - return ret; -} - -+ (BOOL)cameraFrontAvailable -{ - BOOL ret = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront]; - SUIAssert(ret, @"Camera front unavailable."); - return ret; -} - -+ (BOOL)photoLibraryAvailable -{ - BOOL ret = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]; - SUIAssert(ret, @"Photo library unavailable."); - return ret; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Tool/SUITool+Delay.h b/SUIMVVMKit/SUIUtils/Tool/SUITool+Delay.h deleted file mode 100644 index 4969622..0000000 --- a/SUIMVVMKit/SUIUtils/Tool/SUITool+Delay.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// SUITool+Delay.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/15. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "SUITool.h" - -NS_ASSUME_NONNULL_BEGIN - -typedef void (^SUIToolDelayTask)(BOOL cancel); - -@interface SUITool (Delay) - - -+ (SUIToolDelayTask)delay:(NSTimeInterval)delay cb:(void (^)(void))completion; - -+ (void)cancelDelayTask:(SUIToolDelayTask)cTask; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Tool/SUITool+Delay.m b/SUIMVVMKit/SUIUtils/Tool/SUITool+Delay.m deleted file mode 100644 index 72ed736..0000000 --- a/SUIMVVMKit/SUIUtils/Tool/SUITool+Delay.m +++ /dev/null @@ -1,47 +0,0 @@ -// -// SUITool+Delay.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/15. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "SUITool+Delay.h" - -@implementation SUITool (Delay) - - -+ (SUIToolDelayTask)delay:(NSTimeInterval)delay cb:(void (^)(void))completion; -{ - __block dispatch_block_t closure = completion; - __block SUIToolDelayTask currTask = nil; - - SUIToolDelayTask delayedBlock = ^(BOOL cancel) { - if (cancel == NO) { - dispatch_async(dispatch_get_main_queue(), closure); - } - closure = nil; - currTask = nil; - }; - - currTask = delayedBlock; - - [self sui_delayExecutive:delay cb:^{ - if (currTask) currTask(NO); - }]; - return currTask; -} - -+ (void)cancelDelayTask:(SUIToolDelayTask)cTask -{ - if (cTask) cTask(YES); -} - -+ (void)sui_delayExecutive:(NSTimeInterval)delayInSeconds cb:(void (^)(void))completionBlock -{ - dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); - dispatch_after(popTime, dispatch_get_main_queue(), completionBlock); -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Tool/SUITool+FileManager.h b/SUIMVVMKit/SUIUtils/Tool/SUITool+FileManager.h deleted file mode 100644 index 7e514a6..0000000 --- a/SUIMVVMKit/SUIUtils/Tool/SUITool+FileManager.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// SUITool+FileManager.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/15. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "SUITool.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface SUITool (FileManager) - - -+ (BOOL)fileCreateDirectory:(NSString *)filePath; - -+ (BOOL)fileExist:(NSString *)filePath; - -+ (BOOL)fileWrite:(NSData *)data toPath:(NSString *)filePath; - -+ (BOOL)fileMove:(NSString *)sourcePath toPath:(NSString *)filePath; - -+ (BOOL)fileCopy:(NSString *)sourcePath toPath:(NSString *)filePath; - -+ (nullable NSData *)fileRead:(NSString *)filePath; - -+ (NSUInteger)fileSize:(NSString *)filePath; - -+ (BOOL)fileDelete:(NSString *)filePath; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Tool/SUITool+FileManager.m b/SUIMVVMKit/SUIUtils/Tool/SUITool+FileManager.m deleted file mode 100644 index aa14fe9..0000000 --- a/SUIMVVMKit/SUIUtils/Tool/SUITool+FileManager.m +++ /dev/null @@ -1,110 +0,0 @@ -// -// SUITool+FileManager.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/15. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "SUITool+FileManager.h" -#import "SUIMacro.h" - -@implementation SUITool (FileManager) - - -+ (BOOL)fileCreateDirectory:(NSString *)filePath -{ - if (![self fileExist:filePath]) { - NSError *anyError = nil; - BOOL ret = [[NSFileManager defaultManager] - createDirectoryAtPath:filePath - withIntermediateDirectories:YES - attributes:nil - error:&anyError]; - SUIAssert(ret, @"file create director Error ⤭ %@ ⤪ At ⤭ %@ ⤪", anyError, filePath); - return ret; - } - return YES; -} - -+ (BOOL)fileExist:(NSString *)filePath -{ - BOOL ret = [[NSFileManager defaultManager] fileExistsAtPath:filePath]; - return ret; -} - -+ (BOOL)fileWrite:(NSData *)data toPath:(NSString *)filePath -{ - NSError *anyError = nil; - BOOL ret = [data writeToFile:filePath - options:NSDataWritingAtomic - error:&anyError]; - SUIAssert(ret, @"file write Error ⤭ %@ ⤪ To ⤭ %@ ⤪", anyError, filePath); - return ret; -} - -+ (BOOL)fileMove:(NSString *)sourcePath toPath:(NSString *)filePath -{ - NSError *anyError = nil; - BOOL ret = [[NSFileManager defaultManager] - moveItemAtPath:sourcePath - toPath:filePath - error:&anyError]; - SUIAssert(ret, @"file move Error ⤭ %@ ⤪ Source ⤭ %@ ⤪ To ⤭ %@ ⤪", anyError, sourcePath, filePath); - return ret; -} - -+ (BOOL)fileCopy:(NSString *)sourcePath toPath:(NSString *)filePath -{ - NSError *anyError = nil; - BOOL ret = [[NSFileManager defaultManager] - copyItemAtPath:sourcePath - toPath:filePath - error:&anyError]; - SUIAssert(ret, @"file copy Error ⤭ %@ ⤪ Source ⤭ %@ ⤪ To ⤭ %@ ⤪", anyError, sourcePath, filePath); - return ret; -} - -+ (NSData *)fileRead:(NSString *)filePath -{ - NSError *anyError = nil; - NSData *readData = [NSData dataWithContentsOfFile:filePath - options:NSDataReadingMappedIfSafe - error:&anyError]; - SUIAssert(!anyError, @"file read Error ⤭ %@ ⤪ At ⤭ %@ ⤪", anyError, filePath); - return readData; -} - -+ (NSUInteger)fileSize:(NSString *)filePath -{ - if ([self fileExist:filePath]) - { - NSError *anyError = nil; - NSDictionary *attributes = [[NSFileManager defaultManager] - attributesOfItemAtPath:filePath - error:&anyError]; - SUIAssert(!anyError, @"file size Error ⤭ %@ ⤪ At ⤭ %@ ⤪", anyError, filePath); - if (!anyError) { - NSInteger fSize = [[attributes objectForKey:NSFileSize] integerValue]; - return fSize; - } - } - return 0; -} - -+ (BOOL)fileDelete:(NSString *)filePath -{ - if ([self fileExist:filePath]) - { - NSError *anyError = nil; - BOOL ret = [[NSFileManager defaultManager] - removeItemAtPath:filePath - error:&anyError]; - SUIAssert(ret, @"file delete Error ⤭ %@ ⤪ At ⤭ %@ ⤪", anyError, filePath); - return ret; - } - return YES; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Tool/SUITool+OpenURL.h b/SUIMVVMKit/SUIUtils/Tool/SUITool+OpenURL.h deleted file mode 100644 index 74c1ec2..0000000 --- a/SUIMVVMKit/SUIUtils/Tool/SUITool+OpenURL.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// SUITool+OpenURL.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/15. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "SUITool.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface SUITool (OpenURL) - - -+ (BOOL)openMail:(NSString *)mail; - -+ (BOOL)openPhone:(NSString *)phone; - -+ (BOOL)openAppStore:(NSString *)appId; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Tool/SUITool+OpenURL.m b/SUIMVVMKit/SUIUtils/Tool/SUITool+OpenURL.m deleted file mode 100644 index 84c9f4a..0000000 --- a/SUIMVVMKit/SUIUtils/Tool/SUITool+OpenURL.m +++ /dev/null @@ -1,41 +0,0 @@ -// -// SUITool+OpenURL.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/15. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "SUITool+OpenURL.h" -#import -#import "SUIMacro.h" - -@implementation SUITool (OpenURL) - - -+ (BOOL)openMail:(NSString *)mail -{ - NSString *curURL = gFormat(@"mailto://%@", mail); - BOOL ret = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:curURL]]; - SUIAssert(ret, @"open mail failed Mail ⤭ %@ ⤪", mail); - return ret; -} - -+ (BOOL)openPhone:(NSString *)phone -{ - NSString *curURL = gFormat(@"telprompt://%@", phone); - BOOL ret = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:curURL]]; - SUIAssert(ret, @"open phone failed Phone ⤭ %@ ⤪", phone); - return ret; -} - -+ (BOOL)openAppStore:(NSString *)appId -{ - NSString *curURL = gFormat(@"itms-apps://itunes.apple.com/app/id%@", appId); - BOOL ret = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:curURL]]; - SUIAssert(ret, @"open app store failed AppId ⤭ %@ ⤪", appId); - return ret; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/Tool/SUITool.h b/SUIMVVMKit/SUIUtils/Tool/SUITool.h deleted file mode 100644 index f15ded2..0000000 --- a/SUIMVVMKit/SUIUtils/Tool/SUITool.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// SUITool.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/15. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, SUILaunchedType) { - SUILaunchedLatestVersion = 0, - SUILaunchedFirstLaunched = 1, - SUILaunchedUpdateVersion = 2 -}; - -@interface SUITool : NSObject - - -+ (SUILaunchedType)launchedType; - -+ (nullable NSString *)previousVersion; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/Tool/SUITool.m b/SUIMVVMKit/SUIUtils/Tool/SUITool.m deleted file mode 100644 index 490c586..0000000 --- a/SUIMVVMKit/SUIUtils/Tool/SUITool.m +++ /dev/null @@ -1,73 +0,0 @@ -// -// SUITool.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/15. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "SUITool.h" -#import "SUIMacro.h" - -NSString *const sui_everLaunched = @"sui_everLaunched"; -NSString *const sui_everVersion = @"sui_everVersion"; - -@interface SUITool () - -@property (nonatomic) SUILaunchedType launchedType; - -@end - -@implementation SUITool - - -uSharedInstanceWithCommonInit - -- (void)commonInit -{ - [self updateVersion]; -} - -- (void)updateVersion -{ - if (gUserDefaultsBoolForKey(sui_everLaunched)) - { - NSString *cVersion = kVersion; - NSString *eVersion = [SUITool previousVersion]; - - if ([eVersion isEqualToString:cVersion]) { - self.launchedType = SUILaunchedLatestVersion; - SUILogInfo(@"ever launched latest-version CurrVersion ⤭ %@ ⤪", cVersion); - } - else - { - [gUserDefaults setObject:cVersion forKey:sui_everVersion]; - [gUserDefaults synchronize]; - - self.launchedType = SUILaunchedUpdateVersion; - SUILogInfo(@"ever launched update-version EverVersion ⤭ %@ ⤪ CurrVersion ⤭ %@ ⤪", eVersion, cVersion); - } - } - else - { - [gUserDefaults setBool:YES forKey:sui_everLaunched]; - [gUserDefaults setObject:kVersion forKey:sui_everVersion]; - [gUserDefaults synchronize]; - - self.launchedType = SUILaunchedFirstLaunched; - SUILogInfo(@"first launched CurrVersion ⤭ %@ ⤪", kVersion); - } -} - -+ (SUILaunchedType)launchedType -{ - return [[self sharedInstance] launchedType]; -} - -+ (NSString *)previousVersion -{ - return gUserDefaultsObjForKey(sui_everVersion); -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/UIKit/UIButton+SUIAdditions.h b/SUIMVVMKit/SUIUtils/UIKit/UIButton+SUIAdditions.h deleted file mode 100644 index 77acc5f..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UIButton+SUIAdditions.h +++ /dev/null @@ -1,95 +0,0 @@ -// -// UIButton+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -@interface UIButton (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Normal - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Normal - -@property (nullable,nonatomic,copy) NSString *sui_normalTitle; -@property (nullable,nonatomic,copy) UIColor *sui_normalTitleColo; -@property (nullable,nonatomic,copy) UIImage *sui_normalImage; -@property (nullable,nonatomic,copy) UIImage *sui_normalBackgroundImage; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Highlighted - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Highlighted - -@property (nullable,nonatomic,copy) NSString *sui_highlightedTitle; -@property (nullable,nonatomic,copy) UIColor *sui_highlightedTitleColo; -@property (nullable,nonatomic,copy) UIImage *sui_highlightedImage; -@property (nullable,nonatomic,copy) UIImage *sui_highlightedBackgroundImage; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Selected - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Selected - -@property (nullable,nonatomic,copy) NSString *sui_selectedTitle; -@property (nullable,nonatomic,copy) UIColor *sui_selectedTitleColo; -@property (nullable,nonatomic,copy) UIImage *sui_selectedImage; -@property (nullable,nonatomic,copy) UIImage *sui_selectedBackgroundImage; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Disabled - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Disabled - -@property (nullable,nonatomic,copy) NSString *sui_disabledTitle; -@property (nullable,nonatomic,copy) UIColor *sui_disabledTitleColo; -@property (nullable,nonatomic,copy) UIImage *sui_disabledImage; -@property (nullable,nonatomic,copy) UIImage *sui_disabledBackgroundImage; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Padding & Insets - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Padding & Insets - -@property (nonatomic) CGFloat sui_padding; // left & right -@property (nonatomic) UIEdgeInsets sui_insets; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * TintColor - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - TintColor - -@property (nullable,nonatomic,copy) IBInspectable UIColor *sui_imageTintColor; - -/** - * set text hex color - */ -@property (nullable,assign,nonatomic) IBInspectable NSString *sui_titleHexColor; - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Resizable - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Resizable - -@property (nonatomic) IBInspectable BOOL sui_resizableImage; -@property (nonatomic) IBInspectable BOOL sui_resizableBackground; - - -@end diff --git a/SUIMVVMKit/SUIUtils/UIKit/UIButton+SUIAdditions.m b/SUIMVVMKit/SUIUtils/UIKit/UIButton+SUIAdditions.m deleted file mode 100644 index 4420cb0..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UIButton+SUIAdditions.m +++ /dev/null @@ -1,301 +0,0 @@ -// -// UIButton+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "UIButton+SUIAdditions.h" -#import "UIImage+SUIAdditions.h" - -@implementation UIButton (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Normal - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Normal - -- (NSString *)sui_normalTitle -{ - return [self titleForState:UIControlStateNormal]; -} -- (void)setSui_normalTitle:(NSString *)sui_normalTitle -{ - [self setTitle:sui_normalTitle forState:UIControlStateNormal]; -} - -- (UIColor *)sui_normalTitleColo -{ - return [self titleColorForState:UIControlStateNormal]; -} -- (void)setSui_normalTitleColo:(UIColor *)sui_normalTitleColo -{ - [self setTitleColor:sui_normalTitleColo forState:UIControlStateNormal]; -} - -- (UIImage *)sui_normalImage -{ - return [self imageForState:UIControlStateNormal]; -} -- (void)setSui_normalImage:(UIImage *)sui_normalImage -{ - [self setImage:sui_normalImage forState:UIControlStateNormal]; -} - -- (UIImage *)sui_normalBackgroundImage -{ - return [self backgroundImageForState:UIControlStateNormal]; -} -- (void)setSui_normalBackgroundImage:(UIImage *)sui_normalBackgroundImage -{ - [self setBackgroundImage:sui_normalBackgroundImage forState:UIControlStateNormal]; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Highlighted - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Highlighted - -- (NSString *)sui_highlightedTitle -{ - return [self titleForState:UIControlStateHighlighted]; -} -- (void)setSui_highlightedTitle:(NSString *)sui_highlightedTitle -{ - [self setTitle:sui_highlightedTitle forState:UIControlStateHighlighted]; -} - -- (UIColor *)sui_highlightedTitleColo -{ - return [self titleColorForState:UIControlStateHighlighted]; -} -- (void)setSui_highlightedTitleColo:(UIColor *)sui_highlightedTitleColo -{ - [self setTitleColor:sui_highlightedTitleColo forState:UIControlStateHighlighted]; -} - -- (UIImage *)sui_highlightedImage -{ - return [self imageForState:UIControlStateHighlighted]; -} -- (void)setSui_highlightedImage:(UIImage *)sui_highlightedImage -{ - [self setImage:sui_highlightedImage forState:UIControlStateHighlighted]; -} - -- (UIImage *)sui_highlightedBackgroundImage -{ - return [self backgroundImageForState:UIControlStateHighlighted]; -} -- (void)setSui_highlightedBackgroundImage:(UIImage *)sui_highlightedBackgroundImage -{ - [self setBackgroundImage:sui_highlightedBackgroundImage forState:UIControlStateHighlighted]; - -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Selected - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Selected - -- (NSString *)sui_selectedTitle -{ - return [self titleForState:UIControlStateSelected]; -} -- (void)setSui_selectedTitle:(NSString *)sui_selectedTitle -{ - [self setTitle:sui_selectedTitle forState:UIControlStateSelected]; -} - -- (UIColor *)sui_selectedTitleColo -{ - return [self titleColorForState:UIControlStateSelected]; -} -- (void)setSui_selectedTitleColo:(UIColor *)sui_selectedTitleColo -{ - [self setTitleColor:sui_selectedTitleColo forState:UIControlStateSelected]; -} - -- (UIImage *)sui_selectedImage -{ - return [self imageForState:UIControlStateSelected]; -} -- (void)setSui_selectedImage:(UIImage *)sui_selectedImage -{ - [self setImage:sui_selectedImage forState:UIControlStateSelected]; -} - -- (UIImage *)sui_selectedBackgroundImage -{ - return [self backgroundImageForState:UIControlStateSelected]; -} -- (void)setSui_selectedBackgroundImage:(UIImage *)sui_selectedBackgroundImage -{ - [self setBackgroundImage:sui_selectedBackgroundImage forState:UIControlStateSelected]; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Disabled - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Disabled - -- (NSString *)sui_disabledTitle -{ - return [self titleForState:UIControlStateDisabled]; -} -- (void)setSui_disabledTitle:(NSString *)sui_disabledTitle -{ - [self setTitle:sui_disabledTitle forState:UIControlStateDisabled]; -} - -- (UIColor *)sui_disabledTitleColo -{ - return [self titleColorForState:UIControlStateDisabled]; -} -- (void)setSui_disabledTitleColo:(UIColor *)sui_disabledTitleColo -{ - [self setTitleColor:sui_disabledTitleColo forState:UIControlStateDisabled]; -} - -- (UIImage *)sui_disabledImage -{ - return [self imageForState:UIControlStateDisabled]; -} -- (void)setSui_disabledImage:(UIImage *)sui_disabledImage -{ - [self setImage:sui_disabledImage forState:UIControlStateDisabled]; -} - -- (UIImage *)sui_disabledBackgroundImage -{ - return [self backgroundImageForState:UIControlStateDisabled]; -} -- (void)setSui_disabledBackgroundImage:(UIImage *)sui_disabledBackgroundImage -{ - [self setBackgroundImage:sui_disabledBackgroundImage forState:UIControlStateDisabled]; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Padding & Insets - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Padding & Insets - -- (CGFloat)sui_padding -{ - UIEdgeInsets curInsets = self.contentEdgeInsets; - if (curInsets.left == curInsets.right) { - return curInsets.left; - } - return 0; -} -- (void)setSui_padding:(CGFloat)sui_padding -{ - self.contentEdgeInsets = UIEdgeInsetsMake(0, sui_padding, 0, sui_padding); - [self sizeToFit]; -} - -- (UIEdgeInsets)sui_insets -{ - return self.contentEdgeInsets; -} -- (void)setSui_insets:(UIEdgeInsets)sui_insets -{ - self.contentEdgeInsets = sui_insets; - [self sizeToFit]; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * TintColor - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - TintColor - -- (UIColor *)sui_imageTintColor -{ - return nil; -} -- (void)setSui_imageTintColor:(UIColor *)sui_imageTintColor -{ - if (sui_imageTintColor) { - UIImage *curImage = [[self currentImage] sui_imageWithGradientTintColor:sui_imageTintColor]; - self.sui_normalImage = curImage; - } -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Resizable - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Resizable - -- (BOOL)sui_resizableImage -{ - self.sui_resizableImage = YES; - return YES; -} -- (void)setSui_resizableImage:(BOOL)sui_resizableImage -{ - if (sui_resizableImage) { - UIEdgeInsets curInsets = UIEdgeInsetsMake(self.currentImage.size.height/2-1, - self.currentImage.size.width/2-1, - self.currentImage.size.height/2, - self.currentImage.size.width/2); - self.sui_normalImage = [self.currentImage resizableImageWithCapInsets:curInsets resizingMode:UIImageResizingModeStretch]; - } -} - -- (BOOL)sui_resizableBackground -{ - self.sui_resizableBackground = YES; - return YES; -} -- (void)setSui_resizableBackground:(BOOL)sui_resizableBackground -{ - if (sui_resizableBackground) { - UIEdgeInsets curInsets = UIEdgeInsetsMake(self.currentBackgroundImage.size.height/2-1, - self.currentBackgroundImage.size.width/2-1, - self.currentBackgroundImage.size.height/2, - self.currentBackgroundImage.size.width/2); - self.sui_normalBackgroundImage = [self.currentBackgroundImage resizableImageWithCapInsets:curInsets resizingMode:UIImageResizingModeStretch]; - } -} - -#pragma mark - hexRgbColor -- (NSString *)sui_titleHexColor -{ - return @"0xffffff"; -} - -- (void)setSui_titleHexColor:(NSString *)sui_titleHexColor { - NSScanner *scanner = [NSScanner scannerWithString:sui_titleHexColor]; - unsigned hexNum; - if (![scanner scanHexInt:&hexNum]) return; - [self setTitleColor:[self sui_colorWithRGBHex:hexNum] forState:UIControlStateNormal]; -} - -- (UIColor *)sui_colorWithRGBHex:(UInt32)hex -{ - int r = (hex >> 16) & 0xFF; - int g = (hex >> 8) & 0xFF; - int b = (hex) & 0xFF; - - return [UIColor colorWithRed:r / 255.0f - green:g / 255.0f - blue:b / 255.0f - alpha:1.0f]; -} - -@end diff --git a/SUIMVVMKit/SUIUtils/UIKit/UIControl+SUIAdditions.h b/SUIMVVMKit/SUIUtils/UIKit/UIControl+SUIAdditions.h deleted file mode 100644 index 12650bc..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UIControl+SUIAdditions.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// UIControl+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface UIControl (SUIAdditions) - - -@property (nonatomic) BOOL sui_enabled; -@property (nonatomic) BOOL sui_selected; -@property (nonatomic) BOOL sui_highlighted; - -- (void)sui_click:(void (^)(void))cb; -- (void)sui_controlEvents:(UIControlEvents)controlEvents cb:(void (^)(void))cb; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/UIKit/UIControl+SUIAdditions.m b/SUIMVVMKit/SUIUtils/UIKit/UIControl+SUIAdditions.m deleted file mode 100644 index 5d05870..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UIControl+SUIAdditions.m +++ /dev/null @@ -1,72 +0,0 @@ -// -// UIControl+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "UIControl+SUIAdditions.h" -#import "NSObject+SUIAdditions.h" - -@implementation UIControl (SUIAdditions) - - -- (BOOL)sui_enabled -{ - return self.enabled; -} -- (void)setSui_enabled:(BOOL)sui_enabled -{ - if (self.enabled != sui_enabled) { - self.enabled = sui_enabled; - } -} - -- (BOOL)sui_selected -{ - return self.selected; -} -- (void)setSui_selected:(BOOL)sui_selected -{ - if (self.selected != sui_selected) { - self.selected = sui_selected; - } -} - -- (BOOL)sui_highlighted -{ - return self.highlighted; -} -- (void)setSui_highlighted:(BOOL)sui_highlighted -{ - if (self.highlighted != sui_highlighted) { - self.highlighted = sui_highlighted; - } -} - - -- (void)sui_click:(void (^)(void))cb -{ - [self sui_setAssociatedCopyObject:cb key:@selector(sui_handleClick)]; - [self addTarget:self action:@selector(sui_handleClick) forControlEvents:UIControlEventTouchUpInside]; -} -- (void)sui_handleClick -{ - void (^clickBlock)(void) = [self sui_getAssociatedObjectWithKey:_cmd]; - if (clickBlock) clickBlock(); -} - -- (void)sui_controlEvents:(UIControlEvents)controlEvents cb:(void (^)(void))cb -{ - [self sui_setAssociatedCopyObject:cb key:@selector(sui_handleControlEvents)]; - [self addTarget:self action:@selector(sui_handleClick) forControlEvents:controlEvents]; -} -- (void)sui_handleControlEvents -{ - void (^controlEventsBlock)(void) = [self sui_getAssociatedObjectWithKey:_cmd]; - if (controlEventsBlock) controlEventsBlock(); -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/UIKit/UIImage+SUIAdditions.h b/SUIMVVMKit/SUIUtils/UIKit/UIImage+SUIAdditions.h deleted file mode 100644 index cfcfc74..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UIImage+SUIAdditions.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// UIImage+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface UIImage (SUIAdditions) - - -- (UIImage * __null_unspecified)sui_imageWithTintColor:(UIColor *)tintColo; // kCGBlendModeDestinationIn -- (UIImage * __null_unspecified)sui_imageWithGradientTintColor:(UIColor *)tintColo; // kCGBlendModeOverlay -- (UIImage * __null_unspecified)sui_imageWithTintColor:(UIColor *)tintColo blendMode:(CGBlendMode)blendMode; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/UIKit/UIImage+SUIAdditions.m b/SUIMVVMKit/SUIUtils/UIKit/UIImage+SUIAdditions.m deleted file mode 100644 index 769ba97..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UIImage+SUIAdditions.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// UIImage+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "UIImage+SUIAdditions.h" - -@implementation UIImage (SUIAdditions) - - -- (UIImage *)sui_imageWithTintColor:(UIColor *)tintColo -{ - return [self sui_imageWithTintColor:tintColo blendMode:kCGBlendModeDestinationIn]; -} - -- (UIImage *)sui_imageWithGradientTintColor:(UIColor *)tintColo -{ - return [self sui_imageWithTintColor:tintColo blendMode:kCGBlendModeOverlay]; -} - -- (UIImage *)sui_imageWithTintColor:(UIColor *)tintColo blendMode:(CGBlendMode)blendMode -{ - //We want to keep alpha, set opaque to NO; Use 0.0f for scale to use the scale factor of the device’s main screen. - UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0f); - [tintColo setFill]; - CGRect bounds = CGRectMake(0, 0, self.size.width, self.size.height); - UIRectFill(bounds); - - //Draw the tinted image in context - [self drawInRect:bounds blendMode:blendMode alpha:1.0f]; - - if (blendMode != kCGBlendModeDestinationIn) { - [self drawInRect:bounds blendMode:kCGBlendModeDestinationIn alpha:1.0f]; - } - - UIImage *tintedImage = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - - return tintedImage; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/UIKit/UILabel+SUIAdditions.h b/SUIMVVMKit/SUIUtils/UIKit/UILabel+SUIAdditions.h deleted file mode 100644 index 114a417..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UILabel+SUIAdditions.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// UILabel+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface UILabel (SUIAdditions) - -/** - * set text hex color - */ -@property (assign,nonatomic) IBInspectable NSString *sui_textHexColor; - -/** - * 为UILabel添加中划线 - * - * @param lineColor 划线颜色 - * @param lineTextColor 划线文本颜色 - * @param range 划线范围 - */ -- (void)sui_addHorizontalLineWithColor:(UIColor *)lineColor lineTextColor:(UIColor *)lineTextColor range:(NSRange)range; - -- (CGFloat)sui_calculateHeight; - -- (CGSize)sui_calculateSize; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/UIKit/UILabel+SUIAdditions.m b/SUIMVVMKit/SUIUtils/UIKit/UILabel+SUIAdditions.m deleted file mode 100644 index 6466195..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UILabel+SUIAdditions.m +++ /dev/null @@ -1,64 +0,0 @@ -// -// UILabel+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "UILabel+SUIAdditions.h" -#import "NSString+SUIAdditions.h" -#import "UIView+SUIAdditions.h" - -@implementation UILabel (SUIAdditions) - - -- (CGFloat)sui_calculateHeight -{ - return [self.text sui_heightWithFont:self.font constrainedToWidth:self.sui_width]; -} - -- (CGSize)sui_calculateSize -{ - return [self.text sui_sizeWithFont:self.font constrainedToWidth:self.sui_width]; -} - -#pragma mark - hexRgbColor - -- (NSString *)sui_textHexColor -{ - return @"0xffffff"; -} - -- (void)setSui_textHexColor:(NSString *)sui_textHexColor { - NSScanner *scanner = [NSScanner scannerWithString:sui_textHexColor]; - unsigned hexNum; - if (![scanner scanHexInt:&hexNum]) return; - self.textColor = [self sui_colorWithRGBHex:hexNum]; -} - -- (UIColor *)sui_colorWithRGBHex:(UInt32)hex -{ - int r = (hex >> 16) & 0xFF; - int g = (hex >> 8) & 0xFF; - int b = (hex) & 0xFF; - - return [UIColor colorWithRed:r / 255.0f - green:g / 255.0f - blue:b / 255.0f - alpha:1.0f]; -} - -- (void)sui_addHorizontalLineWithColor:(UIColor *)lineColor lineTextColor:(UIColor *)lineTextColor range:(NSRange)range -{ - - NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:self.text]; - [attributedString addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:range]; - UIColor *textColor = nil; - lineTextColor == nil ? (textColor = self.textColor) : (textColor = lineTextColor); - [attributedString addAttribute:NSForegroundColorAttributeName value:textColor range:range]; - [attributedString addAttribute:NSStrikethroughColorAttributeName value:lineColor range:range]; - self.attributedText = attributedString; -} - -@end diff --git a/SUIMVVMKit/SUIUtils/UIKit/UINavigationController+SUIAdditions.h b/SUIMVVMKit/SUIUtils/UIKit/UINavigationController+SUIAdditions.h deleted file mode 100644 index eedb141..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UINavigationController+SUIAdditions.h +++ /dev/null @@ -1,52 +0,0 @@ -// -// UINavigationController+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface UINavigationController (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Relationship - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Relationship - -@property (nullable,readonly,copy) __kindof UIViewController *sui_rootVC; - -@property (readonly) BOOL sui_onlyHasRootVC; - -- (nullable __kindof UIViewController *)sui_findVC:(NSString *)className; - -- (nullable __kindof UIViewController *)sui_findReverseVC:(NSString *)className; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * StoryboardLink - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - StoryboardLink - -@property (nullable,nonatomic,copy) IBInspectable NSString *sui_storyboardNameAndID; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Pop - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Pop - -- (nullable NSArray<__kindof UIViewController *> *)sui_popToVC:(NSString *)className animated:(BOOL)animated; -- (nullable NSArray<__kindof UIViewController *> *)sui_popToIndex:(NSUInteger)cIndex animated:(BOOL)animated; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/UIKit/UINavigationController+SUIAdditions.m b/SUIMVVMKit/SUIUtils/UIKit/UINavigationController+SUIAdditions.m deleted file mode 100644 index 4daa89d..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UINavigationController+SUIAdditions.m +++ /dev/null @@ -1,133 +0,0 @@ -// -// UINavigationController+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "UINavigationController+SUIAdditions.h" -#import "SUIMacro.h" -#import "NSArray+SUIAdditions.h" -#import "NSObject+SUIAdditions.h" - -@implementation UINavigationController (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Relationship - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Relationship - -- (UIViewController *)sui_rootVC -{ - if (self.viewControllers.count > 0) { - UIViewController *curVC = [self.viewControllers firstObject]; - return curVC; - } - return nil; -} - -- (BOOL)sui_onlyHasRootVC -{ - if (self.viewControllers.count == 1) { - return YES; - } - return NO; -} - -- (UIViewController *)sui_findVC:(NSString *)className -{ - __block UIViewController *curVC = nil; - [self.viewControllers sui_eachWithStop:^BOOL(__kindof UIViewController * _Nonnull obj, NSUInteger index) { - if ([obj isKindOfClass:NSClassFromString(className)]) { - curVC = obj; - return YES; - } - return NO; - }]; - return curVC; -} - -- (UIViewController *)sui_findReverseVC:(NSString *)className -{ - __block UIViewController *curVC = nil; - [self.viewControllers sui_eachReverseWithStop:^BOOL(__kindof UIViewController * _Nonnull obj, NSUInteger index) { - if ([obj isKindOfClass:NSClassFromString(className)]) { - curVC = obj; - return YES; - } - return NO; - }]; - return curVC; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * StoryboardLink - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - StoryboardLink - -- (NSString *)sui_storyboardNameAndID -{ - return [self sui_getAssociatedObjectWithKey:@selector(sui_storyboardNameAndID)]; -} -- (void)setSui_storyboardNameAndID:(NSString *)sui_storyboardNameAndID -{ - [self sui_setAssociatedCopyObject:sui_storyboardNameAndID key:@selector(sui_storyboardNameAndID)]; - [self sui_setRootViewController]; -} - -- (void)sui_setRootViewController -{ - NSArray *components = [self.sui_storyboardNameAndID componentsSeparatedByString:@"."]; - NSString *curStoryboardName = nil; - NSString *curStoryboardID = nil; - if (components.count > 0) { - curStoryboardName = components[0]; - if (components.count > 1) { - curStoryboardID = components[1]; - } - } - - if (curStoryboardName) { - UIViewController *curRootVC = nil; - if (curStoryboardID) { - curRootVC = gStoryboardInstantiate(curStoryboardName, curStoryboardID); - } else { - curRootVC = gStoryboardInitialViewController(curStoryboardName); - } - SUIAssert(curRootVC, @"check storyboardNameAndID"); - [self setViewControllers:@[curRootVC] animated:NO]; - } -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Pop - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Pop - -- (NSArray *)sui_popToVC:(NSString *)className animated:(BOOL)animated -{ - UIViewController *curVC = [self sui_findReverseVC:className]; - NSArray *curAry = [self popToViewController:curVC animated:animated]; - return curAry; -} - -- (NSArray *)sui_popToIndex:(NSUInteger)cIndex animated:(BOOL)animated -{ - NSUInteger curCount = self.viewControllers.count; - if (cIndex < curCount-1) { - UIViewController *curVC = self.viewControllers[cIndex]; - NSArray *curAry = [self popToViewController:curVC animated:animated]; - return curAry; - } - return self.viewControllers; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/UIKit/UIScrollView+SUIAdditions.h b/SUIMVVMKit/SUIUtils/UIKit/UIScrollView+SUIAdditions.h deleted file mode 100644 index 81bc42a..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UIScrollView+SUIAdditions.h +++ /dev/null @@ -1,67 +0,0 @@ -// -// UIScrollView+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface UIScrollView (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Content - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Content - -@property (nonatomic) CGFloat sui_contentWidth; -@property (nonatomic) CGFloat sui_contentHeight; -@property (nonatomic) CGFloat sui_contentOffsetX; -@property (nonatomic) CGFloat sui_contentOffsetY; - -@property (readonly) CGFloat sui_contentRealTop; -@property (readonly) CGFloat sui_contentRealBottom; -@property (readonly) CGFloat sui_contentRealLeft; -@property (readonly) CGFloat sui_contentRealRight; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Scroll - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Scroll - -@property (readonly) BOOL sui_isScrollToTop; -@property (readonly) BOOL sui_isScrollToBottom; -@property (readonly) BOOL sui_isScrollToLeft; -@property (readonly) BOOL sui_isScrollToRight; - -- (void)sui_scrollToTopAnimated:(BOOL)animated; -- (void)sui_scrollToBottomAnimated:(BOOL)animated; -- (void)sui_scrollToLeftAnimated:(BOOL)animated; -- (void)sui_scrollToRightAnimated:(BOOL)animated; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * PageIndex - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - PageIndex - -@property (readonly) NSUInteger sui_pageIndexVartical; -@property (readonly) NSUInteger sui_pageIndexHorizontal; -@property (readonly) NSUInteger sui_pageTotalVartical; -@property (readonly) NSUInteger sui_pageTotalHorizontal; - -- (void)sui_scrollToPageIndexVartical:(NSUInteger)pageIndex animated:(BOOL)animated; -- (void)sui_scrollToPageIndexHorizontal:(NSUInteger)pageIndex animated:(BOOL)animated; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/UIKit/UIScrollView+SUIAdditions.m b/SUIMVVMKit/SUIUtils/UIKit/UIScrollView+SUIAdditions.m deleted file mode 100644 index d043646..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UIScrollView+SUIAdditions.m +++ /dev/null @@ -1,169 +0,0 @@ -// -// UIScrollView+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "UIScrollView+SUIAdditions.h" -#import "UIView+SUIAdditions.h" - -@implementation UIScrollView (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Content - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Content - -- (CGFloat)sui_contentWidth -{ - return self.contentSize.width; -} -- (void)setSui_contentWidth:(CGFloat)sui_contentWidth -{ - CGSize curSize = self.contentSize; - if (curSize.width != sui_contentWidth) { - curSize.width = sui_contentWidth; - self.contentSize = curSize; - } -} - -- (CGFloat)sui_contentHeight -{ - return self.contentSize.height; -} -- (void)setSui_contentHeight:(CGFloat)sui_contentHeight -{ - CGSize curSize = self.contentSize; - if (curSize.height != sui_contentHeight) { - curSize.height = sui_contentHeight; - self.contentSize = curSize; - } -} - -- (CGFloat)sui_contentOffsetX -{ - return self.contentOffset.x; -} -- (void)setSui_contentOffsetX:(CGFloat)sui_contentOffsetX -{ - CGPoint curPoint = self.contentOffset; - if (curPoint.x != sui_contentOffsetX) { - curPoint.x = sui_contentOffsetX; - self.contentOffset = curPoint; - } -} - -- (CGFloat)sui_contentOffsetY -{ - return self.contentOffset.y; -} -- (void)setSui_contentOffsetY:(CGFloat)sui_contentOffsetY -{ - CGPoint curPoint = self.contentOffset; - if (curPoint.y != sui_contentOffsetY) { - curPoint.y = sui_contentOffsetY; - self.contentOffset = curPoint; - } -} - -- (CGFloat)sui_contentRealTop -{ - return -self.contentInset.top; -} -- (CGFloat)sui_contentRealBottom -{ - return self.contentSize.height + self.contentInset.bottom - self.bounds.size.height; -} -- (CGFloat)sui_contentRealLeft -{ - return -self.contentInset.left; -} -- (CGFloat)sui_contentRealRight -{ - return self.contentSize.width + self.contentInset.right - self.bounds.size.width; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Scroll - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Scroll - -- (BOOL)sui_isScrollToTop -{ - return self.sui_contentOffsetY <= self.sui_contentRealTop; -} -- (BOOL)sui_isScrollToBottom -{ - return self.sui_contentOffsetY >= self.sui_contentRealBottom; -} -- (BOOL)sui_isScrollToLeft -{ - return self.sui_contentOffsetX <= self.sui_contentRealLeft; -} -- (BOOL)sui_isScrollToRight -{ - return self.sui_contentOffsetX >= self.sui_contentRealRight; -} - -- (void)sui_scrollToTopAnimated:(BOOL)animated -{ - [self setContentOffset:CGPointMake(0, self.sui_contentRealTop) animated:animated]; -} -- (void)sui_scrollToBottomAnimated:(BOOL)animated -{ - [self setContentOffset:CGPointMake(0, self.sui_contentRealBottom) animated:animated]; -} -- (void)sui_scrollToLeftAnimated:(BOOL)animated -{ - [self setContentOffset:CGPointMake(self.sui_contentRealLeft, 0) animated:animated]; -} -- (void)sui_scrollToRightAnimated:(BOOL)animated -{ - [self setContentOffset:CGPointMake(self.sui_contentRealRight, 0) animated:animated]; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * PageIndex - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - PageIndex - -- (NSUInteger)sui_pageIndexVartical -{ - NSUInteger curPageIndex = self.sui_contentOffsetY / self.sui_height; - return curPageIndex; -} -- (NSUInteger)sui_pageIndexHorizontal -{ - NSUInteger curPageIndex = self.sui_contentOffsetX / self.sui_width; - return curPageIndex; -} -- (NSUInteger)sui_pageTotalVartical -{ - NSUInteger curPageTotal = self.sui_contentHeight / self.sui_height; - return curPageTotal; -} -- (NSUInteger)sui_pageTotalHorizontal -{ - NSUInteger curPageTotal = self.sui_contentWidth / self.sui_width; - return curPageTotal; -} - -- (void)sui_scrollToPageIndexVartical:(NSUInteger)pageIndex animated:(BOOL)animated -{ - [self setContentOffset:CGPointMake(0, self.sui_height * pageIndex) animated:animated]; -} -- (void)sui_scrollToPageIndexHorizontal:(NSUInteger)pageIndex animated:(BOOL)animated -{ - [self setContentOffset:CGPointMake(self.sui_width * pageIndex, 0) animated:animated]; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.h b/SUIMVVMKit/SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.h deleted file mode 100644 index e1c8d0e..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// UIStoryboardSegue+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/19. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -@interface UIStoryboardSegue (SUIAdditions) - -@end diff --git a/SUIMVVMKit/SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.m b/SUIMVVMKit/SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.m deleted file mode 100644 index c34e864..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// UIStoryboardSegue+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/19. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "UIStoryboardSegue+SUIAdditions.h" -#import "SUIMacro.h" -#import - -@implementation UIStoryboardSegue (SUIAdditions) - -// -//+ (void)load -//{ -// static dispatch_once_t sui_onceToken; -// dispatch_once(&sui_onceToken, ^{ -// -// Method originMethod = class_getInstanceMethod([self class], @selector(perform)); -// Method swizzMthod = class_getInstanceMethod([self class], @selector(sui_perform)); -// -// BOOL didAdd = class_addMethod([self class], @selector(perform), -// method_getImplementation(swizzMthod), method_getTypeEncoding(swizzMthod)); -// -// if (didAdd) { -// class_replaceMethod([self class], @selector(sui_perform), -// method_getImplementation(originMethod),method_getTypeEncoding(originMethod)); -// } else { -// method_exchangeImplementations(originMethod, swizzMthod); -// } -// }); -//} -// -//- (void)sui_perform -//{ -// [self sui_perform]; -// -// SUILogObj(self.sourceViewController); -// SUILogObj(self.destinationViewController); -// SUILogLine -//} - - -@end diff --git a/SUIMVVMKit/SUIUtils/UIKit/UITableViewCell+SUIAdditions.h b/SUIMVVMKit/SUIUtils/UIKit/UITableViewCell+SUIAdditions.h deleted file mode 100644 index e8334f6..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UITableViewCell+SUIAdditions.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// UITableViewCell+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/20. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface UITableViewCell (SUIAdditions) - - -@property (nonatomic,weak) UITableView *sui_tableView; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/UIKit/UITableViewCell+SUIAdditions.m b/SUIMVVMKit/SUIUtils/UIKit/UITableViewCell+SUIAdditions.m deleted file mode 100644 index a27bbff..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UITableViewCell+SUIAdditions.m +++ /dev/null @@ -1,33 +0,0 @@ -// -// UITableViewCell+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/20. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "UITableViewCell+SUIAdditions.h" -#import "NSObject+SUIAdditions.h" -#import "UIView+SUIAdditions.h" - -@implementation UITableViewCell (SUIAdditions) - - -- (UITableView *)sui_tableView -{ - UITableView *curTableView = [self sui_getAssociatedObjectWithKey:@selector(sui_tableView)]; - if (curTableView) return curTableView; - - curTableView = [self sui_findSupview:@"UITableView"]; - if (curTableView) { - self.sui_tableView = curTableView; - } - return curTableView; -} -- (void)setSui_tableView:(UITableView *)sui_tableView -{ - [self sui_setAssociatedAssignObject:sui_tableView key:@selector(sui_tableView)]; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/UIKit/UITextField+SUIAdditions.h b/SUIMVVMKit/SUIUtils/UIKit/UITextField+SUIAdditions.h deleted file mode 100644 index e1e3489..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UITextField+SUIAdditions.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// UITextField+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface UITextField (SUIAdditions) - - -@property (nonatomic) IBInspectable BOOL sui_showKeyboard; - -- (void)sui_dismissKeyboard; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/UIKit/UITextField+SUIAdditions.m b/SUIMVVMKit/SUIUtils/UIKit/UITextField+SUIAdditions.m deleted file mode 100644 index e80373b..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UITextField+SUIAdditions.m +++ /dev/null @@ -1,39 +0,0 @@ -// -// UITextField+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "UITextField+SUIAdditions.h" - -@implementation UITextField (SUIAdditions) - - -- (BOOL)sui_showKeyboard -{ - if (![self isFirstResponder]) - { - return [self becomeFirstResponder]; - } - return YES; -} -- (void)setSui_showKeyboard:(BOOL)sui_showKeyboard -{ - if (sui_showKeyboard && ![self isFirstResponder]) - { - [self becomeFirstResponder]; - } -} - -- (void)sui_dismissKeyboard -{ - if (self.isFirstResponder) - { - [self resignFirstResponder]; - } -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/UIKit/UITextView+SUIAdditions.h b/SUIMVVMKit/SUIUtils/UIKit/UITextView+SUIAdditions.h deleted file mode 100644 index 4603727..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UITextView+SUIAdditions.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// UITextView+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface UITextView (SUIAdditions) - - -@property (nonatomic) IBInspectable BOOL sui_showKeyboard; - -- (void)sui_dismissKeyboard; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/UIKit/UITextView+SUIAdditions.m b/SUIMVVMKit/SUIUtils/UIKit/UITextView+SUIAdditions.m deleted file mode 100644 index 00326eb..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UITextView+SUIAdditions.m +++ /dev/null @@ -1,39 +0,0 @@ -// -// UITextView+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/18. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "UITextView+SUIAdditions.h" - -@implementation UITextView (SUIAdditions) - - -- (BOOL)sui_showKeyboard -{ - if (![self isFirstResponder]) - { - return [self becomeFirstResponder]; - } - return YES; -} -- (void)setSui_showKeyboard:(BOOL)sui_showKeyboard -{ - if (sui_showKeyboard && ![self isFirstResponder]) - { - [self becomeFirstResponder]; - } -} - -- (void)sui_dismissKeyboard -{ - if (self.isFirstResponder) - { - [self resignFirstResponder]; - } -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/UIKit/UIView+SUIAdditions.h b/SUIMVVMKit/SUIUtils/UIKit/UIView+SUIAdditions.h deleted file mode 100644 index f7f7d4d..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UIView+SUIAdditions.h +++ /dev/null @@ -1,119 +0,0 @@ -// -// UIView+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface UIView (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Frame - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Frame - -@property (nonatomic) CGFloat sui_x; -@property (nonatomic) CGFloat sui_y; -@property (nonatomic) CGFloat sui_width; -@property (nonatomic) CGFloat sui_height; -@property (nonatomic) CGPoint sui_origin; -@property (nonatomic) CGSize sui_size; -@property (readonly) CGFloat sui_right; // (x + width). -@property (readonly) CGFloat sui_bottom; // (y + height). -@property (nonatomic) CGFloat sui_centerX; // (x + width/2). -@property (nonatomic) CGFloat sui_centerY; // (y + height/2). - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Constraint - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Constraint - -- (nullable NSLayoutConstraint *)sui_constraintTop; -- (nullable NSLayoutConstraint *)sui_constraintBottom; -- (nullable NSLayoutConstraint *)sui_constraintLeading; -- (nullable NSLayoutConstraint *)sui_constraintTrailing; -- (nullable NSLayoutConstraint *)sui_constraintWidth; -- (nullable NSLayoutConstraint *)sui_constraintHeight; -- (nullable NSLayoutConstraint *)sui_constraintCenterX; -- (nullable NSLayoutConstraint *)sui_constraintCenterY; -- (nullable NSLayoutConstraint *)sui_constraintBaseline; -- (void)sui_layoutPinnedToSuperview; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Nib - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Nib - -@property (nonatomic) IBInspectable BOOL sui_loadNib; - -+ (instancetype)sui_loadInstanceFromNib; -+ (instancetype)sui_loadInstanceFromNibWithName:(NSString *)nibName; -+ (instancetype)sui_loadInstanceFromNibWithName:(NSString *)nibName owner:(nullable id)owner; -+ (instancetype)sui_loadInstanceFromNibWithName:(NSString *)nibName owner:(nullable id)owner bundle:(NSBundle *)bundle; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Layer - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Layer - -@property (nonatomic) IBInspectable CGFloat sui_cornerRadius; // Defaults to zero. - -@property (nonatomic) CGFloat sui_borderWidth; // Defaults to zero. -@property (nonatomic,copy) UIColor *sui_borderColor; // Defaults to opaque black. - -@property (nonatomic,copy) UIColor *sui_shadowColor; // Defaults to opaque black -@property (nonatomic) CGFloat sui_shadowOpacity; // Defaults to 0. [0,1] -@property (nonatomic) CGSize sui_shadowOffset; // Defaults to (0, -3). -@property (nonatomic) CGFloat sui_shadowRadius; // Defaults to 3. -@property (nonatomic) BOOL sui_shadowPath; // Defaults to NO. When using animation set YES. - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Relationship - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Relationship - -@property (nullable,readonly,copy) __kindof UIViewController *sui_currentVC; - -- (nullable __kindof UIView *)sui_findSubview:(NSString *)className; -- (nullable __kindof UIView *)sui_findSupview:(NSString *)className; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * GestureRecognizer - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - GestureRecognizer - -- (void)sui_addTapGes:(void (^)(UITapGestureRecognizer *cTapGes))cb; -- (void)sui_addLongPressGes:(void (^)(UILongPressGestureRecognizer *cLongPressGes))cb; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Snapshot - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Snapshot - -- (nullable UIView *)sui_snapshotView:(BOOL)arterUpdates; -- (null_unspecified UIImage *)sui_snapshotImage:(BOOL)arterUpdates; -- (null_unspecified UIImage *)sui_snapshotWithRenderInContext; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/UIKit/UIView+SUIAdditions.m b/SUIMVVMKit/SUIUtils/UIKit/UIView+SUIAdditions.m deleted file mode 100644 index 1c708b0..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UIView+SUIAdditions.m +++ /dev/null @@ -1,467 +0,0 @@ -// -// UIView+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/16. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "UIView+SUIAdditions.h" -#import "SUIMacro.h" -#import "NSObject+SUIAdditions.h" - -@implementation UIView (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Frame - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Frame - -- (CGFloat)sui_x -{ - return self.frame.origin.x; -} -- (void)setSui_x:(CGFloat)sui_x -{ - CGRect curRect = self.frame; - if (curRect.origin.x != sui_x) { - curRect.origin.x = sui_x; - self.frame = curRect; - } -} - -- (CGFloat)sui_y -{ - return self.frame.origin.y; -} -- (void)setSui_y:(CGFloat)sui_y -{ - CGRect curRect = self.frame; - if (curRect.origin.y != sui_y) { - curRect.origin.y = sui_y; - self.frame = curRect; - } -} - -- (CGFloat)sui_width -{ - return self.frame.size.width; -} -- (void)setSui_width:(CGFloat)sui_width -{ - CGRect curRect = self.frame; - if (curRect.size.width != sui_width) { - curRect.size.width = sui_width; - self.frame = curRect; - } -} - -- (CGFloat)sui_height -{ - return self.frame.size.height; -} -- (void)setSui_height:(CGFloat)sui_height -{ - CGRect curRect = self.frame; - if (curRect.size.height != sui_height) { - curRect.size.height = sui_height; - self.frame = curRect; - } -} - -- (CGPoint)sui_origin -{ - return self.frame.origin; -} -- (void)setSui_origin:(CGPoint)sui_origin -{ - CGRect curRect = self.frame; - if (!CGPointEqualToPoint(curRect.origin, sui_origin)) { - curRect.origin = sui_origin; - self.frame = curRect; - } -} - -- (CGSize)sui_size -{ - return self.frame.size; -} -- (void)setSui_size:(CGSize)sui_size -{ - CGRect curRect = self.frame; - if (!CGSizeEqualToSize(curRect.size, sui_size)) { - curRect.size = sui_size; - self.frame = curRect; - } -} - -- (CGFloat)sui_right -{ - return CGRectGetMaxX(self.frame); -} -- (CGFloat)sui_bottom -{ - return CGRectGetMaxY(self.frame); -} - -- (CGFloat)sui_centerX -{ - return CGRectGetMidX(self.frame); -} -- (void)setSui_centerX:(CGFloat)sui_centerX -{ - CGPoint curCenter = self.center; - if (curCenter.x != sui_centerX) { - curCenter.x = sui_centerX; - self.center = curCenter; - } -} -- (CGFloat)sui_centerY -{ - return CGRectGetMidY(self.frame); -} -- (void)setSui_centerY:(CGFloat)sui_centerY -{ - CGPoint curCenter = self.center; - if (curCenter.y != sui_centerY) { - curCenter.y = sui_centerY; - self.center = curCenter; - } -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Constraint - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Constraint - -- (NSLayoutConstraint *)sui_constraintForAttribute:(NSLayoutAttribute)attribute -{ - NSArray *constraintArray = nil; - if (attribute == NSLayoutAttributeWidth || attribute == NSLayoutAttributeHeight) { - constraintArray = [self constraints]; - } else { - constraintArray = [self.superview constraints]; - } - - NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstAttribute = %d && (firstItem = %@ || secondItem = %@)", attribute, self, self]; - NSArray *fillteredArray = [constraintArray filteredArrayUsingPredicate:predicate]; - if (fillteredArray.count) { - NSLayoutConstraint *curConstraint = fillteredArray.firstObject; - return curConstraint; - } - return nil; -} - -- (NSLayoutConstraint *)sui_constraintTop -{ - return [self sui_constraintForAttribute:NSLayoutAttributeTop]; -} -- (NSLayoutConstraint *)sui_constraintBottom -{ - return [self sui_constraintForAttribute:NSLayoutAttributeBottom]; -} -- (NSLayoutConstraint *)sui_constraintLeading -{ - return [self sui_constraintForAttribute:NSLayoutAttributeLeft]; -} -- (NSLayoutConstraint *)sui_constraintTrailing -{ - return [self sui_constraintForAttribute:NSLayoutAttributeRight]; -} -- (NSLayoutConstraint *)sui_constraintWidth -{ - return [self sui_constraintForAttribute:NSLayoutAttributeWidth]; -} -- (NSLayoutConstraint *)sui_constraintHeight -{ - return [self sui_constraintForAttribute:NSLayoutAttributeHeight]; -} -- (NSLayoutConstraint *)sui_constraintCenterX -{ - return [self sui_constraintForAttribute:NSLayoutAttributeCenterX]; -} -- (NSLayoutConstraint *)sui_constraintCenterY -{ - return [self sui_constraintForAttribute:NSLayoutAttributeCenterY]; -} -- (NSLayoutConstraint *)sui_constraintBaseline -{ - return [self sui_constraintForAttribute:NSLayoutAttributeBaseline]; -} -- (void)sui_layoutPinnedToSuperview -{ - SUIAssert(self.superview, @"no superview ⤭ %@ ⤪", self); - self.translatesAutoresizingMaskIntoConstraints = NO; - [self.superview addConstraints: - [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[self]-0-|" - options:0 - metrics:nil - views:NSDictionaryOfVariableBindings(self)]]; - [self.superview addConstraints: - [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[self]-0-|" - options:0 - metrics:nil - views:NSDictionaryOfVariableBindings(self)]]; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Nib - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Nib - -- (BOOL)sui_loadNib -{ - UIView *curMainView = [self sui_mainView]; - if (!curMainView) { - [self setSui_loadNib:YES]; - } - return YES; -} -- (void)setSui_loadNib:(BOOL)sui_loadNib -{ - if (sui_loadNib) { - UIView *curMainView = [self sui_mainView]; - if (!curMainView) { - curMainView = [UIView sui_loadInstanceFromNib]; - curMainView.frame = self.bounds; - curMainView.backgroundColor = [UIColor clearColor]; - [self setSui_mainView:curMainView]; - [self addSubview:curMainView]; - [curMainView sui_layoutPinnedToSuperview]; - } - } else { - [self setSui_mainView:nil]; - } -} - -- (instancetype)sui_mainView -{ - return [self sui_getAssociatedObjectWithKey:@selector(sui_mainView)]; -} -- (void)setSui_mainView:(UIView *)sui_mainView -{ - [self sui_setAssociatedRetainObject:sui_mainView key:@selector(sui_mainView)]; -} - -+ (instancetype)sui_loadInstanceFromNib -{ - return [self sui_loadInstanceFromNibWithName:gClassName(self)]; -} -+ (instancetype)sui_loadInstanceFromNibWithName:(NSString *)nibName -{ - return [self sui_loadInstanceFromNibWithName:nibName owner:nil]; -} -+ (instancetype)sui_loadInstanceFromNibWithName:(NSString *)nibName owner:(id)owner -{ - return [self sui_loadInstanceFromNibWithName:nibName owner:nil bundle:[NSBundle mainBundle]]; -} -+ (instancetype)sui_loadInstanceFromNibWithName:(NSString *)nibName owner:(id)owner bundle:(NSBundle *)bundle -{ - NSArray *nibViews = [bundle loadNibNamed:nibName owner:owner options:nil]; - UIView *curMainView = nil; - for (id curObj in nibViews) { - if ([curObj isKindOfClass:[self class]]) { - curMainView = curObj; - break; - } - } - return curMainView; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Layer - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Layer - -- (CGFloat)sui_cornerRadius -{ - return self.layer.cornerRadius; -} -- (void)setSui_cornerRadius:(CGFloat)sui_cornerRadius -{ - self.layer.cornerRadius = sui_cornerRadius; - self.layer.masksToBounds = (sui_cornerRadius > 0); -} - -- (CGFloat )sui_borderWidth -{ - return self.layer.borderWidth; -} -- (void)setSui_borderWidth:(CGFloat)sui_borderWidth -{ - self.layer.borderWidth = sui_borderWidth; -} - -- (UIColor *)sui_borderColor -{ - return [UIColor colorWithCGColor:self.layer.borderColor]; -} -- (void)setSui_borderColor:(UIColor *)sui_borderColor -{ - self.layer.borderColor = [sui_borderColor CGColor]; -} - -- (UIColor *)sui_shadowColor -{ - return [UIColor colorWithCGColor:self.layer.shadowColor]; -} -- (void)setSui_shadowColor:(UIColor *)sui_shadowColor -{ - self.layer.shadowColor = [sui_shadowColor CGColor]; -} - -- (CGFloat)sui_shadowOpacity -{ - return self.layer.shadowOpacity; -} -- (void)setSui_shadowOpacity:(CGFloat)sui_shadowOpacity -{ - self.layer.shadowOpacity = sui_shadowOpacity; -} - -- (CGSize)sui_shadowOffset -{ - return self.layer.shadowOffset; -} -- (void)setSui_shadowOffset:(CGSize)sui_shadowOffset -{ - self.layer.shadowOffset = sui_shadowOffset; -} - -- (CGFloat)sui_shadowRadius -{ - return self.layer.shadowRadius; -} -- (void)setSui_shadowRadius:(CGFloat)sui_shadowRadius -{ - self.layer.shadowRadius = sui_shadowRadius; -} - -- (BOOL)sui_shadowPath -{ - if (self.layer.shadowRadius) return YES; - return NO; -} -- (void)setSui_shadowPath:(BOOL)sui_shadowPath -{ - self.layer.shadowPath = [[UIBezierPath bezierPathWithRect:self.layer.bounds] CGPath]; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Relationship - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Relationship - -- (UIViewController *)sui_currentVC -{ - Class aClass = NSClassFromString(@"UIViewController"); - for (UIView *next = [self superview]; next; next = next.superview) { - UIResponder *nextResponder = [next nextResponder]; - if ([nextResponder isKindOfClass:aClass]) { - return (UIViewController *)nextResponder; - } - } - return nil; -} - -- (UIView *)sui_findSubview:(NSString *)className -{ - for (UIView *subView in self.subviews) { - if ([subView isKindOfClass:NSClassFromString(className)]) { - return subView; - } - } - return nil; -} -- (UIView *)sui_findSupview:(NSString *)className; -{ - for (UIView *next = [self superview]; next; next = next.superview) { - UIView *curView = [next superview]; - if ([curView isKindOfClass:NSClassFromString(className)]) { - return curView; - } - } - return nil; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * GestureRecognizer - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - GestureRecognizer - -- (void)sui_addTapGes:(void (^)(UITapGestureRecognizer *cTapGes))cb -{ - if (!self.userInteractionEnabled) self.userInteractionEnabled = !self.userInteractionEnabled; - UITapGestureRecognizer *curGesture = [self sui_getAssociatedObjectWithKey:_cmd]; - if (!curGesture) { - curGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(sui_handleTapGes:)]; - [self addGestureRecognizer:curGesture]; - [self sui_setAssociatedRetainObject:curGesture key:_cmd]; - } - [self sui_setAssociatedCopyObject:cb key:@selector(sui_handleTapGes:)]; -} -- (void)sui_handleTapGes:(UITapGestureRecognizer *)tapGes -{ - void (^gesBlock)(UITapGestureRecognizer *cTapGes) = [self sui_getAssociatedObjectWithKey:_cmd]; - if (gesBlock) gesBlock(tapGes); -} - -- (void)sui_addLongPressGes:(void (^)(UILongPressGestureRecognizer *cLongPressGes))cb -{ - if (!self.userInteractionEnabled) self.userInteractionEnabled = !self.userInteractionEnabled; - UILongPressGestureRecognizer *curGesture = [self sui_getAssociatedObjectWithKey:_cmd]; - if (!curGesture) { - curGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(sui_handleLongPressGes:)]; - [self addGestureRecognizer:curGesture]; - [self sui_setAssociatedRetainObject:curGesture key:_cmd]; - } - [self sui_setAssociatedCopyObject:cb key:@selector(sui_handleLongPressGes:)]; -} -- (void)sui_handleLongPressGes:(UILongPressGestureRecognizer *)longPressGes -{ - void (^gesBlock)(UILongPressGestureRecognizer *cLongPressGes) = [self sui_getAssociatedObjectWithKey:_cmd]; - if (gesBlock) gesBlock(longPressGes); -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Snapshot - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Snapshot - -- (UIView *)sui_snapshotView:(BOOL)arterUpdates -{ - return [self snapshotViewAfterScreenUpdates:arterUpdates]; -} -- (UIImage *)sui_snapshotImage:(BOOL)arterUpdates -{ - UIGraphicsBeginImageContextWithOptions(self.bounds.size, YES, 0.0); - [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:arterUpdates]; - UIImage *curImage = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - return curImage; -} -- (UIImage *)sui_snapshotWithRenderInContext -{ - UIGraphicsBeginImageContextWithOptions(self.bounds.size, YES, 0.0); - [self.layer renderInContext:UIGraphicsGetCurrentContext()]; - UIImage *curImage = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - return curImage; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/UIKit/UIViewController+SUIAdditions.h b/SUIMVVMKit/SUIUtils/UIKit/UIViewController+SUIAdditions.h deleted file mode 100644 index b642809..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UIViewController+SUIAdditions.h +++ /dev/null @@ -1,94 +0,0 @@ -// -// UIViewController+SUIAdditions.h -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/17. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import - -typedef NS_ENUM(NSInteger, SUISegueType) { - SUISegueTypePush = 0, - SUISegueTypeModal = 1 -}; - -NS_ASSUME_NONNULL_BEGIN - -@interface UIViewController (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Relationship - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Relationship - -@property (nullable,readonly,copy) NSString *sui_identifier; -@property (nullable,nonatomic,strong) __kindof UITableView *sui_tableView; -@property (nullable,nonatomic,weak) __kindof UIViewController *sui_sourceVC; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * NavBack - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - NavBack - -- (IBAction)sui_backToLast; -- (IBAction)sui_backToRoot; - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * StoryboardLink - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - StoryboardLink - -- (void)sui_storyboardSegueWithIdentifier:(NSString *)cIdentifier; -- (void)sui_storyboardInstantiate:(NSString *)sui_storyboardNameAndID; -- (void)sui_storyboardInstantiate:(NSString *)sui_storyboardNameAndID segueType:(SUISegueType)cType; -- (void)sui_storyboardInstantiateWithStoryboard:(UIStoryboard *)cStoryboard storyboardID:(nullable NSString *)cStoryboardID segueType:(SUISegueType)cType; - -- (void)sui_prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender; - -/** - * 返回storybosrd中指定identifer的控制器 - * - * @param storyboardName 控制器所在的storyboard - * @param identifier 控制器在storyboard中指定的标识符 - * - * @return 指定identifer的控制器 - */ -+ (__kindof UIViewController *)sui_viewControllerWithStoryboard:(nullable NSString *)storyboard identifier:(NSString *)identifier; - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Geometry - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Geometry - -@property (readonly) CGFloat sui_opaqueNavBarHeight; -@property (readonly) CGFloat sui_translucentNavBarHeight; -@property (readonly) CGFloat sui_opaqueTabBarHeight; -@property (readonly) CGFloat sui_translucentTabBarHeight; -@property (readonly) CGRect sui_viewFrame; - - -@end - - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * UITableView - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -@interface UITableView (SUIViewController) - - -@property (nullable,nonatomic,weak) UIViewController *sui_vc; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SUIMVVMKit/SUIUtils/UIKit/UIViewController+SUIAdditions.m b/SUIMVVMKit/SUIUtils/UIKit/UIViewController+SUIAdditions.m deleted file mode 100644 index cd31088..0000000 --- a/SUIMVVMKit/SUIUtils/UIKit/UIViewController+SUIAdditions.m +++ /dev/null @@ -1,298 +0,0 @@ -// -// UIViewController+SUIAdditions.m -// SUIUtilsDemo -// -// Created by RandomSuio on 16/2/17. -// Copyright © 2016年 RandomSuio. All rights reserved. -// - -#import "UIViewController+SUIAdditions.h" -#import "SUIMacro.h" -#import "UIView+SUIAdditions.h" -#import "NSObject+SUIAdditions.h" -#import "NSString+SUIRegex.h" - -@implementation UIViewController (SUIAdditions) - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Relationship - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Relationship - -- (NSString *)sui_identifier -{ - NSString *curIdentifier = [self sui_getAssociatedObjectWithKey:_cmd]; - if (curIdentifier) return curIdentifier; - - NSString *curClassName = NSStringFromClass([self class]); - curIdentifier = [curClassName sui_regex:@"(?<=^SUI)\\S+(?=VC$)"]; - SUIAssert(curIdentifier, @"className should prefix with 'SUI' and suffix with 'VC'"); - - if (!kNilOrNull(curClassName)) { - [self sui_setAssociatedCopyObject:curClassName key:_cmd]; - } - return curIdentifier; -} - -- (UITableView *)sui_tableView -{ - UITableView *curTableView = [self sui_getAssociatedObjectWithKey:@selector(sui_tableView)]; - if (curTableView) return curTableView; - - if ([self isKindOfClass:[UITableViewController class]]) { - curTableView = (UITableView *)self.view; - } else { - curTableView = [self.view sui_findSubview:@"UITableView"]; - } - - if (curTableView) self.sui_tableView = curTableView; - return curTableView; -} -- (void)setSui_tableView:(UITableView *)sui_tableView -{ - sui_tableView.sui_vc = self; - [self sui_setAssociatedRetainObject:sui_tableView key:@selector(sui_tableView)]; -} - -- (UIViewController *)sui_sourceVC -{ - __block UIViewController *curVC = [self sui_getAssociatedObjectWithKey:@selector(sui_sourceVC)]; - if (curVC) return curVC; - - if (self.navigationController) { - __block BOOL curFlag = NO; - [self.navigationController.viewControllers enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (curFlag) { - curVC = obj; - self.sui_sourceVC = curVC; - *stop = YES; - } - if (obj == self) { - curFlag = YES; - } - }]; - } - return curVC; -} -- (void)setSui_sourceVC:(UIViewController *)sui_sourceVC -{ - [self sui_setAssociatedAssignObject:sui_sourceVC key:@selector(sui_sourceVC)]; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * NavBack - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - NavBack - -- (IBAction)sui_popToLastVC:(UIStoryboardSegue *)unwindSegue {} - -- (IBAction)sui_backToLast -{ - if (self.navigationController) { - if (self.navigationController.viewControllers.count == 1) { - [self.navigationController dismissViewControllerAnimated:YES completion:^{ - }]; - } else { - [self.navigationController popViewControllerAnimated:YES]; - } - } else { - [self dismissViewControllerAnimated:YES completion:^{ - }]; - } -} - -- (IBAction)sui_backToRoot -{ - [self.navigationController popToRootViewControllerAnimated:YES]; -} - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * StoryboardLink - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - StoryboardLink - -- (void)sui_storyboardSegueWithIdentifier:(NSString *)cIdentifier -{ - [self performSegueWithIdentifier:cIdentifier sender:self]; -} -- (void)sui_storyboardInstantiate:(NSString *)sui_storyboardNameAndID -{ - [self sui_storyboardInstantiate:sui_storyboardNameAndID segueType:SUISegueTypePush]; -} -- (void)sui_storyboardInstantiate:(NSString *)sui_storyboardNameAndID segueType:(SUISegueType)cType -{ - NSArray *components = [sui_storyboardNameAndID componentsSeparatedByString:@"."]; - NSString *curStoryboardName = nil; - NSString *curStoryboardID = nil; - if (components.count == 1) { - curStoryboardID = components[0]; - } else if (components.count > 1) { - curStoryboardName = components[0]; - curStoryboardID = components[1]; - } - - UIStoryboard *curStoryboard = nil; - if (curStoryboardName) { - curStoryboard = gStoryboardNamed(curStoryboardName); - } else { - curStoryboard = self.storyboard; - } - [self sui_storyboardInstantiateWithStoryboard:curStoryboard storyboardID:curStoryboardID segueType:cType]; -} -- (void)sui_storyboardInstantiateWithStoryboard:(UIStoryboard *)cStoryboard storyboardID:(NSString *)cStoryboardID segueType:(SUISegueType)cType -{ - UIViewController *curVC = nil; - if (cStoryboardID) { - curVC = [cStoryboard instantiateViewControllerWithIdentifier:cStoryboardID]; - } else { - curVC = cStoryboard.instantiateInitialViewController; - } - - if ([curVC isKindOfClass:[UINavigationController class]]) { - UINavigationController *curNav = (UINavigationController *)curVC; - curNav.topViewController.sui_sourceVC = self; - [self presentViewController:curVC animated:YES completion:nil]; - } else { - curVC.sui_sourceVC = self; - if (cType == SUISegueTypePush) { - [self.navigationController pushViewController:curVC animated:YES]; - } else { - [self presentViewController:curVC animated:YES completion:nil]; - } - } -} - -__attribute__((constructor)) -void sui_segue(void) { - Class curClass = [UIViewController class]; - SEL originSel = @selector(prepareForSegue:sender:); - SEL swizzSel = @selector(sui_prepareForSegue:sender:); - Method originMethod = class_getInstanceMethod(curClass, originSel); - Method swizzMthod = class_getInstanceMethod(curClass, swizzSel); - - BOOL didAdd = class_addMethod(curClass, - originSel, - method_getImplementation(swizzMthod), - method_getTypeEncoding(swizzMthod)); - if (didAdd) { - class_replaceMethod(curClass, - swizzSel, - method_getImplementation(originMethod), - method_getTypeEncoding(originMethod)); - } else { - method_exchangeImplementations(originMethod, swizzMthod); - } -} - -- (void)sui_prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender -{ - [self sui_prepareForSegue:segue sender:sender]; - - UIViewController *sourceVC = segue.sourceViewController; - UIViewController *destVC = segue.destinationViewController; - - if ([destVC isKindOfClass:[UINavigationController class]]) { - UINavigationController *curNav = (UINavigationController *)destVC; - curNav.topViewController.sui_sourceVC = sourceVC; - } else { - destVC.sui_sourceVC = sourceVC; - destVC.hidesBottomBarWhenPushed = YES; - } -} - -+ (UIViewController *)sui_viewControllerWithStoryboard:(nullable NSString *)storyboard identifier:(NSString *)identifier { - NSString *storyboardName = storyboard ?: @"Main"; - UIStoryboard *sb = [UIStoryboard storyboardWithName:storyboardName bundle:nil]; - return [sb instantiateViewControllerWithIdentifier:identifier]; -} - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * Geometry - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -#pragma mark - Geometry - -- (CGFloat)sui_opaqueNavBarHeight -{ - CGFloat curNavBarHeight = 0; - UINavigationBar *curNavigationBar = self.navigationController.navigationBar; - if (!curNavigationBar.translucent) { - curNavBarHeight += curNavigationBar.bounds.size.height; - if (![self prefersStatusBarHidden]) { - curNavBarHeight += [UIApplication sharedApplication].statusBarFrame.size.height; - } - } - return curNavBarHeight; -} -- (CGFloat)sui_translucentNavBarHeight -{ - CGFloat curNavBarHeight = 0; - UINavigationBar *curNavigationBar = self.navigationController.navigationBar; - if (curNavigationBar.translucent) { - curNavBarHeight += curNavigationBar.bounds.size.height; - if (![self prefersStatusBarHidden]) { - curNavBarHeight += [UIApplication sharedApplication].statusBarFrame.size.height; - } - } - return curNavBarHeight; -} - -- (CGFloat)sui_opaqueTabBarHeight -{ - UITabBar *curTabBar = self.navigationController.tabBarController.tabBar; - if (!curTabBar.translucent && ![self hidesBottomBarWhenPushed]) { - return curTabBar.bounds.size.height; - } - return 0; -} -- (CGFloat)sui_translucentTabBarHeight -{ - UITabBar *curTabBar = self.navigationController.tabBarController.tabBar; - if (curTabBar.translucent && ![self hidesBottomBarWhenPushed]) { - return curTabBar.bounds.size.height; - } - return 0; -} - -- (CGRect)sui_viewFrame -{ - return CGRectMake(0, 0, self.view.sui_width, kScreenHeight-self.sui_opaqueNavBarHeight-self.sui_opaqueTabBarHeight); -} - - -@end - - - -/*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* - * UITableView - *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ - -@implementation UITableView (SUIViewController) - - -- (UIViewController *)sui_vc -{ - UIViewController *curVC = [self sui_getAssociatedObjectWithKey:@selector(sui_vc)]; - if (curVC) return curVC; - - curVC = [self sui_currentVC]; - if (curVC) { - self.sui_vc = curVC; - } - return curVC; -} - -- (void)setSui_vc:(UIViewController *)sui_vc -{ - [self sui_setAssociatedAssignObject:sui_vc key:@selector(sui_vc)]; -} - - -@end diff --git a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDIndexPathHeightCache.h b/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDIndexPathHeightCache.h deleted file mode 100644 index 0c0d20e..0000000 --- a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDIndexPathHeightCache.h +++ /dev/null @@ -1,49 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2016 forkingdog ( https://github.com/forkingdog ) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -#import - -@interface FDIndexPathHeightCache : NSObject - -// Enable automatically if you're using index path driven height cache -@property (nonatomic, assign) BOOL automaticallyInvalidateEnabled; - -// Height cache -- (BOOL)existsHeightAtIndexPath:(NSIndexPath *)indexPath; -- (void)cacheHeight:(CGFloat)height byIndexPath:(NSIndexPath *)indexPath; -- (CGFloat)heightForIndexPath:(NSIndexPath *)indexPath; -- (void)invalidateHeightAtIndexPath:(NSIndexPath *)indexPath; -- (void)invalidateAllHeightCache; - -@end - -@interface UITableView (FDIndexPathHeightCache) -/// Height cache by index path. Generally, you don't need to use it directly. -@property (nonatomic, strong, readonly) FDIndexPathHeightCache *fd_indexPathHeightCache; -@end - -@interface UITableView (FDIndexPathHeightCacheInvalidation) -/// Call this method when you want to reload data but don't want to invalidate -/// all height cache by index path, for example, load more data at the bottom of -/// table view. -- (void)fd_reloadDataWithoutInvalidateIndexPathHeightCache; -@end diff --git a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDIndexPathHeightCache.m b/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDIndexPathHeightCache.m deleted file mode 100644 index 47e2299..0000000 --- a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDIndexPathHeightCache.m +++ /dev/null @@ -1,289 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2016 forkingdog ( https://github.com/forkingdog ) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -#import "UITableView+FDIndexPathHeightCache.h" -#import - -typedef NSMutableArray *> FDIndexPathHeightsBySection; - -@interface FDIndexPathHeightCache () -@property (nonatomic, strong) FDIndexPathHeightsBySection *heightsBySectionForPortrait; -@property (nonatomic, strong) FDIndexPathHeightsBySection *heightsBySectionForLandscape; -@end - -@implementation FDIndexPathHeightCache - -- (instancetype)init { - self = [super init]; - if (self) { - _heightsBySectionForPortrait = [NSMutableArray array]; - _heightsBySectionForLandscape = [NSMutableArray array]; - } - return self; -} - -- (FDIndexPathHeightsBySection *)heightsBySectionForCurrentOrientation { - return UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation) ? self.heightsBySectionForPortrait: self.heightsBySectionForLandscape; -} - -- (void)enumerateAllOrientationsUsingBlock:(void (^)(FDIndexPathHeightsBySection *heightsBySection))block { - block(self.heightsBySectionForPortrait); - block(self.heightsBySectionForLandscape); -} - -- (BOOL)existsHeightAtIndexPath:(NSIndexPath *)indexPath { - [self buildCachesAtIndexPathsIfNeeded:@[indexPath]]; - NSNumber *number = self.heightsBySectionForCurrentOrientation[indexPath.section][indexPath.row]; - return ![number isEqualToNumber:@-1]; -} - -- (void)cacheHeight:(CGFloat)height byIndexPath:(NSIndexPath *)indexPath { - self.automaticallyInvalidateEnabled = YES; - [self buildCachesAtIndexPathsIfNeeded:@[indexPath]]; - self.heightsBySectionForCurrentOrientation[indexPath.section][indexPath.row] = @(height); -} - -- (CGFloat)heightForIndexPath:(NSIndexPath *)indexPath { - [self buildCachesAtIndexPathsIfNeeded:@[indexPath]]; - NSNumber *number = self.heightsBySectionForCurrentOrientation[indexPath.section][indexPath.row]; -#if CGFLOAT_IS_DOUBLE - return number.doubleValue; -#else - return number.floatValue; -#endif -} - -- (void)invalidateHeightAtIndexPath:(NSIndexPath *)indexPath { - [self buildCachesAtIndexPathsIfNeeded:@[indexPath]]; - [self enumerateAllOrientationsUsingBlock:^(FDIndexPathHeightsBySection *heightsBySection) { - heightsBySection[indexPath.section][indexPath.row] = @-1; - }]; -} - -- (void)invalidateAllHeightCache { - [self enumerateAllOrientationsUsingBlock:^(FDIndexPathHeightsBySection *heightsBySection) { - [heightsBySection removeAllObjects]; - }]; -} - -- (void)buildCachesAtIndexPathsIfNeeded:(NSArray *)indexPaths { - // Build every section array or row array which is smaller than given index path. - [indexPaths enumerateObjectsUsingBlock:^(NSIndexPath *indexPath, NSUInteger idx, BOOL *stop) { - [self buildSectionsIfNeeded:indexPath.section]; - [self buildRowsIfNeeded:indexPath.row inExistSection:indexPath.section]; - }]; -} - -- (void)buildSectionsIfNeeded:(NSInteger)targetSection { - [self enumerateAllOrientationsUsingBlock:^(FDIndexPathHeightsBySection *heightsBySection) { - for (NSInteger section = 0; section <= targetSection; ++section) { - if (section >= heightsBySection.count) { - heightsBySection[section] = [NSMutableArray array]; - } - } - }]; -} - -- (void)buildRowsIfNeeded:(NSInteger)targetRow inExistSection:(NSInteger)section { - [self enumerateAllOrientationsUsingBlock:^(FDIndexPathHeightsBySection *heightsBySection) { - NSMutableArray *heightsByRow = heightsBySection[section]; - for (NSInteger row = 0; row <= targetRow; ++row) { - if (row >= heightsByRow.count) { - heightsByRow[row] = @-1; - } - } - }]; -} - -@end - -@implementation UITableView (FDIndexPathHeightCache) - -- (FDIndexPathHeightCache *)fd_indexPathHeightCache { - FDIndexPathHeightCache *cache = objc_getAssociatedObject(self, _cmd); - if (!cache) { - [self methodSignatureForSelector:nil]; - cache = [FDIndexPathHeightCache new]; - objc_setAssociatedObject(self, _cmd, cache, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - } - return cache; -} - -@end - -// We just forward primary call, in crash report, top most method in stack maybe FD's, -// but it's really not our bug, you should check whether your table view's data source and -// displaying cells are not matched when reloading. -static void __FD_TEMPLATE_LAYOUT_CELL_PRIMARY_CALL_IF_CRASH_NOT_OUR_BUG__(void(^callout)(void)) { - callout(); -} -#define FDPrimaryCall(...) do {__FD_TEMPLATE_LAYOUT_CELL_PRIMARY_CALL_IF_CRASH_NOT_OUR_BUG__(^{__VA_ARGS__});} while(0) - -@implementation UITableView (FDIndexPathHeightCacheInvalidation) - -- (void)fd_reloadDataWithoutInvalidateIndexPathHeightCache { - FDPrimaryCall([self fd_reloadData];); -} - -+ (void)load { - // All methods that trigger height cache's invalidation - SEL selectors[] = { - @selector(reloadData), - @selector(insertSections:withRowAnimation:), - @selector(deleteSections:withRowAnimation:), - @selector(reloadSections:withRowAnimation:), - @selector(moveSection:toSection:), - @selector(insertRowsAtIndexPaths:withRowAnimation:), - @selector(deleteRowsAtIndexPaths:withRowAnimation:), - @selector(reloadRowsAtIndexPaths:withRowAnimation:), - @selector(moveRowAtIndexPath:toIndexPath:) - }; - - for (NSUInteger index = 0; index < sizeof(selectors) / sizeof(SEL); ++index) { - SEL originalSelector = selectors[index]; - SEL swizzledSelector = NSSelectorFromString([@"fd_" stringByAppendingString:NSStringFromSelector(originalSelector)]); - Method originalMethod = class_getInstanceMethod(self, originalSelector); - Method swizzledMethod = class_getInstanceMethod(self, swizzledSelector); - method_exchangeImplementations(originalMethod, swizzledMethod); - } -} - -- (void)fd_reloadData { - if (self.fd_indexPathHeightCache.automaticallyInvalidateEnabled) { - [self.fd_indexPathHeightCache enumerateAllOrientationsUsingBlock:^(FDIndexPathHeightsBySection *heightsBySection) { - [heightsBySection removeAllObjects]; - }]; - } - FDPrimaryCall([self fd_reloadData];); -} - -- (void)fd_insertSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation { - if (self.fd_indexPathHeightCache.automaticallyInvalidateEnabled) { - [sections enumerateIndexesUsingBlock:^(NSUInteger section, BOOL *stop) { - [self.fd_indexPathHeightCache buildSectionsIfNeeded:section]; - [self.fd_indexPathHeightCache enumerateAllOrientationsUsingBlock:^(FDIndexPathHeightsBySection *heightsBySection) { - [heightsBySection insertObject:[NSMutableArray array] atIndex:section]; - }]; - }]; - } - FDPrimaryCall([self fd_insertSections:sections withRowAnimation:animation];); -} - -- (void)fd_deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation { - if (self.fd_indexPathHeightCache.automaticallyInvalidateEnabled) { - [sections enumerateIndexesUsingBlock:^(NSUInteger section, BOOL *stop) { - [self.fd_indexPathHeightCache buildSectionsIfNeeded:section]; - [self.fd_indexPathHeightCache enumerateAllOrientationsUsingBlock:^(FDIndexPathHeightsBySection *heightsBySection) { - [heightsBySection removeObjectAtIndex:section]; - }]; - }]; - } - FDPrimaryCall([self fd_deleteSections:sections withRowAnimation:animation];); -} - -- (void)fd_reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation { - if (self.fd_indexPathHeightCache.automaticallyInvalidateEnabled) { - [sections enumerateIndexesUsingBlock: ^(NSUInteger section, BOOL *stop) { - [self.fd_indexPathHeightCache buildSectionsIfNeeded:section]; - [self.fd_indexPathHeightCache enumerateAllOrientationsUsingBlock:^(FDIndexPathHeightsBySection *heightsBySection) { - [heightsBySection[section] removeAllObjects]; - }]; - - }]; - } - FDPrimaryCall([self fd_reloadSections:sections withRowAnimation:animation];); -} - -- (void)fd_moveSection:(NSInteger)section toSection:(NSInteger)newSection { - if (self.fd_indexPathHeightCache.automaticallyInvalidateEnabled) { - [self.fd_indexPathHeightCache buildSectionsIfNeeded:section]; - [self.fd_indexPathHeightCache buildSectionsIfNeeded:newSection]; - [self.fd_indexPathHeightCache enumerateAllOrientationsUsingBlock:^(FDIndexPathHeightsBySection *heightsBySection) { - [heightsBySection exchangeObjectAtIndex:section withObjectAtIndex:newSection]; - }]; - } - FDPrimaryCall([self fd_moveSection:section toSection:newSection];); -} - -- (void)fd_insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation { - if (self.fd_indexPathHeightCache.automaticallyInvalidateEnabled) { - [self.fd_indexPathHeightCache buildCachesAtIndexPathsIfNeeded:indexPaths]; - [indexPaths enumerateObjectsUsingBlock:^(NSIndexPath *indexPath, NSUInteger idx, BOOL *stop) { - [self.fd_indexPathHeightCache enumerateAllOrientationsUsingBlock:^(FDIndexPathHeightsBySection *heightsBySection) { - [heightsBySection[indexPath.section] insertObject:@-1 atIndex:indexPath.row]; - }]; - }]; - } - FDPrimaryCall([self fd_insertRowsAtIndexPaths:indexPaths withRowAnimation:animation];); -} - -- (void)fd_deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation { - if (self.fd_indexPathHeightCache.automaticallyInvalidateEnabled) { - [self.fd_indexPathHeightCache buildCachesAtIndexPathsIfNeeded:indexPaths]; - - NSMutableDictionary *mutableIndexSetsToRemove = [NSMutableDictionary dictionary]; - [indexPaths enumerateObjectsUsingBlock:^(NSIndexPath *indexPath, NSUInteger idx, BOOL *stop) { - NSMutableIndexSet *mutableIndexSet = mutableIndexSetsToRemove[@(indexPath.section)]; - if (!mutableIndexSet) { - mutableIndexSet = [NSMutableIndexSet indexSet]; - mutableIndexSetsToRemove[@(indexPath.section)] = mutableIndexSet; - } - [mutableIndexSet addIndex:indexPath.row]; - }]; - - [mutableIndexSetsToRemove enumerateKeysAndObjectsUsingBlock:^(NSNumber *key, NSIndexSet *indexSet, BOOL *stop) { - [self.fd_indexPathHeightCache enumerateAllOrientationsUsingBlock:^(FDIndexPathHeightsBySection *heightsBySection) { - [heightsBySection[key.integerValue] removeObjectsAtIndexes:indexSet]; - }]; - }]; - } - FDPrimaryCall([self fd_deleteRowsAtIndexPaths:indexPaths withRowAnimation:animation];); -} - -- (void)fd_reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation { - if (self.fd_indexPathHeightCache.automaticallyInvalidateEnabled) { - [self.fd_indexPathHeightCache buildCachesAtIndexPathsIfNeeded:indexPaths]; - [indexPaths enumerateObjectsUsingBlock:^(NSIndexPath *indexPath, NSUInteger idx, BOOL *stop) { - [self.fd_indexPathHeightCache enumerateAllOrientationsUsingBlock:^(FDIndexPathHeightsBySection *heightsBySection) { - heightsBySection[indexPath.section][indexPath.row] = @-1; - }]; - }]; - } - FDPrimaryCall([self fd_reloadRowsAtIndexPaths:indexPaths withRowAnimation:animation];); -} - -- (void)fd_moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath { - if (self.fd_indexPathHeightCache.automaticallyInvalidateEnabled) { - [self.fd_indexPathHeightCache buildCachesAtIndexPathsIfNeeded:@[sourceIndexPath, destinationIndexPath]]; - [self.fd_indexPathHeightCache enumerateAllOrientationsUsingBlock:^(FDIndexPathHeightsBySection *heightsBySection) { - NSMutableArray *sourceRows = heightsBySection[sourceIndexPath.section]; - NSMutableArray *destinationRows = heightsBySection[destinationIndexPath.section]; - NSNumber *sourceValue = sourceRows[sourceIndexPath.row]; - NSNumber *destinationValue = destinationRows[destinationIndexPath.row]; - sourceRows[sourceIndexPath.row] = destinationValue; - destinationRows[destinationIndexPath.row] = sourceValue; - }]; - } - FDPrimaryCall([self fd_moveRowAtIndexPath:sourceIndexPath toIndexPath:destinationIndexPath];); -} - -@end diff --git a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDKeyedHeightCache.h b/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDKeyedHeightCache.h deleted file mode 100644 index 00c08de..0000000 --- a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDKeyedHeightCache.h +++ /dev/null @@ -1,40 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2016 forkingdog ( https://github.com/forkingdog ) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -#import - -@interface FDKeyedHeightCache : NSObject - -- (BOOL)existsHeightForKey:(id)key; -- (void)cacheHeight:(CGFloat)height byKey:(id)key; -- (CGFloat)heightForKey:(id)key; - -// Invalidation -- (void)invalidateHeightForKey:(id)key; -- (void)invalidateAllHeightCache; -@end - -@interface UITableView (FDKeyedHeightCache) - -/// Height cache by key. Generally, you don't need to use it directly. -@property (nonatomic, strong, readonly) FDKeyedHeightCache *fd_keyedHeightCache; -@end diff --git a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDKeyedHeightCache.m b/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDKeyedHeightCache.m deleted file mode 100644 index 7d78d58..0000000 --- a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDKeyedHeightCache.m +++ /dev/null @@ -1,86 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2016 forkingdog ( https://github.com/forkingdog ) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -#import "UITableView+FDKeyedHeightCache.h" -#import - -@interface FDKeyedHeightCache () -@property (nonatomic, strong) NSMutableDictionary, NSNumber *> *mutableHeightsByKeyForPortrait; -@property (nonatomic, strong) NSMutableDictionary, NSNumber *> *mutableHeightsByKeyForLandscape; -@end - -@implementation FDKeyedHeightCache - -- (instancetype)init { - self = [super init]; - if (self) { - _mutableHeightsByKeyForPortrait = [NSMutableDictionary dictionary]; - _mutableHeightsByKeyForLandscape = [NSMutableDictionary dictionary]; - } - return self; -} - -- (NSMutableDictionary, NSNumber *> *)mutableHeightsByKeyForCurrentOrientation { - return UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation) ? self.mutableHeightsByKeyForPortrait: self.mutableHeightsByKeyForLandscape; -} - -- (BOOL)existsHeightForKey:(id)key { - NSNumber *number = self.mutableHeightsByKeyForCurrentOrientation[key]; - return number && ![number isEqualToNumber:@-1]; -} - -- (void)cacheHeight:(CGFloat)height byKey:(id)key { - self.mutableHeightsByKeyForCurrentOrientation[key] = @(height); -} - -- (CGFloat)heightForKey:(id)key { -#if CGFLOAT_IS_DOUBLE - return [self.mutableHeightsByKeyForCurrentOrientation[key] doubleValue]; -#else - return [self.mutableHeightsByKeyForCurrentOrientation[key] floatValue]; -#endif -} - -- (void)invalidateHeightForKey:(id)key { - [self.mutableHeightsByKeyForPortrait removeObjectForKey:key]; - [self.mutableHeightsByKeyForLandscape removeObjectForKey:key]; -} - -- (void)invalidateAllHeightCache { - [self.mutableHeightsByKeyForPortrait removeAllObjects]; - [self.mutableHeightsByKeyForLandscape removeAllObjects]; -} - -@end - -@implementation UITableView (FDKeyedHeightCache) - -- (FDKeyedHeightCache *)fd_keyedHeightCache { - FDKeyedHeightCache *cache = objc_getAssociatedObject(self, _cmd); - if (!cache) { - cache = [FDKeyedHeightCache new]; - objc_setAssociatedObject(self, _cmd, cache, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - } - return cache; -} - -@end diff --git a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell.h b/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell.h deleted file mode 100644 index 9c7e957..0000000 --- a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell.h +++ /dev/null @@ -1,96 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2016 forkingdog ( https://github.com/forkingdog ) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -#import -#import "UITableView+FDKeyedHeightCache.h" -#import "UITableView+FDIndexPathHeightCache.h" -#import "UITableView+FDTemplateLayoutCellDebug.h" - -@interface UITableView (FDTemplateLayoutCell) - -/// Access to internal template layout cell for given reuse identifier. -/// Generally, you don't need to know these template layout cells. -/// -/// @param identifier Reuse identifier for cell which must be registered. -/// -- (__kindof UITableViewCell *)fd_templateCellForReuseIdentifier:(NSString *)identifier; - -/// Returns height of cell of type specifed by a reuse identifier and configured -/// by the configuration block. -/// -/// The cell would be layed out on a fixed-width, vertically expanding basis with -/// respect to its dynamic content, using auto layout. Thus, it is imperative that -/// the cell was set up to be self-satisfied, i.e. its content always determines -/// its height given the width is equal to the tableview's. -/// -/// @param identifier A string identifier for retrieving and maintaining template -/// cells with system's "-dequeueReusableCellWithIdentifier:" call. -/// @param configuration An optional block for configuring and providing content -/// to the template cell. The configuration should be minimal for scrolling -/// performance yet sufficient for calculating cell's height. -/// -- (CGFloat)fd_heightForCellWithIdentifier:(NSString *)identifier configuration:(void (^)(id cell))configuration; - -/// This method does what "-fd_heightForCellWithIdentifier:configuration" does, and -/// calculated height will be cached by its index path, returns a cached height -/// when needed. Therefore lots of extra height calculations could be saved. -/// -/// No need to worry about invalidating cached heights when data source changes, it -/// will be done automatically when you call "-reloadData" or any method that triggers -/// UITableView's reloading. -/// -/// @param indexPath where this cell's height cache belongs. -/// -- (CGFloat)fd_heightForCellWithIdentifier:(NSString *)identifier cacheByIndexPath:(NSIndexPath *)indexPath configuration:(void (^)(id cell))configuration; - -/// This method caches height by your model entity's identifier. -/// If your model's changed, call "-invalidateHeightForKey:(id )key" to -/// invalidate cache and re-calculate, it's much cheaper and effective than "cacheByIndexPath". -/// -/// @param key model entity's identifier whose data configures a cell. -/// -- (CGFloat)fd_heightForCellWithIdentifier:(NSString *)identifier cacheByKey:(id)key configuration:(void (^)(id cell))configuration; - -@end - -@interface UITableViewCell (FDTemplateLayoutCell) - -/// Indicate this is a template layout cell for calculation only. -/// You may need this when there are non-UI side effects when configure a cell. -/// Like: -/// - (void)configureCell:(FooCell *)cell atIndexPath:(NSIndexPath *)indexPath { -/// cell.entity = [self entityAtIndexPath:indexPath]; -/// if (!cell.fd_isTemplateLayoutCell) { -/// [self notifySomething]; // non-UI side effects -/// } -/// } -/// -@property (nonatomic, assign) BOOL fd_isTemplateLayoutCell; - -/// Enable to enforce this template layout cell to use "frame layout" rather than "auto layout", -/// and will ask cell's height by calling "-sizeThatFits:", so you must override this method. -/// Use this property only when you want to manually control this template layout cell's height -/// calculation mode, default to NO. -/// -@property (nonatomic, assign) BOOL fd_enforceFrameLayout; - -@end diff --git a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell.m b/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell.m deleted file mode 100644 index adcdf8f..0000000 --- a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell.m +++ /dev/null @@ -1,178 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2016 forkingdog ( https://github.com/forkingdog ) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -#import "UITableView+FDTemplateLayoutCell.h" -#import - -@implementation UITableView (FDTemplateLayoutCell) - -- (__kindof UITableViewCell *)fd_templateCellForReuseIdentifier:(NSString *)identifier { - NSAssert(identifier.length > 0, @"Expect a valid identifier - %@", identifier); - - NSMutableDictionary *templateCellsByIdentifiers = objc_getAssociatedObject(self, _cmd); - if (!templateCellsByIdentifiers) { - templateCellsByIdentifiers = @{}.mutableCopy; - objc_setAssociatedObject(self, _cmd, templateCellsByIdentifiers, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - } - - UITableViewCell *templateCell = templateCellsByIdentifiers[identifier]; - - if (!templateCell) { - templateCell = [self dequeueReusableCellWithIdentifier:identifier]; - NSAssert(templateCell != nil, @"Cell must be registered to table view for identifier - %@", identifier); - templateCell.fd_isTemplateLayoutCell = YES; - templateCell.contentView.translatesAutoresizingMaskIntoConstraints = NO; - templateCellsByIdentifiers[identifier] = templateCell; - [self fd_debugLog:[NSString stringWithFormat:@"layout cell created - %@", identifier]]; - } - - return templateCell; -} - -- (CGFloat)fd_heightForCellWithIdentifier:(NSString *)identifier configuration:(void (^)(id cell))configuration { - if (!identifier) { - return 0; - } - - UITableViewCell *templateLayoutCell = [self fd_templateCellForReuseIdentifier:identifier]; - - // Manually calls to ensure consistent behavior with actual cells (that are displayed on screen). - [templateLayoutCell prepareForReuse]; - - // Customize and provide content for our template cell. - if (configuration) { - configuration(templateLayoutCell); - } - - CGFloat contentViewWidth = CGRectGetWidth(self.frame); - - // If a cell has accessory view or system accessory type, its content view's width is smaller - // than cell's by some fixed values. - if (templateLayoutCell.accessoryView) { - contentViewWidth -= 16 + CGRectGetWidth(templateLayoutCell.accessoryView.frame); - } else { - static const CGFloat systemAccessoryWidths[] = { - [UITableViewCellAccessoryNone] = 0, - [UITableViewCellAccessoryDisclosureIndicator] = 34, - [UITableViewCellAccessoryDetailDisclosureButton] = 68, - [UITableViewCellAccessoryCheckmark] = 40, - [UITableViewCellAccessoryDetailButton] = 48 - }; - contentViewWidth -= systemAccessoryWidths[templateLayoutCell.accessoryType]; - } - - CGSize fittingSize = CGSizeZero; - - if (templateLayoutCell.fd_enforceFrameLayout) { - // If not using auto layout, you have to override "-sizeThatFits:" to provide a fitting size by yourself. - // This is the same method used in iOS8 self-sizing cell's implementation. - // Note: fitting height should not include separator view. - SEL selector = @selector(sizeThatFits:); - BOOL inherited = ![templateLayoutCell isMemberOfClass:UITableViewCell.class]; - BOOL overrided = [templateLayoutCell.class instanceMethodForSelector:selector] != [UITableViewCell instanceMethodForSelector:selector]; - if (inherited && !overrided) { - NSAssert(NO, @"Customized cell must override '-sizeThatFits:' method if not using auto layout."); - } - fittingSize = [templateLayoutCell sizeThatFits:CGSizeMake(contentViewWidth, 0)]; - } else { - // Add a hard width constraint to make dynamic content views (like labels) expand vertically instead - // of growing horizontally, in a flow-layout manner. - if (contentViewWidth > 0) { - NSLayoutConstraint *widthFenceConstraint = [NSLayoutConstraint constraintWithItem:templateLayoutCell.contentView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:contentViewWidth]; - [templateLayoutCell.contentView addConstraint:widthFenceConstraint]; - // Auto layout engine does its math - fittingSize = [templateLayoutCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; - [templateLayoutCell.contentView removeConstraint:widthFenceConstraint]; - } - } - - // Add separator's height, using a private property in UITableViewCell. - CGFloat separatorHeight = [[templateLayoutCell valueForKey:@"_separatorHeight"] doubleValue]; - fittingSize.height += separatorHeight; - - if (templateLayoutCell.fd_enforceFrameLayout) { - [self fd_debugLog:[NSString stringWithFormat:@"calculate using frame layout - %@", @(fittingSize.height)]]; - } else { - [self fd_debugLog:[NSString stringWithFormat:@"calculate using auto layout - %@", @(fittingSize.height)]]; - } - - return fittingSize.height; -} - -- (CGFloat)fd_heightForCellWithIdentifier:(NSString *)identifier cacheByIndexPath:(NSIndexPath *)indexPath configuration:(void (^)(id cell))configuration { - if (!identifier || !indexPath) { - return 0; - } - - // Hit cache - if ([self.fd_indexPathHeightCache existsHeightAtIndexPath:indexPath]) { - [self fd_debugLog:[NSString stringWithFormat:@"hit cache by index path[%@:%@] - %@", @(indexPath.section), @(indexPath.row), @([self.fd_indexPathHeightCache heightForIndexPath:indexPath])]]; - return [self.fd_indexPathHeightCache heightForIndexPath:indexPath]; - } - - CGFloat height = [self fd_heightForCellWithIdentifier:identifier configuration:configuration]; - [self.fd_indexPathHeightCache cacheHeight:height byIndexPath:indexPath]; - [self fd_debugLog:[NSString stringWithFormat: @"cached by index path[%@:%@] - %@", @(indexPath.section), @(indexPath.row), @(height)]]; - - return height; -} - -- (CGFloat)fd_heightForCellWithIdentifier:(NSString *)identifier cacheByKey:(id)key configuration:(void (^)(id cell))configuration { - if (!identifier || !key) { - return 0; - } - - // Hit cache - if ([self.fd_keyedHeightCache existsHeightForKey:key]) { - CGFloat cachedHeight = [self.fd_keyedHeightCache heightForKey:key]; - [self fd_debugLog:[NSString stringWithFormat:@"hit cache by key[%@] - %@", key, @(cachedHeight)]]; - return cachedHeight; - } - - CGFloat height = [self fd_heightForCellWithIdentifier:identifier configuration:configuration]; - [self.fd_keyedHeightCache cacheHeight:height byKey:key]; - [self fd_debugLog:[NSString stringWithFormat:@"cached by key[%@] - %@", key, @(height)]]; - - return height; -} - -@end - -@implementation UITableViewCell (FDTemplateLayoutCell) - -- (BOOL)fd_isTemplateLayoutCell { - return [objc_getAssociatedObject(self, _cmd) boolValue]; -} - -- (void)setFd_isTemplateLayoutCell:(BOOL)isTemplateLayoutCell { - objc_setAssociatedObject(self, @selector(fd_isTemplateLayoutCell), @(isTemplateLayoutCell), OBJC_ASSOCIATION_RETAIN); -} - -- (BOOL)fd_enforceFrameLayout { - return [objc_getAssociatedObject(self, _cmd) boolValue]; -} - -- (void)setFd_enforceFrameLayout:(BOOL)enforceFrameLayout { - objc_setAssociatedObject(self, @selector(fd_enforceFrameLayout), @(enforceFrameLayout), OBJC_ASSOCIATION_RETAIN); -} - -@end diff --git a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCellDebug.h b/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCellDebug.h deleted file mode 100644 index ddd0d50..0000000 --- a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCellDebug.h +++ /dev/null @@ -1,37 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2016 forkingdog ( https://github.com/forkingdog ) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -#import - -@interface UITableView (FDTemplateLayoutCellDebug) - -/// Helps to debug or inspect what is this "FDTemplateLayoutCell" extention doing, -/// turning on to print logs when "creating", "calculating", "precaching" or "hitting cache". -/// -/// Default to NO, log by NSLog. -/// -@property (nonatomic, assign) BOOL fd_debugLogEnabled; - -/// Debug log controlled by "fd_debugLogEnabled". -- (void)fd_debugLog:(NSString *)message; - -@end diff --git a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCellDebug.m b/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCellDebug.m deleted file mode 100644 index 4af2aad..0000000 --- a/SUIMVVMKit/SUIUtils/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCellDebug.m +++ /dev/null @@ -1,42 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2016 forkingdog ( https://github.com/forkingdog ) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -#import "UITableView+FDTemplateLayoutCellDebug.h" -#import - -@implementation UITableView (FDTemplateLayoutCellDebug) - -- (BOOL)fd_debugLogEnabled { - return [objc_getAssociatedObject(self, _cmd) boolValue]; -} - -- (void)setFd_debugLogEnabled:(BOOL)debugLogEnabled { - objc_setAssociatedObject(self, @selector(fd_debugLogEnabled), @(debugLogEnabled), OBJC_ASSOCIATION_RETAIN); -} - -- (void)fd_debugLog:(NSString *)message { - if (self.fd_debugLogEnabled) { - NSLog(@"** FDTemplateLayoutCell ** %@", message); - } -} - -@end diff --git a/SUIMVVMKit/UICollectionViewCell+SMKConfigure.h b/SUIMVVMKit/UICollectionViewCell+SMKConfigure.h new file mode 100755 index 0000000..7f2fbb7 --- /dev/null +++ b/SUIMVVMKit/UICollectionViewCell+SMKConfigure.h @@ -0,0 +1,46 @@ +// +// UICollectionViewCell+SMKConfigure.h +// DevelopFramework +// +// Created by momo on 15/12/16. +// Copyright © 2015年 teason. All rights reserved. +// + +#import +#import "SMKViewModelProtocol.h" + +@interface UICollectionViewCell (SMKConfigure) + +/** + * 从nib文件中根据重用标识符注册UICollectionViewcell + */ ++ (void)smk_registerCollect:(UICollectionView *)collect + nibIdentifier:(NSString *)identifier; + +/** + * 从class根据重用标识符注册UICollectionViewcell + */ ++ (void)smk_registerCollect:(UICollectionView *)collect + classIdentifier:(NSString *)identifier; + +/** + * 根据model配置UICollectionViewcell,设置UICollectionViewcell内容 + */ +- (void)smk_configure:(UICollectionViewCell *)cell + model:(id)model + indexPath:(NSIndexPath *)indexPath; + +/** + * 根据viewModel配置UICollectionViewcell,设置UICollectionViewcell内容 + */ +- (void)smk_configure:(UICollectionViewCell *)cell + viewModel:(id)viewModel + indexPath:(NSIndexPath *)indexPath; + +/** + * 获取自定义对象的cell高度 + */ ++ (CGFloat)smk_getCellHeightWithModel:(id)model + indexPath:(NSIndexPath *)indexPath; + +@end diff --git a/SUIMVVMKit/UICollectionViewCell+SMKConfigure.m b/SUIMVVMKit/UICollectionViewCell+SMKConfigure.m new file mode 100755 index 0000000..9851109 --- /dev/null +++ b/SUIMVVMKit/UICollectionViewCell+SMKConfigure.m @@ -0,0 +1,51 @@ +// +// UICollectionViewCell+SMKConfigure.m +// DevelopFramework +// +// Created by momo on 15/12/16. +// Copyright © 2015年 teason. All rights reserved. +// + +#import "UICollectionViewCell+SMKConfigure.h" + +@implementation UICollectionViewCell (SMKConfigure) + +#pragma mark -- ++ (UINib *)nibWithIdentifier:(NSString *)identifier +{ + return [UINib nibWithNibName:identifier bundle:nil]; +} + +#pragma mark - Public ++ (void)smk_registerCollect:(UICollectionView *)collect + nibIdentifier:(NSString *)identifier +{ + [collect registerNib:[self nibWithIdentifier:identifier] forCellWithReuseIdentifier:identifier]; +} + ++ (void)smk_registerCollect:(UICollectionView *)collect classIdentifier:(NSString *)identifier { + [collect registerClass:[self class] forCellWithReuseIdentifier:identifier]; +} + +#pragma mark -- +#pragma mark - Rewrite these func in SubClass ! +- (void)smk_configure:(UICollectionViewCell *)cell model:(id)model indexPath:(NSIndexPath *)indexPath +{ + // Rewrite this func in SubClass ! +} + +- (void)smk_configure:(UICollectionViewCell *)cell viewModel:(id)viewModel indexPath:(NSIndexPath *)indexPath +{ + // Rewrite this func in SubClass ! +} + ++ (CGFloat)smk_getCellHeightWithModel:(id)model indexPath:(NSIndexPath *)indexPath +{ + // Rewrite this func in SubClass if necessary + if (!model) { + return 0.0f ; // if obj is null . + } + return 44.0f ; // default cell height +} + +@end diff --git a/SUIMVVMKit/UITableViewCell+SMKConfigure.h b/SUIMVVMKit/UITableViewCell+SMKConfigure.h new file mode 100755 index 0000000..f0fc1c4 --- /dev/null +++ b/SUIMVVMKit/UITableViewCell+SMKConfigure.h @@ -0,0 +1,46 @@ +// +// UITableViewCell+SMKConfigure.h +// DevelopFramework +// +// Created by momo on 15/12/16. +// Copyright © 2015年 teason. All rights reserved. +// + +#import +#import "SMKViewModelProtocol.h" + +@interface UITableViewCell (SMKConfigure) + +/** + * 从nib文件中根据重用标识符注册UITableViewCell + */ ++ (void)smk_registerTable:(UITableView *)table + nibIdentifier:(NSString *)identifier; + +/** + * 从class中根据重用标识符注册UITableViewCell + */ ++ (void)smk_registerTable:(UITableView *)table + classIdentifier:(NSString *)identifier; + +/** + * 根据model配置UITableViewCell,设置UITableViewCell内容 + */ +- (void)smk_configure:(UITableViewCell *)cell + model:(id)model + indexPath:(NSIndexPath *)indexPath; + +/** + * 根据viewModel配置UITableViewCell,设置UITableViewCell内容 + */ +- (void)smk_configure:(UITableViewCell *)cell + viewModel:(id)viewModel + indexPath:(NSIndexPath *)indexPath; + +/** + * 获取自定义对象的cell高度 (已集成UITableView+FDTemplateLayoutCell,现在创建的cell自动计算高度) + */ ++ (CGFloat)smk_getCellHeightWithModel:(id)model + indexPath:(NSIndexPath *)indexPath ; + +@end diff --git a/SUIMVVMKit/UITableViewCell+SMKConfigure.m b/SUIMVVMKit/UITableViewCell+SMKConfigure.m new file mode 100755 index 0000000..2a8c3ab --- /dev/null +++ b/SUIMVVMKit/UITableViewCell+SMKConfigure.m @@ -0,0 +1,51 @@ +// +// UITableViewCell+SMKConfigure.m +// DevelopFramework +// +// Created by momo on 15/12/16. +// Copyright © 2015年 teason. All rights reserved. +// + +#import "UITableViewCell+SMKConfigure.h" + +@implementation UITableViewCell (SMKConfigure) + +#pragma mark -- private ++ (UINib *)nibWithIdentifier:(NSString *)identifier +{ + return [UINib nibWithNibName:identifier bundle:nil]; +} + +#pragma mark - public ++ (void)smk_registerTable:(UITableView *)table + nibIdentifier:(NSString *)identifier +{ + [table registerNib:[self nibWithIdentifier:identifier] forCellReuseIdentifier:identifier]; +} ++ (void)smk_registerTable:(UITableView *)table + classIdentifier:(NSString *)identifier +{ + [table registerClass:[self class] forCellReuseIdentifier:identifier]; +} +#pragma mark -- +#pragma mark - Rewrite these func in SubClass ! +- (void)smk_configure:(UITableViewCell *)cell model:(id)model indexPath:(NSIndexPath *)indexPath +{ + // Rewrite this func in SubClass ! +} + +- (void)smk_configure:(UITableViewCell *)cell viewModel:(id)viewModel indexPath:(NSIndexPath *)indexPath +{ + // Rewrite this func in SubClass ! +} + ++ (CGFloat)smk_getCellHeightWithModel:(id)model indexPath:(NSIndexPath *)indexPath +{ + // Rewrite this func in SubClass if necessary + if (!model) { + return 0.0f ; // if obj is null . + } + return 44.0f ; // default cell height +} + +@end diff --git a/SUIMVVMKit/UIView+SMKConfigure.h b/SUIMVVMKit/UIView+SMKConfigure.h new file mode 100644 index 0000000..0713b65 --- /dev/null +++ b/SUIMVVMKit/UIView+SMKConfigure.h @@ -0,0 +1,24 @@ +// +// UIView+SMKConfigure.h +// SUIMVVMDemo +// +// Created by yuantao on 16/2/22. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#import +#import "SMKViewModelProtocol.h" + +@interface UIView (SMKConfigure) + +/** + * 根据model配置UIView,设置UIView内容 + */ +- (void)smk_configureViewWithModel:(id)model; + +/** + * 根据viewModel配置UIView,设置UIView内容 + */ +- (void)smk_configureViewWithViewModel:(id)viewModel; + +@end diff --git a/SUIMVVMKit/UIView+SMKConfigure.m b/SUIMVVMKit/UIView+SMKConfigure.m new file mode 100644 index 0000000..2cf9b0e --- /dev/null +++ b/SUIMVVMKit/UIView+SMKConfigure.m @@ -0,0 +1,24 @@ +// +// UIView+SMKConfigure.m +// SUIMVVMDemo +// +// Created by yuantao on 16/2/22. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#import "UIView+SMKConfigure.h" + +@implementation UIView (SMKConfigure) + +#pragma mark -- +#pragma mark - Rewrite these func in SubClass ! + +- (void)smk_configureViewWithModel:(id)model { + // Rewrite this func in SubClass ! +} + +- (void)smk_configureViewWithViewModel:(id)viewModel { + // Rewrite this func in SubClass ! +} + +@end diff --git a/SUIMVVMKit/UIView+SMKEvents.h b/SUIMVVMKit/UIView+SMKEvents.h new file mode 100644 index 0000000..603d222 --- /dev/null +++ b/SUIMVVMKit/UIView+SMKEvents.h @@ -0,0 +1,34 @@ +// +// UIView+SMKEvents.h +// SUIMVVMDemo +// +// Created by yuantao on 16/3/5. +// Copyright © 2016年 lovemo. All rights reserved. +// + +#import +#import "SMKViewProtocol.h" +#import "SMKViewMangerProtocol.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^ViewEventsBlock)( ); + +@interface UIView (SMKEvents) + +/** + * delegate 传递事件 + */ +@property (nullable, nonatomic, weak) id delegate; + +/** + * block 传递事件 + */ +@property (nonatomic, copy) ViewEventsBlock viewEventsBlock; + +- (void)smk_viewWithViewManger:(id)viewManger; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/SUIMVVMKit/SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.m b/SUIMVVMKit/UIView+SMKEvents.m similarity index 65% rename from SUIMVVMKit/SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.m rename to SUIMVVMKit/UIView+SMKEvents.m index d6aaf9a..2f2470e 100644 --- a/SUIMVVMKit/SUIMVVMKit/Extend/UIView+ViewDelegateAdditions.m +++ b/SUIMVVMKit/UIView+SMKEvents.m @@ -1,21 +1,21 @@ // -// UIView+ViewDelegateAdditions.m +// UIView+SMKEvents.m // SUIMVVMDemo // // Created by yuantao on 16/3/5. // Copyright © 2016年 lovemo. All rights reserved. // -#import "UIView+ViewDelegateAdditions.h" +#import "UIView+SMKEvents.h" #import -@implementation UIView (ViewDelegateAdditions) +@implementation UIView (SMKEvents) -- (id)delegate { +- (id)delegate { return objc_getAssociatedObject(self, _cmd); } -- (void)setDelegate:(id)delegate { +- (void)setDelegate:(id)delegate { objc_setAssociatedObject(self, @selector(delegate), delegate, OBJC_ASSOCIATION_ASSIGN); } @@ -27,4 +27,10 @@ - (void)setViewEventsBlock:(ViewEventsBlock)viewEventsBlock { objc_setAssociatedObject(self, @selector(viewEventsBlock), viewEventsBlock, OBJC_ASSOCIATION_COPY); } +- (void)smk_viewWithViewManger:(id)viewManger { + if (viewManger) { + self.delegate = viewManger; + } +} + @end