如何创建谓词以通过排序为整数的字符串属性获取核心数据实体?

How to create predicate to fetch core data entities by string property sorted as an integer?

提问人:Bartłomiej Semańczyk 提问时间:10/18/2023 最后编辑:halferBartłomiej Semańczyk 更新时间:10/21/2023 访问量:91

问:

我只是有一个有财产的实体Month

@objc(Month)
class Month: NSManagedObject {
    @NSManaged var identifier: String //202311, 202301, 201912 and so on, always year and month as a components
}

现在,我需要获取给定开始和结束之间标识符的所有月份,例如谓词格式:

"identifier >= 202306 AND identifier <= 202311"

我该怎么做?

iOS Swift Core-Data nspredicate

评论

1赞 Larme 10/18/2023
这要视情况而定。我猜逻辑是“yyyyMM”,所以如果总是有相同数量的字符,即“000301”(如果可能),一个简单的比较应该作为字符串工作。否则,我想知道是否也可以工作。这是关于排序还是过滤?identifier.intValue
0赞 Bartłomiej Semańczyk 10/18/2023
@Larme,当然🤦🏻 ♂️,它作为字符串工作......总是有相同数量的字符;谢谢。。。我错过了。

答:

1赞 Larme 10/18/2023 #1

您使用的是格式 ,因此实际上,您可以使用字符串比较:每个单位的数字计数相同(如果需要,前导零),以及最大(年)到最小(月)。yyyyMM

如果你在几个月和/或一年内没有前导零,它就不会起作用,但在你的情况下,、和应该起作用。>>===<=<