【问题标题】:Core Data: How can I use NSPredicate on Transformable?核心数据:如何在 Transformable 上使用 NSPredicate?
【发布时间】:2018-03-26 17:50:02
【问题描述】:

我想对 Core Data 上的 Transformable 属性执行过滤。 Transformer 值实际上是 NSAttributedString。我尝试设置如下谓词:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(attributedString CONTAINS[cd] %@), _searchString];

它不起作用。它当然适用于 String 属性。

我已经用谷歌搜索了一整天,但没有运气。 谁能告诉我如何做到这一点?谢谢!

【问题讨论】:

标签: core-data nspredicate


【解决方案1】:

我想对 Core Data 上的 Transformer 属性执行过滤。

如果你的意思是核心数据“可转换”属性,你真的不能这样做。转换后的属性只是存储在 Core Data 中的字节集合。它不是持久存储中的属性字符串——它只是 1 和 0。因此,您无法根据属性字符串内容进行过滤。

字符串之所以有效,是因为 Core Data 将它们保存为字符串。但是可转换的属性不是这样工作的。您可以与此属性一起使用的唯一谓词是检查 nil 或非 nil 值的谓词。

【讨论】:

  • 谢谢您,先生。我将富文本内容作为Transformable 属性保存到Core Data,我想通过用户输入的关键字过滤富文本内容。有什么解决办法吗?
  • 没有可变形的,没有。
【解决方案2】:

在您的情况下,您可以做的一件事是对您的数据进行一点反规范化,并将属性字符串的字符串值添加为附加属性,然后您可以使用该属性进行过滤。

【讨论】:

  • 或者将属性保存为与字符串分开的数据,然后在需要呈现时将它们放在一起,如果存储是一个问题。
猜你喜欢
  • 2013-01-12
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
  • 2011-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多