1

Here is my Code Block

@AppStorage("shareSelection") var shareSelection = "BTCUSDT"
@ObservedResults(coinModel.self, where: ( { $0.s == (UserDefaults.standard.object(forKey: "shareSelection") as? String) ?? ""}))  var coinsResult

 var body: some View {

Text (coinsResult[0].s)
}

I change UserDefault Other View

    @AppStorage("shareSelection") var shareSelection = "BTCUSDT"

     var body: some View {

 Button {
         shareSelection = "ETHUSDT"
                                            
         }label: { SearchSideMenuRow(market: coin)}

But ObservedResults not Change first View . I checked UserDefaults, Its Ok. Chanced. How can Refresh ObservedResult.. Thanks ..

  • ObservedResults are part of the Realm SDK and unrelated to UserDefaults which is an operating system property. It may be a good idea to review Apple's docs on [User Defaults](https://developer.apple.com/documentation/foundation/userdefaults). That being said, the question is unclear - ObservedResults don't need to be refreshed - that's automatic. From the [Docs](https://www.mongodb.com/docs/realm/sdk/swift/swiftui/react-to-changes/#observe-query-results) *You can perform a quick write to an ObservedResults collection, and the view automatically updates itself when the observed query changes* – Jay Feb 07 '23 at 21:43

1 Answers1

0

You can assign NSPredicate to filter property of @ObservedSectionedResults.

E.g.

struct MyView: View {
    @AppStorage("selected_date_range")
    var selectedDateRange: TimeContraints = .last30

    @ObservedSectionedResults(CountryEntry.self, sectionKeyPath: \.country)
    var countries

    var body: some View {
       VStack {
          ...view code
       }
    }
    .onChange(of: selectedDateRange) { range in
        $countries.filter = NSPredicate(
            format: "createdAt > %@", 
            selectedDateRange.startDate as NSDate
        )
    }
    .onAppear {
       $countries.filter = NSPredicate(
           format: "createdAt > %@", 
           selectedDateRange.startDate as NSDate
       )
    }
}