This is a very rudimentary question...
I can't really understand the convenience of Realm's "reverse relationship" even after reading some examples of reference books.
I would appreciate it if you could let me know any examples that helped me understand Realm's "reverse relationship".
It's not something you must use, so if you don't have to use it, you don't have to worry about it, but I'll explain it using an example of convenience in this case.
Suppose you create a Twitter app.
Simplify the model for clarity and consider only Tweet
and User
as shown below.
class Tweet:Object {
dynamic var text=""
dynamic var creationDate=Date()
dynamic var user —User?
}
classUser:Object {
dynamic var name=""
}
The Tweet
class has a one-to-one relationship with the user who made the tweet.
The data to display the timeline (list of tweets) is as follows:
let timeline=realm.objects (Tweet.self)
.sorted (byKeyPath: "creationDate", ascending: false)
Tweet
is taken and sorted in chronological order, starting with the new one.
At this time, when you tap a user on the timeline screen, you want to display a list of tweets for that user.I think it's a common specification.
If there is a reverse association, you can automatically retrieve the Tweet
object that the user is associated with from each User
instance.This is the reverse related convenience.
Add properties indicating reverse association to the first model.
class Tweet:Object {
dynamic var text=""
dynamic var creationDate=Date()
dynamic var user —User?
}
classUser:Object {
dynamic var name=""
let tweets = LinkingObjects (fromType: Tweet.self, property: "user")
}
The tweets
property was added to the User
class. The tweets
property is inversely related to the user
property in Tweet
, so it represents the reverse direction of the user associated with it, or all tweets.
let tweet=timeline [indexPath.row]
let selectedUser=tweet.user
For example, if you select a user of a tweet as shown above, you can view all of his tweets on the next screen.
let allTweetsOfTheUser=selectedUser?.tweets
Simply follow the tweet
property of the User
class as shown in
If there is no reverse correlation, you need to manage the reverse correlation yourself if you need this data.Relevant management in the reverse direction must be done as a set when associating User
with Tweet
, so you need to be careful about the integrity of the data.
Considerations should also be taken when the association is deleted.Resolving those difficulties is the opposite link.
© 2024 OneMinuteCode. All rights reserved.