Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/ /

Tipos suportados - C++ SDK

Nesta página

  • Folha de referências de propriedades
  • Detalhes da implementação do tipo suportado
  • Mapa/Dicionário
  • Tipos de coleção
  • Resultados
  • definir
  • Coleções como propriedades
  • As coleções estão ativas

O Realm C++ SDK atualmente suporta estes tipos de propriedade.

Os opcionais usam o modelo de classe std::opcional.

Você pode usar os seguintes tipos para definir as propriedades do modelo de objeto.

Para saber como tipos de dados específicos são mapeados para tipos BSON em um Esquema de Serviços de Aplicativo, consulte Mapeamento de Modelo de Dados na documentação de Serviços de Aplicativo do Atlas.

Tipo
Obrigatório
Opcional
Bool
bool boolName;
std::optional<bool> optBoolName;
Int64
int64_t intName;
std::optional<int64_t> optIntName;
Double
double doubleName;
std::optional<double> optDoubleName;
String
std::string stringName;
std::optional<std::string> optStringName;
enumeração
Enum enumName;
std::optional<Enum> optEnumName;
Dados binários
std::vector<std::uint8_t> binaryDataName;
std::optional<std::vector<std::uint8_t>> optBinaryDataName;
Data
std::chrono::time_point<std::chrono::system_clock> dateName;
std::optional<std::chrono::time_point<std::chrono::system_clock>> optDateName;
Decimal128
realm::decimal128 decimal128Name;
std::optional<realm::decimal128> optDecimal128Name;
UUID
realm::uuid uuidName;
std::optional<realm::uuid> optUuidName;
ObjectId
realm::object_id objectIdName;
std::optional<realm::object_id> optObjectIdName;
Tipo de dados misto
realm::mixed mixedName;
N/A
Mapa
std::map<std::string, SomeType> mapName;
N/A
Lista
std::vector<SomeType> listTypeName;
N/A
definir
std::set<SomeType> setTypeName;
N/A
objeto definido pelo usuário
N/A
MyClass* opt_obj_name;
Objeto incorporado definido pelo usuário
N/A
MyEmbeddedClass* opt_embedded_object_name;

Alguns dos tipos suportados acima são aliases para:

  • mixed: um objeto semelhante a uma união que pode representar um valor em qualquer um dos tipos aceitos. É implementado usando o modelo de classe std::variant. Essa implementação significa que uma propriedade mixed contém um valor de um de seus tipos alternativos ou, no caso de erro, nenhum valor.

  • Para datas, use a biblioteca crono para armazenar um time_point relativo ao system_clock: <std::chrono::time_point<std::chrono::system_clock>>

O Map é uma array associativa que contém pares de valores-chave com chaves exclusivas.

Você pode declarar um Mapa como uma propriedade de um objeto:

namespace realm {
struct Dog {
std::string name;
std::map<std::string, std::string> favoriteParkByCity;
};
REALM_SCHEMA(Dog, name, favoriteParkByCity)
} // namespace realm

A string é o único tipo suportado para uma chave de mapa, mas os valores de mapa podem ser:

  • Versões necessárias de qualquer um dos tipos de dados suportados pelo SDK

  • Links de objetos opcionais definidos pelo usuário

  • Objeto incorporado opcionais

O Realm não permite o uso de . ou $ caracteres em chaves de mapa. Você pode usar a codificação e a decodificação percentual para armazenar uma chave de mapa que contenha um desses caracteres não permitidos.

// Percent encode . or $ characters to use them in map keys
auto mapKey = "Monday.Morning";
auto encodedMapKey = "Monday%2EMorning";

O Realm tem vários tipos para representar grupos de objetos, que chamamos de coleções. Uma coleção é um objeto que contém zero ou mais instâncias de um tipo de Realm. Coleções reais são homogêneas: todos os objetos em uma coleção são do mesmo tipo.

Você pode filtrar e classificar qualquer coleção usando o mecanismo de query do Realm. As coleções estão ativas, então elas sempre refletem o estado atual da instância do reino na thread atual. Você também pode ouvir as alterações na coleção assinando as notificações da coleção.

A C++ SDK coleção Results do é um tipo que representa objetos recuperados de queries. Uma collection Results representa os resultados avaliados displicentemente de uma operação de query. Os resultados são imutáveis: você não pode adicionar ou remover elementos da coleção de resultados. Os resultados têm uma query associada que determina seu conteúdo.

Para obter mais informações, consulte a documentação de leitura.

A coleção de conjuntos do SDK do C++ representa uma relação para muitos contendo valores distintos. Um conjunto de C++ SDK suporta os seguintes tipos (e suas versões opcionais):

  • Dados binários

  • Bool

  • Double

  • Data

  • Int64

  • Misto

  • ObjectId

  • Objeto

  • String

  • UUID

Como o C++ std::set de, o C++ SDK conjunto é um tipo genérico que é parametrizado no tipo que armazena.

Você só pode chamar métodos de mutação definidos durante uma transação de escrita. Você pode registrar um ouvinte de alterações em um conjunto mutável.

O SDK do C++ também oferece vários tipos de coleção que você pode usar como propriedades em seu modelo de dados:

  1. Lista, um tipo que representa relacionamentos entre muitos em modelos.

  2. Set, um tipo que representa relacionamentos entre muitos em modelos onde os valores são únicos.

  3. linking_objects, um tipo que representa relacionamentos inversos em modelos.

  4. Map, um tipo que representa uma array associativa de pares de valores-chave com chaves exclusivas.

Como os objetos ativos, as collections do Realm geralmente são ativas:

  • Coleções de resultados em tempo real sempre refletem os resultados atuais da query associada.

  • Listas ativas sempre refletem o estado atual do relacionamento na instância de domínio.

O único caso em que uma collection não está ativa é quando a collection não está gerenciada. Por exemplo, uma propriedade List de um Objeto de domínio que ainda não tenha sido adicionado a um domínio ou que tenha sido movido de um domínio não está ativo.

Combinadas com notificações de collection, as collections dinâmicas permitem um código limpo e reativo. Por exemplo, suponha que sua visualização exiba os resultados de uma query. Você pode manter uma referência à collection de resultados no código de visualização e, em seguida, ler a collection de resultados conforme necessário sem precisar atualizá-la ou validar que ela está atualizada.

Importante

Os índices de resultados podem mudar

Como os resultados se atualizam automaticamente, não armazene o índice posicional de um objeto na coleção ou a contagem de objetos em uma coleção. O índice armazenado ou o valor de contagem podem estar desatualizados no momento em que você o utiliza.

Voltar

Tipos de objetos e esquemas

Próximo

Relacionamentos