2017-09-18 3 views
1

J'ai un « propriétaire » classe qui a une propriété de liste des chiensRoyaume RealmCollectionChange se changer la propriété

class Owner: Object { 

    dynamic var name: String? 

    let list = List<RString>() 

} 

J'ai ajouté un jeton de notification à la liste des Owner

owners?.addNotificationBlock { [weak self] (changes: RealmCollectionChange) in 

    updateUI() 

} 

Le problème est, chaque fois que les propriétés de RString sont modifiées et que l'un des propriétaires a changé RString dans sa liste, cette notification est déclenchée

Ce que je veux est d'ignorer les changements qui se produisent à des objets rString et éviter de déclencher la notification

Y at-il un moyen d'ajouter « ignoringProperties » à la collectionChanges comme celui objectChange? Ou toute autre solution de contournement ?! comme obtenir le nom de la propriété modifiée et l'ignorer manuellement?

J'ai vu ce code dans l'une des vidéos officielles de royaume, mais n'a pas pu le reproduire pour collectionChanges

let token2 = state.addNotificationBlock(ignoringProperties: ["noisyProp"], 
            block: { change in 
    // handle change and avoid being notified for properties we don't care about 
}) 

source

Merci pour votre aide

Répondre

1

Le .update cas du RealmCollectionChange ENUM transmis dans votre gestionnaire de notification de mise à jour contient uniquement les index de tous les objets modifiés contenus dans le Results retourné à partir de votre requête. Donc, à ce jour, il semble qu'il n'est pas possible d'empêcher les notifications de mise à jour d'être déclenchées par des propriétés spécifiques.

Comme alternative, vous pouvez envisager de modéliser vos données différemment en créant un objet Dog séparé et en lui donnant une propriété ownerId et enlever le chien list propriété de votre objet propriétaire. De cette façon, vous évitez que les notifications de mise à jour ne soient déclenchées sur vos résultats de requête Owner lorsqu'une propriété Dog est modifiée.

+0

C'est ce que je suis en train de faire, mais quand j'ai lu l'exemple sur la page officielle du royaume, je pensais qu'une autre voie pouvait exister, et je n'ai trouvé aucun exemple ... merci pour votre aide –