【发布时间】:2022-01-08 04:36:08
【问题描述】:
我有一个CoreData-Entity,它存储一个名为“imageUrl”的“URI”类型的属性。 它用于存储 URL(如在 Swift URL / NSURL 中),例如。渲染远程图像。
如何查询 URI 类型属性的字符串表示形式?
示例:我想更精确地获取与 "http://mydomain.jpg" 或 URL(string: "http://mydomain.jpg") 匹配的所有对象。
对于“字符串”类型的属性,这就足够了:
NSPredicate(format: "myStringAttribute LIKE %@", "http://mydomain.jpg")
以下内容是否适用于 URI 类型的属性?
NSPredicate(format: "imageUrl LIKE %@", URL(string: "http://mydomain.jpg"))
【问题讨论】:
-
它应该可以工作,因为根据developer.apple.com/documentation/coredata/…,URI 类型是
URL -
LIKE假定进行字符串比较,因此请使用=来比较URL对象。 -
@Larme thx,这是一个有用的参考! @JoakimDanielson 感谢您的发现。我能够使用
NSPredicate(format: "imageUrl = %@", imageUrl as CVarArg)成功查询,因为 XCode 抱怨 URL 不符合 CVarArg。 -
你也可以
NSPredicate(format: "imageUrl = %@", argumentArray: [imageUrl])来避免演员阵容。旁注,我什至会使用%K来避免拼写错误:NSPredicate(format: "%K = %@", argumentArray: [#keyPath(YourEntityClass.imageUrl), imageUrl])
标签: swift core-data nspredicate nsfetchrequest