From ddd1ffb29f23c2bcc60b9af065f3d38dc77abbc9 Mon Sep 17 00:00:00 2001 From: John Rommel Estropia Date: Sat, 3 Jun 2017 08:51:52 +0900 Subject: [PATCH] added ~= operation to create Where clauses for value arrays --- Sources/CoreStoreObject+Querying.swift | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Sources/CoreStoreObject+Querying.swift b/Sources/CoreStoreObject+Querying.swift index 3157fc2..05630de 100644 --- a/Sources/CoreStoreObject+Querying.swift +++ b/Sources/CoreStoreObject+Querying.swift @@ -233,6 +233,18 @@ public extension ValueContainer.Required { return Where("%K >= %@", attribute.keyPath, value) } + + /** + Creates a `Where` clause from a `CoreStoreObject.Value` property. + ``` + let dog = CoreStore.fetchOne(From(), Dog.where { ["Pluto", "Snoopy", "Scooby"] ~= $0.nickname }) + ``` + */ + @inline(__always) + public static func ~= (_ sequence: S, _ attribute: ValueContainer.Required) -> Where where S.Iterator.Element == V { + + return Where(attribute.keyPath, isMemberOf: sequence) + } } @@ -263,6 +275,18 @@ public extension ValueContainer.Optional { return !Where(attribute.keyPath, isEqualTo: value) } + + /** + Creates a `Where` clause from a `CoreStoreObject.Value` property. + ``` + let dog = CoreStore.fetchOne(From(), Dog.where { ["Pluto", "Snoopy", "Scooby"] ~= $0.nickname }) + ``` + */ + @inline(__always) + public static func ~= (_ sequence: S, _ attribute: ValueContainer.Optional) -> Where where S.Iterator.Element == V { + + return Where(attribute.keyPath, isMemberOf: sequence) + } }