美文网首页
ios 与js交互判断式

ios 与js交互判断式

作者: 张大宝 | 来源:发表于2021-05-27 09:32 被阅读0次

    .h

    #import <JavaScriptCore/JSValue.h>

    #import <JavaScriptCore/JSContext.h>

    @property (strong, nonatomic) JSContext *jsContext;

    @property(strong,nonatomic)NSString *jsJuageStr;

    @property(strong,nonatomic)NSString *jsJuageFunctionStr;

    .m

    self.jsJuageStr = @"function canDisplay(param,keyName,dealearName,delearShowName,needMonthly,needMonthlyShowStr,personName,personNameShowArr){if(keyName==\"4S店名称\"){return true;}else if(param.keyName==\"销售选择\"){if(dealearName==delearShowName){return true;}return false;}else if(keyName==\"购车总价\"){if(dealearName==delearShowName&&personNameShowArr.includes(personName)){return true;}return false;}else if(keyName==\"是否分期\"){if(dealearName==delearShowName&&personNameShowArr.includes(personName)){return true;}return false;}else if(keyName==\"贷款利率\"){if(dealearName==delearShowName&&personNameShowArr.includes(personName)){return true;}return false;}else if(keyName==\"分期数\"){if(dealearName==delearShowName&&personNameShowArr.includes(personName)&&needMonthly==needMonthlyShowStr){return true;}return false;}else if(keyName==\"分期金额\"){if(dealearName==delearShowName&&personNameShowArr.includes(personName)&&needMonthly==needMonthlyShowStr){return true;}return false;}else if(keyName==\"车单备注\"){if(dealearName==delearShowName&&personNameShowArr.includes(personName)){return true;}return false;}return false;}";

    self.jsJuageStr = @"function

    canDisplay(keyName,dealearName,delearShowName,needMonthly,needMonthlyShowStr,personName,personNameShowArr){if(1==1){return

    true;}return true;}";

    _jsJuageFunctionStr = [NSString stringWithFormat:@"canDisplay('%@','%@','%@','%@','%@','%@',%@)",
                           self.keyName?self.keyName:@"-1",
                           self.dealearName?self.dealearName:@"-1",
                           self.delearShowName?self.delearShowName:@"-1",
                           self.needMonthly?self.needMonthly:@"-1",
                           self.needMonthlyShowStr?self.needMonthlyShowStr:@"-1",
                           self.personName?self.personName:@"-1",
                           self.personNameShowArr?[self jsEncodeWithDictionaryOrArray:self.personNameShowArr]:[self jsEncodeWithDictionaryOrArray:@[@"-1"]]];

        //如果4s店名==宝马 ,分期方式==分期,销售选择!=销售王大宝,所有显示为true,否则显示为false

        self.textView.text = [NSString stringWithFormat:@"%@\n如果4s店名==宝马 ,分期方式==分期,销售选择!=销售王大宝,所有true显示,否则响应部分false显示",self.jsJuageStr];

        self.delearShowName = @"宝马";

        self.needMonthlyShowStr = @"分期";

        NSMutableArray *originArr = ((Model*)((NSMutableArray*)(self.arr[1]))).dataArr.mutableCopy;

        [originArr removeObject:@"销售王大宝"];

        self.personNameShowArr =originArr;

    ///对象转json

    - (NSString*)jsonStringWithObject:(id)object {

        NSString * jsonString = @"";

        NSError * error;

        if (object) {

            NSData * jsonData = [NSJSONSerialization dataWithJSONObject:object options:NSJSONWritingPrettyPrinted error:&error];

            if (jsonData) {

                jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

            }

        }

        return jsonString;

    }

    /// Base64编码

    - (NSString *)base64Encode:(NSString *)string {

        if (!string) {

            NSLog(@"base64 is nil");

            return @"";

        }

        // 1.把字符串转换成二进制

        NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

        // 2.把二进制进行Base64编码

        NSString *result = [data base64EncodedStringWithOptions:0];

        // 3.返回结果

        return result;

    }

    - (NSString *)encodeWithString:(NSString *)string {

        NSString * resultStr;

        if (string) {//旧的方法

            NSString *charactersToEscape = @"?!@#$^&%*+,:;='\"`<>()[]{}/\\| ";

            NSCharacterSet *allowedCharacters = [[NSCharacterSet characterSetWithCharactersInString:charactersToEscape] invertedSet];

            resultStr = [string stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters];

        }else {

            NSLog(@"encode string is nil");

            resultStr = @"";

        }

        return resultStr;

    }

    -(NSString *)jsEncodeWithDictionaryOrArray:(id )obj {

        NSString * json = [self jsonStringWithObject:obj];

        NSString * baseResult = [self base64Encode:json];

        NSString * jsonResult = [self encodeWithString:json];

        return json;

    //    NSString * json = [self jsonStringWithObject:obj];

    //    NSString * baseResult = [self base64Encode:json];

    //    NSString * jsonResult = [self encodeWithString:baseResult];

    //    return jsonResult;

        /*    在对URL中的中文进行转码时,在iOS 9之前我们使用

            [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

            在iOS 9之后使用:

            [str stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];*/

    }

    相关文章

      网友评论

          本文标题:ios 与js交互判断式

          本文链接:https://www.haomeiwen.com/subject/zxsrsltx.html