CoreData 中的 URI 类型属性:如何使用 NSPredicate 进行查询
URI typed attributes in CoreData: how to query with NSPredicate
我有一个 CoreData-Entity,它存储一个类型为“URI”的名为“imageUrl”的属性。
它用于存储 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"))
我的回答是不要让那个问题没有答案,但在我看来,我们三个 @nylki (the author), @Joakim Danielson 和我自己一起回答了这个问题。那我就把它标记为“Community Wiki”。
CoreData 中的 URI
是 URL
对象。 NSAttributeDescription.AttributeType
for the NSAttributeDescription.AttributeType.uri
.
的文档中是这样写的
LIKE
谓词中的关键字用于字符串比较,如 Predicate Format String Syntax 文档所述,因此我们需要使用 =
代替。
所以答案是:
NSPredicate(format: "imageUrl = %@", imageUrl as CVarArg)
或
NSPredicate(format: "imageUrl = %@", argumentArray: [imageUrl])
如果我们不想使用 as CVarArg
.
避免拼写错误的更好方法是使用 %K
占位符,该占位符用于 %K is a var arg substitution for a key path.
。合并为 #keyPath()
:
NSPredicate(format: "%K = %@", argumentArray: [#keyPath(YourEntityClass.imageUrl), imageUrl])
那样的话,如果我们用大写 i
而不是可能看不到的 l
错误 "imageUrI = %@"
写入,我们确保路径。
我有一个 CoreData-Entity,它存储一个类型为“URI”的名为“imageUrl”的属性。 它用于存储 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"))
我的回答是不要让那个问题没有答案,但在我看来,我们三个 @nylki (the author), @Joakim Danielson 和我自己一起回答了这个问题。那我就把它标记为“Community Wiki”。
CoreData 中的URI
是 URL
对象。 NSAttributeDescription.AttributeType
for the NSAttributeDescription.AttributeType.uri
.
LIKE
谓词中的关键字用于字符串比较,如 Predicate Format String Syntax 文档所述,因此我们需要使用 =
代替。
所以答案是:
NSPredicate(format: "imageUrl = %@", imageUrl as CVarArg)
或
NSPredicate(format: "imageUrl = %@", argumentArray: [imageUrl])
如果我们不想使用 as CVarArg
.
避免拼写错误的更好方法是使用 %K
占位符,该占位符用于 %K is a var arg substitution for a key path.
。合并为 #keyPath()
:
NSPredicate(format: "%K = %@", argumentArray: [#keyPath(YourEntityClass.imageUrl), imageUrl])
那样的话,如果我们用大写 i
而不是可能看不到的 l
错误 "imageUrI = %@"
写入,我们确保路径。