Quellcode durchsuchen

添加nsdictionary category
Rawkwebview 增加通用的返回值和回调函数

Ray Zhang vor 7 Jahren
Ursprung
Commit
a8409d9c06

BIN
Ants Contract/AntsContract.xcworkspace/xcuserdata/Ray.xcuserdatad/UserInterfaceState.xcuserstate


+ 6 - 0
RedAnt CRM/APEX CRM/APEX CRM.xcodeproj/project.pbxproj

@@ -46,6 +46,7 @@
 		7106E83C21AD1B070056DD20 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 7106E83621AD1B070056DD20 /* ioapi.c */; };
 		7106E83D21AD1B070056DD20 /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 7106E83821AD1B070056DD20 /* zip.c */; };
 		7106E84021AD1B0D0056DD20 /* ZipArchive.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7106E83F21AD1B0D0056DD20 /* ZipArchive.mm */; };
+		7106E84421AF71310056DD20 /* NSDictionary+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 7106E84321AF71310056DD20 /* NSDictionary+Extension.m */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
@@ -126,6 +127,8 @@
 		7106E83E21AD1B0D0056DD20 /* ZipArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ZipArchive.h; path = "../../../../../RedAnt ERP Mobile/common/zip/ZipArchive.h"; sourceTree = "<group>"; };
 		7106E83F21AD1B0D0056DD20 /* ZipArchive.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ZipArchive.mm; path = "../../../../../RedAnt ERP Mobile/common/zip/ZipArchive.mm"; sourceTree = "<group>"; };
 		7106E84121AD1BC10056DD20 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
+		7106E84221AF71310056DD20 /* NSDictionary+Extension.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+Extension.h"; path = "../../../../common/NSDictionary/NSDictionary+Extension.h"; sourceTree = "<group>"; };
+		7106E84321AF71310056DD20 /* NSDictionary+Extension.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+Extension.m"; path = "../../../../common/NSDictionary/NSDictionary+Extension.m"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -364,6 +367,8 @@
 				7106E82D21AD1ACC0056DD20 /* RAUtils.m */,
 				7106E82921ABF2180056DD20 /* RAConvertor.h */,
 				7106E82821ABF2180056DD20 /* RAConvertor.m */,
+				7106E84221AF71310056DD20 /* NSDictionary+Extension.h */,
+				7106E84321AF71310056DD20 /* NSDictionary+Extension.m */,
 			);
 			path = utils;
 			sourceTree = "<group>";
@@ -492,6 +497,7 @@
 				4212AB9221AD22AB00BE4E45 /* RACameraViewController.m in Sources */,
 				7106E83C21AD1B070056DD20 /* ioapi.c in Sources */,
 				7106E80D21A684F20056DD20 /* ViewController.m in Sources */,
+				7106E84421AF71310056DD20 /* NSDictionary+Extension.m in Sources */,
 				4212ABC021AD389200BE4E45 /* RAReachability.m in Sources */,
 				4212ABC121AD389200BE4E45 /* Reachability.m in Sources */,
 				7106E81821A684F50056DD20 /* main.m in Sources */,

+ 61 - 0
RedAnt CRM/APEX CRM/APEX CRM/RAWKWebView.m

@@ -16,9 +16,13 @@
 #import "RAProgressHUD.h"
 #import <MessageUI/MessageUI.h>
 #import "LPShareActivity.h"
+
+#import "NSDictionary+Extension.h"
+
 #import "RAPhotoPreviewController.h"
 #import "RAPhotoModel.h"
 
+
 @interface RAWKWebView () <UINavigationControllerDelegate,UIImagePickerControllerDelegate,MFMailComposeViewControllerDelegate>
 @property (strong, nonatomic)   WKWebView                   *wkwebView;
 @end
@@ -166,10 +170,33 @@
     
     scanVC.completion = ^(NSString *value) {
         
+        if(![params isNull:@"returnid"] )
+        {
+            
+            [self webPageReturn:params[@"returnid"] value:value];
+
+        }else if(![params isNull:@"callback"])
+        {
+
+        }
     };
     
     [self.ra_viewController.navigationController pushViewController:scanVC animated:YES];
 }
+-(void) webPageCallback:(NSDictionary*)params caller:(NSString*) callerid value:(NSObject*)value
+{
+    NSString *jsStr = [NSString stringWithFormat:params[@"callback"],callerid,value];
+    [self.wkwebView evaluateJavaScript:jsStr completionHandler:^(id _Nullable result, NSError * _Nullable error) {
+        NSLog(@"%@----%@",result, error);
+    }];
+}
+-(void) webPageReturn:(NSString*) returnid value:(NSObject*)value
+{
+    NSString *jsStr = [NSString stringWithFormat:@"document.getElementById(\"%@\").value = %@;",returnid,value];
+    [self.wkwebView evaluateJavaScript:jsStr completionHandler:^(id _Nullable result, NSError * _Nullable error) {
+        NSLog(@"%@----%@",result, error);
+    }];
+}
 
 - (void)ra_previewDocument:(NSDictionary *)params {
     /**
@@ -304,6 +331,39 @@
     // 选中分享类型
     [activityViewController setCompletionWithItemsHandler:^(NSString * __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError){
         
+//<<<<<<< .mine
+//    } completionHandler:^(NSMutableDictionary *result) {
+//
+//        int code = [[result objectForKey:@"result"] intValue];
+//        if (code == RESULT_TRUE) {
+//
+//            NSString *path = [result objectForKey:@"path"];
+//
+//            NSArray *activityItems = @[[NSURL URLWithString:url]];
+//
+//            // 服务类型控制器
+//            UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:@[]];
+//            //    _activityViewController = activityViewController;
+//            //    activityViewController.excludedActivityTypes = @[UIActivityTypeMail];
+//            activityViewController.modalInPopover = true;
+//
+//            // 选中分享类型
+//            [activityViewController setCompletionWithItemsHandler:^(NSString * __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError){
+//
+//                // 显示选中的分享类型
+//                NSLog(@"act type %@",activityType);
+//
+//                if (completed) {
+//                    NSLog(@"ok");
+//                }else {
+//                    NSLog(@"not ok");
+//                }
+//
+//            }];
+//
+//            [self.ra_viewController presentViewController:activityViewController animated:YES completion:nil];
+//
+//=======
         // 显示选中的分享类型
         NSLog(@"act type %@",activityType);
         
@@ -311,6 +371,7 @@
             NSLog(@"ok");
         }else {
             NSLog(@"not ok");
+//>>>>>>> .r39012
         }
         
     }];

BIN
RedAnt CRM/RedAnt CRM.xcworkspace/xcuserdata/ray.xcuserdatad/UserInterfaceState.xcuserstate


+ 119 - 39
RedAnt CRM/RedAnt CRM.xcworkspace/xcuserdata/ray.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -10,12 +10,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.3989609"
+            timestampString = "565080991.193975"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "296"
             endingLineNumber = "296"
-            landmarkName = "-ra_share:"
+            landmarkName = "-ra_mail:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -26,12 +26,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.40029"
+            timestampString = "565080991.197377"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "296"
             endingLineNumber = "296"
-            landmarkName = "-ra_share:"
+            landmarkName = "-ra_mail:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -42,12 +42,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.401094"
+            timestampString = "565080991.198949"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "296"
             endingLineNumber = "296"
-            landmarkName = "-ra_share:"
+            landmarkName = "-ra_mail:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -58,12 +58,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.4018871"
+            timestampString = "565080991.200294"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "296"
             endingLineNumber = "296"
-            landmarkName = "-ra_share:"
+            landmarkName = "-ra_mail:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -74,12 +74,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.402578"
+            timestampString = "565080991.201506"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "296"
             endingLineNumber = "296"
-            landmarkName = "-ra_share:"
+            landmarkName = "-ra_mail:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -90,7 +90,7 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/WKWebTestViewController.m"
-            timestampString = "565060253.403245"
+            timestampString = "565069905.836243"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "28"
@@ -106,7 +106,7 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/WKWebTestViewController.m"
-            timestampString = "565060253.4036551"
+            timestampString = "565069905.836791"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "22"
@@ -122,7 +122,7 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.403758"
+            timestampString = "565080991.202677"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "257"
@@ -138,12 +138,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.404405"
+            timestampString = "565080991.203608"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "272"
             endingLineNumber = "272"
-            landmarkName = "-ra_share:"
+            landmarkName = "-ra_mail:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -154,12 +154,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.404987"
+            timestampString = "565080991.204405"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "67"
             endingLineNumber = "67"
-            landmarkName = "-initWKWebView"
+            landmarkName = "-layoutSubviews"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -170,12 +170,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.405455"
+            timestampString = "565080991.205231"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "277"
             endingLineNumber = "277"
-            landmarkName = "-ra_share:"
+            landmarkName = "-ra_mail:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -186,12 +186,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.405921"
+            timestampString = "565080991.2060781"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "279"
             endingLineNumber = "279"
-            landmarkName = "-ra_share:"
+            landmarkName = "-ra_mail:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -202,12 +202,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.406417"
+            timestampString = "565080991.207127"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "293"
             endingLineNumber = "293"
-            landmarkName = "-ra_share:"
+            landmarkName = "-ra_mail:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -218,12 +218,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.4068871"
+            timestampString = "565080991.207953"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "240"
             endingLineNumber = "240"
-            landmarkName = "-ra_mail:"
+            landmarkName = "-ra_previewDocument:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -234,12 +234,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.407349"
+            timestampString = "565080991.20874"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "213"
             endingLineNumber = "213"
-            landmarkName = "-ra_mail:"
+            landmarkName = "-ra_previewDocument:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -250,12 +250,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.407794"
+            timestampString = "565080991.209573"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "221"
             endingLineNumber = "221"
-            landmarkName = "-ra_mail:"
+            landmarkName = "-ra_previewDocument:"
             landmarkType = "7">
             <Locations>
                <Location
@@ -298,12 +298,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.408228"
+            timestampString = "565080991.210448"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "220"
             endingLineNumber = "220"
-            landmarkName = "-ra_mail:"
+            landmarkName = "-ra_previewDocument:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -314,12 +314,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.408658"
+            timestampString = "565080991.211346"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "222"
             endingLineNumber = "222"
-            landmarkName = "-ra_mail:"
+            landmarkName = "-ra_previewDocument:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -330,12 +330,12 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.409085"
+            timestampString = "565080991.212229"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "147"
             endingLineNumber = "147"
-            landmarkName = "-ra_openQRCodeScanner:"
+            landmarkName = "-ra_openPhotoLibrary:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -346,7 +346,7 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "../common/RAConvertor.m"
-            timestampString = "565060087.8014489"
+            timestampString = "565080991.213115"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "114"
@@ -362,13 +362,93 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
-            timestampString = "565060253.409602"
+            timestampString = "565080991.2157249"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "119"
             endingLineNumber = "119"
-            landmarkName = "RAWKWebView"
-            landmarkType = "3">
+            landmarkName = "-destroyMessageHandler"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
+            timestampString = "565080991.217345"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "384"
+            endingLineNumber = "384"
+            landmarkName = "-ra_share:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
+            timestampString = "565080991.218084"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "268"
+            endingLineNumber = "268"
+            landmarkName = "-ra_mail:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
+            timestampString = "565080991.219082"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "260"
+            endingLineNumber = "260"
+            landmarkName = "-ra_mail:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
+            timestampString = "565080991.219644"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "298"
+            endingLineNumber = "298"
+            landmarkName = "-ra_mail:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "APEX CRM/APEX CRM/RAWKWebView.m"
+            timestampString = "565081025.914099"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "426"
+            endingLineNumber = "426"
+            landmarkName = "-ra_share:"
+            landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
    </Breakpoints>

+ 5 - 0
RedAnt ERP Mobile/iSales-TRADESHOW.xcodeproj/xcuserdata/ray.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -9,6 +9,11 @@
 			<key>orderHint</key>
 			<integer>5</integer>
 		</dict>
+		<key>iSales-TRADESHOW.xcscheme_^#shared#^_</key>
+		<dict>
+			<key>orderHint</key>
+			<integer>5</integer>
+		</dict>
 		<key>iSales-USAI.xcscheme</key>
 		<dict>
 			<key>orderHint</key>

+ 5 - 0
RedAnt ERP Mobile/iSales-UNITED WAVER.xcodeproj/xcuserdata/ray.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -14,6 +14,11 @@
 			<key>orderHint</key>
 			<integer>7</integer>
 		</dict>
+		<key>iSales-UWAVER.xcscheme_^#shared#^_</key>
+		<dict>
+			<key>orderHint</key>
+			<integer>6</integer>
+		</dict>
 	</dict>
 </dict>
 </plist>

+ 5 - 0
RedAnt ERP Mobile/iSales-USAI.xcodeproj/xcuserdata/ray.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -9,6 +9,11 @@
 			<key>orderHint</key>
 			<integer>6</integer>
 		</dict>
+		<key>iSales-USAI.xcscheme_^#shared#^_</key>
+		<dict>
+			<key>orderHint</key>
+			<integer>7</integer>
+		</dict>
 	</dict>
 </dict>
 </plist>

+ 17 - 0
common/NSDictionary/NSDictionary+Extension.h

@@ -0,0 +1,17 @@
+//
+//  NSDictionary+Extension.h
+//  APEX CRM
+//
+//  Created by Ray on 2018/11/29.
+//  Copyright © 2018 USAI. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NSDictionary (Extension)
+-(BOOL) isNull:(NSString*)key;
+@end
+
+NS_ASSUME_NONNULL_END

+ 16 - 0
common/NSDictionary/NSDictionary+Extension.m

@@ -0,0 +1,16 @@
+//
+//  NSDictionary+Extension.m
+//  APEX CRM
+//
+//  Created by Ray on 2018/11/29.
+//  Copyright © 2018 USAI. All rights reserved.
+//
+
+#import "NSDictionary+Extension.h"
+
+@implementation NSDictionary (Extension)
+-(BOOL) isNull:(NSString*)key
+{
+    return ([self objectForKey:key]==nil || (NSNull*)[self objectForKey:key]==[NSNull null]);
+}
+@end