Tipos suportados - C++ SDK
Nesta página
O Realm C++ SDK atualmente suporta estes tipos de propriedade.
Os opcionais usam o modelo de classe std::opcional.
Folha de referências de propriedades
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 |
|
| ||
Int64 |
|
| ||
Double |
|
| ||
String |
|
| ||
enumeração |
|
| ||
Dados binários |
|
| ||
Data |
|
| ||
Decimal128 |
|
| ||
UUID |
|
| ||
ObjectId |
|
| ||
Tipo de dados misto |
| N/A | ||
Mapa |
| N/A | ||
Lista |
| N/A | ||
definir |
| N/A | ||
objeto definido pelo usuário | N/A |
| ||
Objeto incorporado definido pelo usuário | N/A |
|
Detalhes da implementação do tipo suportado
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 propriedademixed
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 aosystem_clock
:<std::chrono::time_point<std::chrono::system_clock>>
Mapa/Dicionário
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";
Tipos de coleção
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.
Resultados
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.
definir
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.
Coleções como propriedades
O SDK do C++ também oferece vários tipos de coleção que você pode usar como propriedades em seu modelo de dados:
Lista, um tipo que representa relacionamentos entre muitos em modelos.
Set, um tipo que representa relacionamentos entre muitos em modelos onde os valores são únicos.
linking_objects, um tipo que representa relacionamentos inversos em modelos.
Map, um tipo que representa uma array associativa de pares de valores-chave com chaves exclusivas.
As coleções estão ativas
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.