问题标签 [nsexpression]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
151 浏览

ios - 使用 NSExpression 导出表达式

我被困在一段代码中,我需要根据传递的字典获取表达式结果。例如: expressionString = "(val1 + val2)" 如何从字典或其他地方传递这些值。我搜索了很多地方,但对我不起作用。

在上述情况下,我想知道如何通过传递任何参数来映射这些 val1 和 val2 数据。

是否可以实现let ex = NSExpression(format: expressionString, argumentArray:[parameter])

0 投票
1 回答
791 浏览

ios - 构建谓词(NSExpression)以确定 Mapbox SymbolStyle 图层的图标颜色

我最近开始在 iOS 上使用 Mapbox SDK,并且我有一些标记要添加到我的地图中。每个标记代表一个具有多个属性的对象,其中包括:类型属性(返回到枚举)和布尔属性。我有一个MGLSymbolStyleLayer定义,并且我已经相应地设置了大多数与图标相关的属性。目前,我仅根据对象的“类型”设置图标颜色,如下所示:

这工作得很好,但现在我需要在 中添加一个额外的逻辑NSExpression来检查每个对象的布尔属性,如果它是真的,那么将图标颜色设置为红色;否则,根据对象的类型确定每个对象的图标颜色(使用上面定义的逻辑)。所以简而言之,我需要一个NSExpression这样的功能:

我查看了 Mapbox Predicates and Expressions Reference文档,但我仍然不清楚如何在NSExpression. 谁能告诉我这是否可以做到,如果可以,怎么做?

0 投票
1 回答
781 浏览

math - 检查表达式是否有效

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'无法解析格式字符串“12+6+ == 1”'

我想验证表达式是否有效。我正在尝试使用以下代码:

我使用了 try-catch 语句,但我仍然在这里崩溃。有什么解决办法吗?

任何帮助,将不胜感激。

0 投票
1 回答
66 浏览

swift - NSExpression 自定义

如何在 ? 中添加我的中缀运算符NSExpression?我想^^NSExpression.

0 投票
0 回答
66 浏览

swift - 无法使用来自 readLine() 的字符串创建 NSExpression

这是我的代码:

我的代码一直说我的“格式:公式”有问题。

可选类型“字符串?”的值 必须解包为“字符串”类型的值

0 投票
1 回答
223 浏览

ios - 如何循环遍历动态大小的数组并将属性作为参数传递给可变参数函数?

我有一个有趣的问题,不确定我想做的事情是否可行。如果没有,我想我的问题还有其他解决方法。

我正在为 iOS 使用 Mapbox(MapKit 替代品)。Mapbox 具有样式层,可让您为地图上的不同图钉设置不同的图像。这是通过iconImageName根据所处理的地图引脚将图层设置为不同的值来完成的。作为样式层的iconImageName值是 an NSExpression,我们将格式作为字符串和任何其他数字传递,NSExpression以便它们适合格式。下面是从非动态图像创建样式层的示例,即这些图像被硬编码到应用程序中。

因此,当信息被硬编码到应用程序中时,这很容易做到。问题是,我有一系列从 API 请求返回的“引脚类型”,我可能需要在以后进行更改。这些 pin 类型具有与之关联的 photoUrl。

由于将来引脚类型的数量可能会发生变化,我必须在我的应用程序中提取类型,将它们解析为一组自定义对象,然后循环遍历每个对象并将它们的信息添加到 NSExpression 的格式中。下面是我如何做到这一点的一个例子:

我们的“格式”字符串的最终结果将始终如下所示(尽管具有不同数量的 pinType):

因此,我能够获得使用从我们的 API 请求中提取的动态数据创建的格式字符串,但现在是困难的部分。如何将动态数量的参数传递给函数?!

请注意,下一步是将iconImageName属性设置为可以接受任意数量参数的 NSExpression。回想一下我们的第一个硬编码数据示例:

第一个参数是格式字符串,所有其他参数都是NSExpression“填充”该格式字符串的 s。如何在 pinTypes 数组中“循环”并NSExpression为每个数组创建一个个体,并在设置样式层的 iconImageProperty 时将每个个体NSExpression作为参数传递?

TLDR 有没有一种方法可以,当将参数传递给一个可以接受任意数量参数的函数时,循环遍历一个大小可能不同的数组,从该数组中的每个元素创建一个对象,然后将其作为参数传递给可以接受任意数量参数的函数?

0 投票
1 回答
312 浏览

ios - 如何修复错误:二元运算符“==”不能应用于“NSExpression.ExpressionType”和“_”类型的操作数

我正在浏览 HomeKit 目录中的旧代码:当我遇到一个表达式时,创建家庭、配对和控制配件以及设置触发器

我不知道是什么

是指在左侧

当我搜索谷歌并堆栈溢出“KeyPathExpressionType”时,我什么也没找到。这是一样的

我什么也没找到。

这些相等比较中的每一个

在下面的代码中,生成一条错误消息,内容为:

二元运算符“==”不能应用于“NSExpression.ExpressionType”和“_”类型的操作数

更换时错误消失

这个对吗?谁能告诉我这个问题的启发?

0 投票
0 回答
294 浏览

ios - 如何从 NSExpression 中提取 Int 值?

我有一个带有一些集群点的地图视图(mapbox),集群是根据geojson排列和显示的,集群的逻辑就像它有邻居一样,当地图缩小时它们会集群。

这很好用,但是,我需要在 中提取值NSExpression,但我找不到解决方法。这种方法有什么常见的做法吗?

我使用这个例子作为我的基础。 https://docs.mapbox.com/ios/maps/examples/clustering/

我已经修改了这个,所以集群大小取决于集群中的点数,但是,当有很多点时,在 120 点范围内的某个地方,集群变得太大,所以我提取的原因point_count是我可以使用它设置一些规则。另外,如果您对我的问题有更好的解决方案,请分享。

我期待从NSExpression(format: "CAST(point_count, 'NSNumber')")In中提取 point_count

0 投票
0 回答
50 浏览

swift - 如何创建一个提取来总结属性之间的差异

在实体 Shift 中,我有两个属性 startTime 和 endTime,我想取差值,然后对所有获取的值求和。

现在这个 fetch 返回一个包含 [{duration, 3}, {duration, 6}] 的字典数组,但我想总结所有的持续时间值。

我在 INSERT A 尝试了以下操作

但这会因发送无法识别的选择器而崩溃,我也尝试过

0 投票
0 回答
107 浏览

swift - 使用 CoreData 聚合操作

我有一个CoreData“数据库”,为了简化,假设我的对象有两个属性:一个变量名和一个变量值。我想通过“变量名称”(“GROUP BY”)聚合数据库的内容,对于每个变量“名称”,我想找到变量值的标准偏差。为此,我使用 NSExpression: expressionDescription.expression = NSExpression(format: "valeur_nombre.@stddev")

问题是我收到以下错误:

[错误] CoreData:在 NSPersistentStoreCoordinator -performBlock 期间捕获了异常:无法为表达式生成选择目标令牌:valeur_nombre.@stddev with userInfo (null)

我尝试使用具有不同“聚合操作”的相同代码:-count -sum -max -min 没有问题。但是,当我尝试像在 Apple Docs 中那样计算平均值时: expressionDescription.expression = NSExpression(format: "valeur_nombre.@average")

我收到此错误:

[错误] CoreData:在 NSPersistentStoreCoordinator -performBlock 期间捕获了异常:无法为表达式生成选择目标令牌:valeur_nombre.@average with userInfo (null)

如果我用 "avg" 替换 "average": expressionDescription.expression = NSExpression(format: "valeur_nombre.@avg") 然后我得到了正确的结果不幸的是,我没有找到任何解决方法: -median -stddev

有人能帮我吗 ?