美文网首页
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