Let me provide a high level scenario:
Suppose your app has a listing of items, like an address book.
The contact list is a Results object populated from Realm that acts as a datasource for a tableView.
self.contactResults = realm.objects(ContactClass.self) //self.contacts is the tableView dataSource
Then suppose when a contact is double clicked (macOS) or selected and Edit button tapped (iOS) another view is shown that allows that contacts details to be edited. For that process you want to pass an unmanaged Realm object to the sheet or details view to populate it and be editable.
let detailView = DetailView() //create the detail view
let managedContact = self.contactResults[selectedRow] //get the selected contact
let unmanagedContact = ContactClass(value: managedContact) //create an unmanaged, editable copy
From there the user can edit the contact info on the detailView, updating the unmanaged contact object along the way and when complete, write it to Realm.
This gives the app the ability to not sync or attempt to update a managed object outside a write transaction - and the user can click ‘Cancel’ and no data will be affected
Now, you may say to yourself
“self, why not just pass the managed object and update it within a write transaction”
The answer is that in some cases, you want to maintain the data in an actual object instead of creating arrays and other vars to hold the data while editing. For example suppose the contact had a bunch of embedded Addresses - keeping those in a tidy list within a the ContactClass object makes them easier to work with; adding, editing and removing addresses can be done right within the object because it’s unmanaged.