问题标签 [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 回答
467 浏览

core-data - 在核心数据中使用 NSExpression CAST 和 NSPredicate

我的问题与您在此线程中看到的完全相同: stackoverflow thread

但是有一个小的区别。我尝试使用上述线程的图像来解释它。CS 关系包含C所描述的类型对象,但也包含E类型对象,因为E类型对象是从C类型对象派生的。

在线程的图像上,E类型对象不存在,这就是区别。Etype 属性也有关系CS

当我尝试使用以下查询访问E类型对象的属性时,问题就出现了:CSSUBQUERY(bs, $x, ANY $x.cs.cs ....

查询没有完成,但重要的代码在那里。正如我所观察到的,谓词创建失败,因为它试图使用类型对象CS上的关系。C我试图CAST在变量上使用运算符$x.cs但没有成功。

有人对此有线索吗?


编辑:添加图像
在此处输入图像描述

的实体可以包含values和类型。这就是问题所在,因为被设置为与 的关系,但是,因为是从可以包含实体派生的,目前我无法再次调用。MKMultiAttributeMKAttributeMKMultiAttributevaluesMKAttributeMKMultiAttributeMKAttributevaluesMKMultiAttributevalues

0 投票
2 回答
999 浏览

ios - 聚合函数上的 iOS FetchRequest:如何包含待处理的更改?

我终于至少缩小了这个问题的范围。我正在计算一些支出的聚合函数(如本例中的总和)。如果我更改了一些支出,则此聚合获取不会立即刷新,而是会在一段时间后刷新(可能是在将更改保存到数据库之后)。我在文档中找到了这部分:

根据文档

YES不支持与结果类型一起使用的 值NSDictionaryResultType,包括聚合结果的计算(例如最大值和最小值)。对于字典,从 fetch 返回的数组反映了持久存储中的当前状态,并且不考虑上下文中的任何未决更改、插入或删除。如果您需要为一些简单的聚合(例如 max 和 min)考虑挂起的更改,则可以改用普通的 fetch 请求,按您想要的属性排序,获取限制为 1。

好的,我如何仍然包含待处理的更改?我正在使用 aNSFetchedResultsController来显示我的数据。这是我的聚合函数:

编辑: *循环是否NSSet可能且足够快?*

编辑最后回答 谢谢大家,我终于在循环中找到了问题。这工作得非常快而且很好:

从控制器DidChangeContent 调用。

今天就够了.. :-)

0 投票
1 回答
849 浏览

ios - 逻辑 NSExpression 评估

此代码有效:

但是这个没有,它最终变成了一个NSInvalidArgumentException

有谁知道是否有一种方法可以使用 NSExpression 来评估这样的逻辑表达式?

谢谢。

0 投票
1 回答
499 浏览

ios - 使用核心数据的不同 id 列的总和

我想获得一个不同id的列中所有值的总和(在我的例子中是日期)。我的代码是

当我运行上述查询时,我得到 a 列、b 列和不同日期的总和。问题是它不会将不同日期的总和相加,而是将 a 和 b 列中的所有值相加。

简而言之,我想在这个问题链接中得到结果,但在核心数据中。任何帮助将不胜感激。

0 投票
1 回答
523 浏览

core-data - 核心数据:分组和计数结果返回空列表

考虑以下核心数据实体:

人员- personId:NSNumber,名称:NSString,位置:NSString

使用 Core Data,我正在尝试复制以下 SQL 查询:

以下是objective-c等价物:

Person 实体肯定是填充的,但是,在执行上述代码时,results数组是空的。想法?

0 投票
1 回答
1561 浏览

core-data - NSPredicate 用于检查核心数据中的 NULL 和空白字符串

由于不支持 CoreData 长度,并且 CoreData 将谓词 name.length > 1 转换为 sqlite in name > 1 ... 虽然它应该是 length(name) > 1。

我们可以使用这个:[NSPredicate predicateWithFormat:@"NOT name MATCHES '^\s*$'"];

但是正则表达式将具有更高的计算成本(比评估正则表达式花费的时间比简单的相等要长)。

所以我必须怎么做。有什么好主意吗?

0 投票
3 回答
4374 浏览

ios - 是否可以在havingPredicate 中使用按计数分组来获取CoreData(用于重复检测)?

作为参考,我要解决的问题是有效地查找和删除可能包含大量条目的表中的重复项。

我正在使用的表称为 PersistedDay,其中包含一个 dayString 对象(它是一个字符串。:-P)。还有更多与此问题无关的列。我想找到任何有重复的 PersistedDay。

在 SQL 中,这是您可以做到这一点的有效方法之一(仅供参考,我可以在支持 SQLite DB 的 CoreData 上执行此查询):

这仅返回具有重复项的 dayStrings,然后您可以通过使用生成的日期字符串进行查询来获取这些对象的所有字段(您可以将其用作子查询以在一个请求中完成所有操作)。

NSFetchRequest 似乎也具有执行此操作所需的所有部分,但它似乎并不完全有效。这是我试图做的:

那是行不通的。:-P 如果我尝试获取错误“Unsupported function expression count:(dayString)”。我认为“dayString.@count”中的 dayString 甚至在上面的代码中都不重要......但是,为了清楚起见,我把它放在了里面(SQL 计数只对分组的行进行操作)。

所以,我的问题是:这可能吗?如果可以,这样做的语法是什么?我在 CoreData 文档中找不到任何内容来说明如何执行此操作。

我发现了一个类似的 SO 帖子,不幸的是我现在找不到了,它是关于在有子句中运行计数(我认为没有 group by)。但是,海报在没有找到解决方案后放弃了并以不同的方式做了。我希望这更明确,所以也许有人有答案。:)

作为参考,这是我现在正在做的工作,但需要返回几乎所有行,因为在大多数情况下重复很少:

然后我必须遍历结果,只返回 dayStringCount > 1 的结果。这就是 having 子句应该做的。:-P

注意:我知道 CoreData 不是 SQL。:) 只是想知道我是否可以以与 SQL 相同的效率进行等效类型的操作。

0 投票
0 回答
417 浏览

objective-c - 聚合函数中的核心数据比较

具有两个属性的核心数据实体:startDaystartDateTime. 这两个属性都是 NSDate 对象。startDay将其时间组件设置为午夜,并startDateTime指定带有时间的日期。startDay两者之内的“日历日”startDateTime是相同的。

这里有一些对象

需要获取按 . 分组的对象startDay。需要知道“上午”或“下午”是否有事件。

以下是如何获取按分组的结果startDay以及报告最早和最新的每日事件的方法。

该代码正在返回

如果是这样就更酷了

如何修改我的获取请求以获取我的NSExpression(或NSExpressionDescription?)的日期比较,以便核心数据检查是否min/maxEventStartTime在中午之前/之后,并返回一个 BOOL 而不是实际NSDate对象。

0 投票
1 回答
1107 浏览

ios - 如何从 NSExpression 的 expressionValueWithObject:context 方法中获取浮点数?

我已经实现了一个自定义计算器,我在其中使用以下代码来评估算术表达式,例如 5+3*5-3。

但是,当我有除法运算的整数时,结果我只得到整数。假设 5/2 我得到 2 结果。由于整数除法,它适合编程的震动。

但我需要浮点结果。

我怎样才能得到它而不是扫描表达式字符串并将整数除数替换为浮点数。在我们的示例中为 5/2.0 或 5.0/2。

0 投票
1 回答
884 浏览

ios - 使用 NSExpression expressionForSubquery 有条件地求和和计数数据

我有下表,我想获取文件大小字段数据的总和,其中 isSelectedForSync标志将为YES。

这是 DigitalLibrary 表属性

表名:数字图书馆

属性及其类型:

  • 数字图书馆 ID (NSNumber)
  • 文件名(NSString)
  • 连接类型(NSString)
  • 文件大小(NSNumber - doubleValue)
  • isSelectedForSync (NSNumber - BOOL)
  • isSync (NSNumber - BOOL)

我想获取 isSelectedForSync 标志为YES的文件计数。还需要获取 isSelectedForSync 的 fileSize 的总和

我正在尝试低于 NSExpression,但没有得到我想要的。它也给了我错误。

如果我删除'selectedFileSizeTotalExpressionDescription',上面的代码工作得很好,但需要如上所述的selectedFileSizeTotalExpressionDescription。

我对如何使用 NSExpression expressionForSubquery 方法感到非常困惑。

以下是包含在 DigitalLibrary 表中的数据:

我想要以下结果: