Query
@dynamicMemberLookup
public struct Query<T>
Query
é uma classe usada para criar predicados de query seguros por tipo.
Com o Query
, você tem a capacidade de criar uma expressão de query no estilo Swift que será construída em um NSPredicate
. A classe Query
não deve ser instanciada diretamente e deve ser usada somente como parâmetro dentro de um fechamento que receba uma expressão de query como argumento. Exemplo:
public func where(_ query: ((Query<Element>) -> Query<Element>)) -> Results<Element>
Você usaria então a função acima da seguinte forma:
let results = realm.objects(Person.self).query {
$0.name == "Foo" || $0.name == "Bar" && $0.age >= 21
}
Tipos de predicados suportados
Prefixo
- NÃO
!
swift let results = realm.objects(Person.self).query { !$0.dogsName.contains("Fido") || !$0.name.contains("Foo") }
Comparações
- Iguais
==
- Não é igual a
!=
- Maior que
>
- menos de
<
- GreaterThanOrEqual
>=
- LessThanOrEqual
<=
- entre
.contains(_ range:)
Collections
- Em
.contains(_ element:)
- entre
.contains(_ range:)
Map
- @allKeys
.keys
- @allValues
.values
composto
- e a
&&
- ou
||
aggregation de 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 }
Outro
- NÃO
!
- subquery
($0.fooList.intCol >= 5).count > n
-
Verifica se o valor está presente na collection.
Declaração
Swift
public func `in`<U>(_ collection: U) -> Query<Bool> where T == U.Element, U : Sequence
-
Apenas para fins de teste. Não use diretamente.
Declaração
Swift
public static func _constructForTesting() -> Query<T>
-
Constrói uma string compatível com NSPredicate com seus argumentos acompanhantes.
Observação
Isso é apenas para uso interno e está exposto para fins de teste.Declaração
Swift
public func _constructPredicate() -> (String, [Any])
-
Consultar todos os índices ou chaves em uma coleção aninhada mista.
Declaração
Swift
public var any: Query<AnyRealmValue> { get }
-
query a contagem dos objeto na collection.
Declaração
Swift
public var count: Query<Int> { get }
-
Verifica se existe um elemento nesta coleção.
Declaração
Swift
public func contains(_ value: T.Element) -> Query<Bool>
-
Verifica se algum elemento contido na matriz fornecida está presente na collection.
Declaração
Swift
public func containsAny<U>(in collection: U) -> Query<Bool> where U : Sequence, T.Element == U.Element
-
Verifica todos os elementos nesta collection que estão dentro de um determinado intervalo.
Declaração
Swift
public func contains(_ range: Range<T.Element>) -> Query<Bool>
-
Verifica todos os elementos nesta collection que estão dentro de um determinado intervalo.
Declaração
Swift
public func contains(_ range: ClosedRange<T.Element>) -> Query<Bool>
-
Verifica todos os elementos nesta collection que estão dentro de um determinado intervalo.
Declaração
Swift
public func contains(_ range: Range<T.Element.Wrapped>) -> Query<Bool>
-
Verifica todos os elementos nesta collection que estão dentro de um determinado intervalo.
Declaração
Swift
public func contains(_ range: ClosedRange<T.Element.Wrapped>) -> Query<Bool>
-
Retorna o valor mínimo na collection.
Declaração
Swift
public var min: Query<T.Element> { get }
-
Retorna o valor máximo na collection.
Declaração
Swift
public var max: Query<T.Element> { get }
-
Retorna a média da collection.
Declaração
Swift
public var avg: Query<T.Element> { get }
-
Retorna a soma de todos os valores na collection.
Declaração
Swift
public var sum: Query<T.Element> { get }
-
Verifica se algum elemento contido na matriz fornecida está presente nos valores do mapa.
Declaração
Swift
public func containsAny<U>(in collection: U) -> Query<Bool> where U : Sequence, T.Value == U.Element
-
Verifica se existe um elemento nesta coleção.
Declaração
Swift
public func contains(_ value: T.Value) -> Query<Bool>
-
Permite uma query sobre todos os valores no Mapa.
Declaração
Swift
public var values: Query<T.Value> { get }
-
Permite uma query sobre todas as chaves no
Map
.Declaração
Swift
public var keys: Query<String> { get }
-
Verifica todos os elementos nesta collection que estão dentro de um determinado intervalo.
Declaração
Swift
public func contains(_ range: Range<T.Value>) -> Query<Bool>
-
Verifica todos os elementos nesta collection que estão dentro de um determinado intervalo.
Declaração
Swift
public func contains(_ range: ClosedRange<T.Value>) -> Query<Bool>
-
Verifica todos os elementos nesta collection que estão dentro de um determinado intervalo.
Declaração
Swift
public func contains(_ range: Range<T.Value.Wrapped>) -> Query<Bool>
-
Verifica todos os elementos nesta collection que estão dentro de um determinado intervalo.
Declaração
Swift
public func contains(_ range: ClosedRange<T.Value.Wrapped>) -> Query<Bool>
-
Retorna o valor mínimo na collection chaveada.
Declaração
Swift
public var min: Query<T.Value> { get }
-
Retorna o valor máximo na coleção chaveada.
Declaração
Swift
public var max: Query<T.Value> { get }
-
Retorna a média na collection com chave.
Declaração
Swift
public var avg: Query<T.Value> { get }
-
Retorna a soma de todos os valores na collection com chaves.
Declaração
Swift
public var sum: Query<T.Value> { get }
-
Retorna a contagem de todos os valores na collection com chave.
Declaração
Swift
public var count: Query<Int> { get }
-
query no valor bruto da enumeração em vez da própria enumeração.
Isso pode ser usado para escrever query que podem ser expressas no RawValue, mas não na enumeração. Por exemplo, isso permite fazer query de
.starts(with:)
em um enum de string em que o prefixo não é membro do enum.Declaração
Swift
public var rawValue: Query<T.RawValue> { get }
Disponível onde T
: OptionalProtocol
, T.Wrapped
: PersistableEnum
, T.Wrapped.RawValue
: _RealmSchemaDiscoverable
-
query no valor bruto da enumeração em vez da própria enumeração.
Isso pode ser usado para escrever query que podem ser expressas no RawValue, mas não na enumeração. Por exemplo, isso permite fazer query de
.starts(with:)
em um enum de string em que o prefixo não é membro do enum.Declaração
Swift
public var rawValue: Query<T.Wrapped.RawValue?> { get }
Disponível onde T
: RealmCollection
, T.Element
: PersistableEnum
, T.Element.RawValue
: RealmCollectionValue
-
A query sobre o valor bruto dos Enums na coleção, em vez dos próprios Enums.
Isso pode ser usado para escrever query que podem ser expressas no RawValue, mas não na enumeração. Por exemplo, isso permite fazer query de
.starts(with:)
em um enum de string em que o prefixo não é membro do enum.Declaração
Swift
public var rawValue: Query<AnyRealmCollection<T.Element.RawValue>> { get }
Disponível onde T
: RealmKeyedCollection
, T.Value
: PersistableEnum
, T.Value.RawValue
: RealmCollectionValue
-
A query sobre o valor bruto dos Enums na coleção, em vez dos próprios Enums.
Isso pode ser usado para escrever query que podem ser expressas no RawValue, mas não na enumeração. Por exemplo, isso permite fazer query de
.starts(with:)
em um enum de string em que o prefixo não é membro do enum.Declaração
Swift
public var rawValue: Query<Map<T.Key, T.Value.RawValue>> { get }
Disponível onde T
: RealmCollection
, T.Element
: OptionalProtocol
, T.Element.Wrapped
: PersistableEnum
, T.Element.Wrapped.RawValue
: _RealmCollectionValueInsideOptional
-
A query sobre o valor bruto dos Enums na coleção, em vez dos próprios Enums.
Isso pode ser usado para escrever query que podem ser expressas no RawValue, mas não na enumeração. Por exemplo, isso permite fazer query de
.starts(with:)
em um enum de string em que o prefixo não é membro do enum.Declaração
Swift
public var rawValue: Query<AnyRealmCollection<T.Element.Wrapped.RawValue?>> { get }
Disponível onde T
: RealmKeyedCollection
, T.Value
: OptionalProtocol
, T.Value.Wrapped
: PersistableEnum
, T.Value.Wrapped.RawValue
: _RealmCollectionValueInsideOptional
-
A query sobre o valor bruto dos Enums na coleção, em vez dos próprios Enums.
Isso pode ser usado para escrever query que podem ser expressas no RawValue, mas não na enumeração. Por exemplo, isso permite fazer query de
.starts(with:)
em um enum de string em que o prefixo não é membro do enum.Declaração
Swift
public var rawValue: Query<Map<T.Key, T.Value.Wrapped.RawValue?>> { get }
-
A query sobre o persistableValue do valor em vez do valor em si.
Isso pode ser usado para gravar consultas que podem ser expressas no tipo persistente, mas não no tipo em si, como consultas de intervalo no valor persistente ou para consultar valores que não podem ser convertidos para o tipo mapeado.
Para tipos que não estão em conformidade com PersistableEnum, CustomPersistable ou FailableCustomPersistable, isso não faz nada de útil.
Declaração
Swift
public var persistableValue: Query<T.PersistedType> { get }
-
A query sobre o persistableValue dos valores na collection em vez dos valores em si.
Isso pode ser usado para gravar consultas que podem ser expressas no tipo persistente, mas não no tipo em si, como consultas de intervalo no valor persistente ou para consultar valores que não podem ser convertidos para o tipo mapeado.
Para tipos que não estão em conformidade com PersistableEnum, CustomPersistable ou FailableCustomPersistable, isso não faz nada de útil.
Declaração
Swift
public var persistableValue: Query<AnyRealmCollection<T.Element.PersistedType>> { get }
-
A query sobre o persistableValue dos valores na collection em vez dos valores em si.
Isso pode ser usado para gravar consultas que podem ser expressas no tipo persistente, mas não no tipo em si, como consultas de intervalo no valor persistente ou para consultar valores que não podem ser convertidos para o tipo mapeado.
Para tipos que não estão em conformidade com PersistableEnum, CustomPersistable ou FailableCustomPersistable, isso não faz nada de útil.
Declaração
Swift
public var persistableValue: Query<Map<T.Key, T.Value.PersistedType>> { get }
-
Verifica todos os elementos nesta collection que estão dentro de um determinado intervalo.
Declaração
Swift
public func contains(_ range: Range<T>) -> Query<Bool>
-
Verifica todos os elementos nesta collection que estão dentro de um determinado intervalo.
Declaração
Swift
public func contains(_ range: ClosedRange<T>) -> Query<Bool>
-
Verifica todos os elementos nesta collection que são iguais ao valor fornecido.
?
e*
são permitidos como caracteres curinga, onde?
corresponde a 1 caractere e*
corresponde a 0 ou mais caracteres.Declaração
Swift
public func like(_ value: T, caseInsensitive: Bool = false) -> Query<Bool>
Parâmetros
value
valor usado.
caseInsensitive
true
se for uma pesquisa que não diferencia maiúsculas de minúsculas. -
Verifica todos os elementos nesta collection que são iguais ao valor fornecido.
?
e*
são permitidos como caracteres curinga, onde?
corresponde a 1 caractere e*
corresponde a 0 ou mais caracteres.Declaração
Swift
public func like<U>(_ column: Query<U>, caseInsensitive: Bool = false) -> Query<Bool>
Parâmetros
value
valor usado.
caseInsensitive
true
se for uma pesquisa que não diferencia maiúsculas de minúsculas.
-
Verifica todos os elementos nesta collection que contêm o valor fornecido.
Declaração
Swift
public func contains(_ value: T, options: StringOptions = []) -> Query<Bool>
Parâmetros
value
valor usado.
options
Um conjunto de opções usadas para avaliar a query de pesquisa.
-
Compara que esta coluna contém um valor em outra coluna.
Declaração
Swift
public func contains<U>(_ column: Query<U>, options: StringOptions = []) -> Query<Bool> where U : _Persistable, U.PersistedType : _QueryBinary
Parâmetros
column
A outra coluna.
options
Um conjunto de opções usadas para avaliar a query de pesquisa.
-
Verifica todos os elementos nesta collection que começam com o valor fornecido.
Declaração
Swift
public func starts(with value: T, options: StringOptions = []) -> Query<Bool>
Parâmetros
value
valor usado.
options
Um conjunto de opções usadas para avaliar a query de pesquisa.
-
Compara que esta coluna começa com um valor em outra coluna.
Declaração
Swift
public func starts<U>(with column: Query<U>, options: StringOptions = []) -> Query<Bool>
Parâmetros
column
A outra coluna.
options
Um conjunto de opções usadas para avaliar a query de pesquisa.
-
Verifica todos os elementos nesta coleção que terminam com o valor fornecido.
Declaração
Swift
public func ends(with value: T, options: StringOptions = []) -> Query<Bool>
Parâmetros
value
valor usado.
options
Um conjunto de opções usadas para avaliar a query de pesquisa.
-
Compara que esta coluna termina com um valor em outra coluna.
Declaração
Swift
public func ends<U>(with column: Query<U>, options: StringOptions = []) -> Query<Bool>
Parâmetros
column
A outra coluna.
options
Um conjunto de opções usadas para avaliar a query de pesquisa.
-
Verifica todos os elementos nesta collection que são iguais ao valor fornecido.
Declaração
Swift
public func equals(_ value: T, options: StringOptions = []) -> Query<Bool>
Parâmetros
value
valor usado.
options
Um conjunto de opções usadas para avaliar a query de pesquisa.
-
Compara que esta coluna é igual ao valor em outra coluna fornecida.
Declaração
Swift
public func equals<U>(_ column: Query<U>, options: StringOptions = []) -> Query<Bool>
Parâmetros
column
A outra coluna.
options
Um conjunto de opções usadas para avaliar a query de pesquisa.
-
Verifica todos os elementos nesta collection que não são iguais ao valor fornecido.
Declaração
Swift
public func notEquals(_ value: T, options: StringOptions = []) -> Query<Bool>
Parâmetros
value
valor usado.
options
Um conjunto de opções usadas para avaliar a query de pesquisa.
-
Compara que esta coluna não é igual ao valor em outra coluna fornecida.
Declaração
Swift
public func notEquals<U>(_ column: Query<U>, options: StringOptions = []) -> Query<Bool>
Parâmetros
column
A outra coluna.
options
Um conjunto de opções usadas para avaliar a query de pesquisa.
-
Verifica todos os elementos nesta collection que estão dentro de um determinado intervalo.
Declaração
Swift
public func contains(_ range: Range<T.Wrapped>) -> Query<Bool>
-
Verifica todos os elementos nesta collection que estão dentro de um determinado intervalo.
Declaração
Swift
public func contains(_ range: ClosedRange<T.Wrapped>) -> Query<Bool>
-
Conclui uma expressão de subquery.
- Uso:
(($0.myCollection.age >= 21) && ($0.myCollection.siblings == 4))).count >= 5
Observação
Não combine coleções dentro de uma expressão de subquery. Só é permitido referenciar uma única collection por cada subquery.Declaração
Swift
public var count: Query<Int> { get }
- Uso:
-
Retorna o valor mínimo dos objetos na collection com base no keypath.
Declaração
Swift
public var min: Query { get }
-
Retorna o valor máximo dos objetos na collection com base no keypath.
Declaração
Swift
public var max: Query { get }
-
Retorna a média dos objetos na collection com base no keypath.
Declaração
Swift
public var avg: Query { get }
-
Retorna a soma dos objetos na collection com base no caminho chave.
Declaração
Swift
public var sum: Query { get }
-
Use a função
geoWithin
para filtrar objetos cujos pontos de localização estão dentro de uma determinada área, usando uma forma geoespacial (GeoBox
,GeoPolygon
ouGeoCircle
).Observação
Não existe um tipo dedicado para armazenar pontos geoespaciais; em vez disso, os pontos devem ser armazenados como objeto incorporado em forma de GeoJson . Query geoespaciais (geoWithin
) só podem ser executadas nesse tipo de objeto e serão lançadas de outra forma.Veja
GeoPoint
Declaração
Swift
func geoWithin<U>(_ value: U) -> Query<Bool> where U : RLMGeospatial