查询
@dynamicMemberLookup
public struct Query<T>
Query
是用于创建类型安全查询谓词的类。
使用Query
,您具有创建 Swift 风格的查询表达式的能力,然后将其构造到NSPredicate
中。Query
类不应直接实例化,而应仅用作将查询表达式作为参数的闭包中的参数。 示例:
public func where(_ query: ((Query<Element>) -> Query<Element>)) -> Results<Element>
然后,您可以像这样使用上述函数:
let results = realm.objects(Person.self).query {
$0.name == "Foo" || $0.name == "Bar" && $0.age >= 21
}
支持的谓词类型
Prefix
- not
!
swift let results = realm.objects(Person.self).query { !$0.dogsName.contains("Fido") || !$0.name.contains("Foo") }
比较
- Equals
==
- 不等于
!=
- 大于
>
- 小于
<
- GreaterThanOrEqual
>=
- LessThanOrEqual
<=
- between
.contains(_ range:)
集合
- 登录
.contains(_ element:)
- between
.contains(_ range:)
Map
- @allKeys
.keys
- @allValues
.values
多个子句
- 和
&&
- 或
||
collection聚合
- @avg
.avg
- @min
.min
- @max
.max
- @sum
.sum
- @count
.count
swift let results = realm.objects(Person.self).query { !$0.dogs.age.avg >= 0 || !$0.dogsAgesArray.avg >= 0 }
其他
- not
!
- subquery
($0.fooList.intCol >= 5).count > n
-
检查该值是否存在于collection中。
声明
Swift
public func `in`<U>(_ collection: U) -> Query<Bool> where T == U.Element, U : Sequence
-
仅用于测试目的。 请勿直接使用。
声明
Swift
public static func _constructForTesting() -> Query<T>
-
构造一个与 NSPredicate 兼容的字符串及其附带参数。
注意
这仅供内部使用,并出于测试目的而公开。声明
Swift
public func _constructPredicate() -> (String, [Any])
-
查询混合嵌套集合中的所有索引或键。
声明
Swift
public var any: Query<AnyRealmValue> { get }
-
查询collection中的对象的计数。
声明
Swift
public var count: Query<Int> { get }
-
检查此collection中是否存在元素。
声明
Swift
public func contains(_ value: T.Element) -> Query<Bool>
-
检查给定数组中包含的任何元素是否存在于collection中。
声明
Swift
public func containsAny<U>(in collection: U) -> Query<Bool> where U : Sequence, T.Element == U.Element
-
检查此collection中是否存在给定范围内的所有元素。
声明
Swift
public func contains(_ range: Range<T.Element>) -> Query<Bool>
-
检查此collection中是否存在给定范围内的所有元素。
声明
Swift
public func contains(_ range: ClosedRange<T.Element>) -> Query<Bool>
-
检查此collection中是否存在给定范围内的所有元素。
声明
Swift
public func contains(_ range: Range<T.Element.Wrapped>) -> Query<Bool>
-
检查此collection中是否存在给定范围内的所有元素。
声明
Swift
public func contains(_ range: ClosedRange<T.Element.Wrapped>) -> Query<Bool>
-
返回collection中的最小值。
声明
Swift
public var min: Query<T.Element> { get }
-
返回collection中的最大值。
声明
Swift
public var max: Query<T.Element> { get }
-
返回collection中的平均值。
声明
Swift
public var avg: Query<T.Element> { get }
-
返回collection中所有值的总和。
声明
Swift
public var sum: Query<T.Element> { get }
-
检查给定数组中包含的任何元素是否存在于地图的值中。
声明
Swift
public func containsAny<U>(in collection: U) -> Query<Bool> where U : Sequence, T.Value == U.Element
-
检查此collection中是否存在元素。
声明
Swift
public func contains(_ value: T.Value) -> Query<Bool>
-
允许查询 Map 中的所有值。
声明
Swift
public var values: Query<T.Value> { get }
-
允许查询
Map
中的所有键。声明
Swift
public var keys: Query<String> { get }
-
检查此collection中是否存在给定范围内的所有元素。
声明
Swift
public func contains(_ range: Range<T.Value>) -> Query<Bool>
-
检查此collection中是否存在给定范围内的所有元素。
声明
Swift
public func contains(_ range: ClosedRange<T.Value>) -> Query<Bool>
-
检查此collection中是否存在给定范围内的所有元素。
声明
Swift
public func contains(_ range: Range<T.Value.Wrapped>) -> Query<Bool>
-
检查此collection中是否存在给定范围内的所有元素。
声明
Swift
public func contains(_ range: ClosedRange<T.Value.Wrapped>) -> Query<Bool>
-
返回键控collection中的最小值。
声明
Swift
public var min: Query<T.Value> { get }
-
返回键控collection中的最大值。
声明
Swift
public var max: Query<T.Value> { get }
-
返回键控集合中的平均值。
声明
Swift
public var avg: Query<T.Value> { get }
-
返回键控collection中所有值的总和。
声明
Swift
public var sum: Query<T.Value> { get }
-
返回键控collection中所有值的计数。
声明
Swift
public var count: Query<Int> { get }
-
对枚举的原始值而不是枚举本身进行查询。
这可用于编写可以在 RawValue 但不能在枚举上表示的查询。 例如,您可以在字符串枚举上查询
.starts(with:)
,其中前缀不是枚举的成员。声明
Swift
public var rawValue: Query<T.RawValue> { get }
在以下情况下可用: T
: OptionalProtocol
、 T.Wrapped
: PersistableEnum
、 T.Wrapped.RawValue
: _RealmSchemaDiscoverable
-
对枚举的原始值而不是枚举本身进行查询。
这可用于编写可以在 RawValue 但不能在枚举上表示的查询。 例如,您可以在字符串枚举上查询
.starts(with:)
,其中前缀不是枚举的成员。声明
Swift
public var rawValue: Query<T.Wrapped.RawValue?> { get }
在以下情况下可用: T
: RealmCollection
、 T.Element
: PersistableEnum
、 T.Element.RawValue
: RealmCollectionValue
-
对collection中枚举的原始值而不是枚举本身进行查询。
这可用于编写可以在 RawValue 但不能在枚举上表示的查询。 例如,您可以在字符串枚举上查询
.starts(with:)
,其中前缀不是枚举的成员。声明
Swift
public var rawValue: Query<AnyRealmCollection<T.Element.RawValue>> { get }
在以下情况下可用: T
: RealmKeyedCollection
、 T.Value
: PersistableEnum
、 T.Value.RawValue
: RealmCollectionValue
-
对collection中枚举的原始值而不是枚举本身进行查询。
这可用于编写可以在 RawValue 但不能在枚举上表示的查询。 例如,您可以在字符串枚举上查询
.starts(with:)
,其中前缀不是枚举的成员。声明
Swift
public var rawValue: Query<Map<T.Key, T.Value.RawValue>> { get }
在以下情况下可用: T
: RealmCollection
、 T.Element
: OptionalProtocol
、 T.Element.Wrapped
: PersistableEnum
、 T.Element.Wrapped.RawValue
: _RealmCollectionValueInsideOptional
-
对collection中枚举的原始值而不是枚举本身进行查询。
这可用于编写可以在 RawValue 但不能在枚举上表示的查询。 例如,您可以在字符串枚举上查询
.starts(with:)
,其中前缀不是枚举的成员。声明
Swift
public var rawValue: Query<AnyRealmCollection<T.Element.Wrapped.RawValue?>> { get }
在以下情况下可用: T
: RealmKeyedCollection
、 T.Value
: OptionalProtocol
、 T.Value.Wrapped
: PersistableEnum
、 T.Value.Wrapped.RawValue
: _RealmCollectionValueInsideOptional
-
对collection中枚举的原始值而不是枚举本身进行查询。
这可用于编写可以在 RawValue 但不能在枚举上表示的查询。 例如,您可以在字符串枚举上查询
.starts(with:)
,其中前缀不是枚举的成员。声明
Swift
public var rawValue: Query<Map<T.Key, T.Value.Wrapped.RawValue?>> { get }
-
查询值的persistableValue,而不是值本身。
这可用于编写可在持久化类型上表示但不能在类型本身上表示的查询,例如对可持久化值的范围查询,或查询无法转换为映射类型的值。
对于不符合 PersistableEnum、CustomPersistable 或 FailableCustomPersistable 的类型,这不会执行任何有用的操作。
声明
Swift
public var persistableValue: Query<T.PersistedType> { get }
-
Query在collection中值的persistableValue,而不是值本身。
这可用于编写可在持久化类型上表示但不能在类型本身上表示的查询,例如对可持久化值的范围查询,或查询无法转换为映射类型的值。
对于不符合 PersistableEnum、CustomPersistable 或 FailableCustomPersistable 的类型,这不会执行任何有用的操作。
声明
Swift
public var persistableValue: Query<AnyRealmCollection<T.Element.PersistedType>> { get }
-
Query在collection中值的persistableValue,而不是值本身。
这可用于编写可在持久化类型上表示但不能在类型本身上表示的查询,例如对可持久化值的范围查询,或查询无法转换为映射类型的值。
对于不符合 PersistableEnum、CustomPersistable 或 FailableCustomPersistable 的类型,这不会执行任何有用的操作。
声明
Swift
public var persistableValue: Query<Map<T.Key, T.Value.PersistedType>> { get }
-
检查此collection中是否存在给定范围内的所有元素。
声明
Swift
public func contains(_ range: Range<T>) -> Query<Bool>
-
检查此collection中是否存在给定范围内的所有元素。
声明
Swift
public func contains(_ range: ClosedRange<T>) -> Query<Bool>
-
检查此collection中是否存在等于给定值的所有元素。
?
和*
可用作通配符,其中?
匹配 1 个字符,*
匹配 0 个或多个字符。声明
Swift
public func like(_ value: T, caseInsensitive: Bool = false) -> Query<Bool>
参数
value
使用的值。
caseInsensitive
true
如果是不区分大小写的搜索。 -
检查此collection中是否存在等于给定值的所有元素。
?
和*
可用作通配符,其中?
匹配 1 个字符,*
匹配 0 个或多个字符。声明
Swift
public func like<U>(_ column: Query<U>, caseInsensitive: Bool = false) -> Query<Bool>
参数
value
使用的值。
caseInsensitive
true
如果是不区分大小写的搜索。
-
检查此collection中是否存在包含给定值的所有元素。
声明
Swift
public func contains(_ value: T, options: StringOptions = []) -> Query<Bool>
参数
value
使用的值。
options
用于评估搜索查询的选项集。
-
比较此列是否包含另一列中的值。
声明
Swift
public func contains<U>(_ column: Query<U>, options: StringOptions = []) -> Query<Bool> where U : _Persistable, U.PersistedType : _QueryBinary
参数
column
另一列。
options
用于评估搜索查询的选项集。
-
检查此collection中是否存在以给定值开头的所有元素。
声明
Swift
public func starts(with value: T, options: StringOptions = []) -> Query<Bool>
参数
value
使用的值。
options
用于评估搜索查询的选项集。
-
比较此列与另一列中的值的开头。
声明
Swift
public func starts<U>(with column: Query<U>, options: StringOptions = []) -> Query<Bool>
参数
column
另一列。
options
用于评估搜索查询的选项集。
-
检查此collection中是否存在以给定值结尾的所有元素。
声明
Swift
public func ends(with value: T, options: StringOptions = []) -> Query<Bool>
参数
value
使用的值。
options
用于评估搜索查询的选项集。
-
比较此列与另一列中的值的结尾。
声明
Swift
public func ends<U>(with column: Query<U>, options: StringOptions = []) -> Query<Bool>
参数
column
另一列。
options
用于评估搜索查询的选项集。
-
检查此collection中是否存在等于给定值的所有元素。
声明
Swift
public func equals(_ value: T, options: StringOptions = []) -> Query<Bool>
参数
value
使用的值。
options
用于评估搜索查询的选项集。
-
比较此列是否等于另一给定列中的值。
声明
Swift
public func equals<U>(_ column: Query<U>, options: StringOptions = []) -> Query<Bool>
参数
column
另一列。
options
用于评估搜索查询的选项集。
-
检查此collection中是否存在不等于给定值的所有元素。
声明
Swift
public func notEquals(_ value: T, options: StringOptions = []) -> Query<Bool>
参数
value
使用的值。
options
用于评估搜索查询的选项集。
-
比较此列是否等于另一给定列中的值。
声明
Swift
public func notEquals<U>(_ column: Query<U>, options: StringOptions = []) -> Query<Bool>
参数
column
另一列。
options
用于评估搜索查询的选项集。
-
检查此collection中是否存在给定范围内的所有元素。
声明
Swift
public func contains(_ range: Range<T.Wrapped>) -> Query<Bool>
-
检查此collection中是否存在给定范围内的所有元素。
声明
Swift
public func contains(_ range: ClosedRange<T.Wrapped>) -> Query<Bool>
-
完成子查询表达式。
- 用法:
(($0.myCollection.age >= 21) && ($0.myCollection.siblings == 4))).count >= 5
注意
请勿在子查询表达式中混合使用collection。每个子查询只允许引用一个collection。声明
Swift
public var count: Query<Int> { get }
- 用法:
-
根据键路径返回collection中对象的最小值。
声明
Swift
public var min: Query { get }
-
根据键路径返回collection中对象的最大值。
声明
Swift
public var max: Query { get }
-
根据键路径返回collection中的对象的平均值。
声明
Swift
public var avg: Query { get }
-
根据键路径返回collection中的对象的总和。
声明
Swift
public var sum: Query { get }
-
使用
geoWithin
函数,通过地理空间形状(GeoBox
、GeoPolygon
或GeoCircle
)筛选位置点位于特定区域内的对象。看
GeoPoint
声明
Swift
func geoWithin<U>(_ value: U) -> Query<Bool> where U : RLMGeospatial