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

In

  • 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

Construção de query

  • 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])

Disponível onde T == AnyRealmValue

Disponível onde T: RealmCollection

  • 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

Disponível onde T: RealmCollection, T.Element: Comparable

  • 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>

Disponível onde T: RealmCollection, T.Element: OptionalProtocol, T.Element.Wrapped: Comparable

  • 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>

Disponível onde T: RealmCollection, T.Element.PersistedType: _QueryNumeric

  • min

    Retorna o valor mínimo na collection.

    Declaração

    Swift

    public var min: Query<T.Element> { get }
  • max

    Retorna o valor máximo na collection.

    Declaração

    Swift

    public var max: Query<T.Element> { get }
  • avg

    Retorna a média da collection.

    Declaração

    Swift

    public var avg: Query<T.Element> { get }
  • sum

    Retorna a soma de todos os valores na collection.

    Declaração

    Swift

    public var sum: Query<T.Element> { get }

Disponível onde T: RealmKeyedCollection

  • 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 }

Disponível onde T : RealmKeyedCollection , T.Key == String

  • Permite uma query sobre todas as chaves no Map.

    Declaração

    Swift

    public var keys: Query<String> { get }

Disponível onde T: RealmKeyedCollection, T.Value: Comparable

  • 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>

Disponível onde T: RealmKeyedCollection, T.Value: OptionalProtocol, T.Value.Wrapped: Comparable

  • 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>

Disponível onde T: RealmKeyedCollection, T.Value.PersistedType: _QueryNumeric

  • min

    Retorna o valor mínimo na collection chaveada.

    Declaração

    Swift

    public var min: Query<T.Value> { get }
  • max

    Retorna o valor máximo na coleção chaveada.

    Declaração

    Swift

    public var max: Query<T.Value> { get }
  • avg

    Retorna a média na collection com chave.

    Declaração

    Swift

    public var avg: Query<T.Value> { get }
  • sum

    Retorna a soma de todos os valores na collection com chaves.

    Declaração

    Swift

    public var sum: Query<T.Value> { get }

Disponível onde T: RealmKeyedCollection

  • Retorna a contagem de todos os valores na collection com chave.

    Declaração

    Swift

    public var count: Query<Int> { get }

Disponível onde T: PersistableEnum, T.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.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 }

Disponível onde T: _HasPersistedType

  • 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 }

Disponível onde T: RealmCollection

  • 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 }

Disponível onde T: RealmKeyedCollection

  • 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 }

Disponível onde T: Comparable

  • 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>

Disponível onde T: _HasPersistedType, T.PersistedType: _QueryString

  • 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.

Disponível onde T: _HasPersistedType, T.PersistedType: _QueryBinary

  • 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.

Disponível onde T: OptionalProtocol, T.Wrapped: Comparable

  • 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>

Disponível onde T == 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 }

Disponível onde T: _HasPersistedType, T.PersistedType: _QueryNumeric

  • min

    Retorna o valor mínimo dos objetos na collection com base no keypath.

    Declaração

    Swift

    public var min: Query { get }
  • max

    Retorna o valor máximo dos objetos na collection com base no keypath.

    Declaração

    Swift

    public var max: Query { get }
  • avg

    Retorna a média dos objetos na collection com base no keypath.

    Declaração

    Swift

    public var avg: Query { get }
  • sum

    Retorna a soma dos objetos na collection com base no caminho chave.

    Declaração

    Swift

    public var sum: Query { get }

Disponível onde T: OptionalProtocol, T.Wrapped: EmbeddedObject

  • 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 ou GeoCircle).

    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