Editora
extension Publisher
extension Publisher where Output: ThreadConfined
-
Congela todos os Objeto de Realm e collection emitidos pelo editor upstream
O congelamento de um Objeto de Realm faz com que ele não seja mais atualizado quando são feitas gravações no Realm e torna seguro passar livremente entre threads sem usar
.threadSafeReference()
.// Get a publisher for a Results let cancellable = myResults.publisher // Convert to frozen Results .freeze() // Unlike live objects, frozen objects can be sent to a concurrent queue .receive(on: DispatchQueue.global()) .sink { frozenResults in // Do something with the frozen Results }
Declaração
Swift
public func freeze<T>() -> Publishers.Map<Self, T> where T : ThreadConfined, T == Self.Output
Valor de retorno
Um editor que publica cópias congeladas dos objetos que o editor upstream publica.
-
Congela todos os conjuntos de alterações do Objeto de Realm emitidos pelo editor upstream.
O congelamento de um conjunto de alterações de Objeto de Realm faz com que a referência de objeto incluída não seja mais atualizada quando são feitas gravações no Realm e torna seguro passar livremente entre threads sem usar
.threadSafeReference()
. Ele também garante que o objeto congelado contido no changeset sempre corresponderá às alterações de propriedade , o que nem sempre é o caso ao usar referências thread-safe.// Get a changeset publisher for an object let cancellable = changesetPublisher(object) // Convert to frozen changesets .freeze() // Unlike live objects, frozen objects can be sent to a concurrent queue .receive(on: DispatchQueue.global()) .sink { changeset in // Do something with the frozen changeset }
Declaração
Swift
public func freeze<T>() -> Publishers.Map<Self, ObjectChange<T>> where T : Object, Self.Output == ObjectChange<T>
Valor de retorno
Um editor que publica cópias congeladas dos alterações que o editor upstream publica.
-
Congela todos os conjuntos de alterações da collection Realm do editor upstream.
O congelamento de um conjunto de alterações da coleção Realm faz com que a referência da coleção incluída não seja mais atualizada quando são feitas gravações no Realm e torna seguro passar livremente entre threads sem usar
.threadSafeReference()
. Ele também garante que a coleção congelada contida no changeset sempre corresponderá às informações de alteração, o que nem sempre é o caso ao usar referências thread-safe.// Get a changeset publisher for a collection let cancellable = myList.changesetPublisher // Convert to frozen changesets .freeze() // Unlike live objects, frozen objects can be sent to a concurrent queue .receive(on: DispatchQueue.global()) .sink { changeset in // Do something with the frozen changeset }
Declaração
Swift
public func freeze<T: RealmCollection>() -> Publishers.Map<Self, RealmCollectionChange<T>> where Output == RealmCollectionChange<T>
Valor de retorno
Um editor que publica cópias congeladas dos alterações que o editor upstream publica.
-
Congela todos os conjuntos de alterações da collection Realm do editor upstream.
O congelamento de um conjunto de alterações da coleção Realm faz com que a referência da coleção incluída não seja mais atualizada quando são feitas gravações no Realm e torna seguro passar livremente entre threads sem usar
.threadSafeReference()
. Ele também garante que a coleção congelada contida no changeset sempre corresponderá às informações de alteração, o que nem sempre é o caso ao usar referências thread-safe.// Get a changeset publisher for a collection let cancellable = myMap.changesetPublisher // Convert to frozen changesets .freeze() // Unlike live objects, frozen objects can be sent to a concurrent queue .receive(on: DispatchQueue.global()) .sink { changeset in // Do something with the frozen changeset }
Declaração
Swift
public func freeze<T: RealmKeyedCollection>() -> Publishers.Map<Self, RealmMapChange<T>> where Output == RealmMapChange<T>
Valor de retorno
Um editor que publica cópias congeladas dos alterações que o editor upstream publica.
-
Permite passar conjuntos de alterações de objetos para uma fila de despacho diferente.
Cada chamada para
receive(on:)
em um editor que emite objetos confinados ao thread do Realm deve ser precedida por uma chamada para.threadSafeReference()
. O editor retornado lida com a lógica necessária para passar o objeto confinado ao thread para a nova fila. Somente filas de despacho em série são suportadas e o uso de outros agendadores resultará em um erro fatal.Por exemplo, para assinar um thread em segundo plano, faça algum trabalho lá e passe o changeset de objeto para o thread principal que você pode fazer:
let cancellable = changesetPublisher(myObject) .subscribe(on: DispatchQueue(label: "background queue") .print() .threadSafeReference() .receive(on: DispatchQueue.main) .sink { objectChange in // Do things with the object on the main thread }
Declaração
Swift
public func threadSafeReference<T: Object>() -> RealmPublishers.MakeThreadSafeObjectChangeset<Self, T> where Output == ObjectChange<T>
Valor de retorno
Um editor que suporta
receive(on:)
para objetos confinados ao thread. -
Permite passar conjuntos de alterações da collection Realm para uma fila de despacho diferente.
Cada chamada para
receive(on:)
em um editor que emite objetos confinados ao thread do Realm deve ser precedida por uma chamada para.threadSafeReference()
. O editor retornado lida com a lógica necessária para passar o objeto confinado ao thread para a nova fila. Somente filas de despacho em série são suportadas e o uso de outros agendadores resultará em um erro fatal.Por exemplo, para se inscrever em um tópico em segundo plano, faça algum trabalho lá e passe o collection changeset para o tópico principal que você pode fazer:
let cancellable = myCollection.changesetPublisher .subscribe(on: DispatchQueue(label: "background queue") .print() .threadSafeReference() .receive(on: DispatchQueue.main) .sink { collectionChange in // Do things with the collection on the main thread }
Declaração
Swift
public func threadSafeReference<T: RealmCollection>() -> RealmPublishers.MakeThreadSafeCollectionChangeset<Self, T> where Output == RealmCollectionChange<T>
Valor de retorno
Um editor que suporta
receive(on:)
para objetos confinados ao thread. -
Permite passar conjuntos de alterações da collection Realm para uma fila de despacho diferente.
Cada chamada para
receive(on:)
em um editor que emite objetos confinados ao thread do Realm deve ser precedida por uma chamada para.threadSafeReference()
. O editor retornado lida com a lógica necessária para passar o objeto confinado ao thread para a nova fila. Somente filas de despacho em série são suportadas e o uso de outros agendadores resultará em um erro fatal.Por exemplo, para se inscrever em um tópico em segundo plano, faça algum trabalho lá e passe o collection changeset para o tópico principal que você pode fazer:
let cancellable = myCollection.changesetPublisher .subscribe(on: DispatchQueue(label: "background queue") .print() .threadSafeReference() .receive(on: DispatchQueue.main) .sink { collectionChange in // Do things with the collection on the main thread }
Declaração
Swift
public func threadSafeReference<T: RealmKeyedCollection>() -> RealmPublishers.MakeThreadSafeKeyedCollectionChangeset<Self, T> where Output == RealmMapChange<T>
Valor de retorno
Um editor que suporta
receive(on:)
para objetos confinados ao thread.
-
Permite passar objetos confinados ao thread para uma fila de despacho diferente.
Cada chamada para
receive(on:)
em um editor que emite objetos confinados por thread do Realm deve ser precedida por uma chamada para.threadSafeReference()
. O editor retornado lida com a lógica necessária para passar o objeto confinado por thread para a nova fila. Somente filas de despacho em série são suportadas e o uso de outros agendadores resultará em um erro fatal.Por exemplo, para se inscrever em um thread em segundo plano, faça algum trabalho lá e passe o objeto para o thread principal que você pode fazer:
let cancellable = publisher(myObject) .subscribe(on: DispatchQueue(label: "background queue") .print() .threadSafeReference() .receive(on: DispatchQueue.main) .sink { object in // Do things with the object on the main thread }
Chamar essa função em um editor que emite objetos congelados ou não gerenciados é desnecessário, mas é permitido.
Declaração
Swift
public func threadSafeReference() -> RealmPublishers.MakeThreadSafe<Self>
Valor de retorno
Um editor que suporta
receive(on:)
para objetos confinados ao thread.