我正在努力使用 DDMathParser 框架来满足我的表达要求。我有字段的 JSON & 基于表达式,某些字段可以设置为必需、隐藏或设置它的值。
示例 JSON 中所需标记中的表达式不是固定的,因此无法获得如何实现动态表达式的方法。
[
{
"name": "firstName",
"value": "Ameer",
**"required": true**
},
{
"name": "lastName",
"value": "Shaikh",
**"required": "$firstName != ‘’"**
},
{
"name": "designation",
"value": "",
**"required": "$firstName == ‘Ameer’ && $lastName == ‘Shaikh’"**
},
{
"name": "location",
"value": "",
**"hidden": false**
}
]
实际上,JSON 中的表达式包含 $ 来表示 JSON 中的字典对象值之一。其中框架在内部将其视为局部变量。
这些表达式也可能有不同的组合。除了“必需”参数之外,可能还有几个表达式。我需要为 UI 中的任何值变化运行所有相关表达式。
编辑
let expression = "$firstName == ‘Ameer’ && $lastName == ‘Shaikh’"
let dict = ["firstName": "Amir", "lastName": ""]
let e = try! Expression(string: expression)
let result = try! Evaluator.default.evaluate(e, substitutions: dict)
虽然它应该从 JSON 中解析一个正确的值,但我有硬编码的替换字符串至少可以取得突破。在这里,替换期望 String & Double & 给出错误为“无法将 [String: String] 类型的值转换为预期的 arg 类型替换 (Dcitionary)。有没有办法传递 String: String 替换?