核心数据:如何在Transformable上使用NSPredicate?

3

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

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

它不起作用。 它确实适用于String属性。

我已经谷歌了一整天,但没有运气。 有人能告诉我如何实现吗? 谢谢!


我对CoreData中的Transformer不太熟悉,但是你如何将NSAttributedString保存到CoreData中?你可能需要进行“反向”操作来在其中进行过滤,例如somethingAsAttributedString.string CONTAINS[c]... - Larme
2个回答

4
我想在Core Data的转换属性上执行过滤。 如果您指的是Core Data的“transformable”属性,则无法实现该操作。当它们存储在Core Data中时,转换属性只是一系列字节。它不是持久存储中的带属性的字符串 - 它只是1和0。因此,您不能基于带属性的字符串内容进行过滤。 字符串可以使用,因为Core Data将它们保存为字符串。但是转换属性不起作用。您可以使用的唯一谓词是检查nil或非nil值的谓词。

1
非常感谢您,先生。我正在将富文本内容保存到Core Data中作为“Transformable”属性,我想通过用户输入的关键词来过滤富文本内容。有没有什么解决办法? - steveluoxin
没有可转换的,不行。 - Tom Harrington

3

在您的情况下,您可以对数据进行一定程度的去规范化,并将属性字符串的字符串值作为附加属性添加,然后可以使用该属性来进行过滤。


或者将属性单独保存为数据,与字符串分开存储,然后在需要展示时再将它们组合起来,如果存储是一个问题的话。 - Giles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接