Understanding One-to-One and One-To-Many relationships ------------------------------------------------------ **While working** [**on my latest project**](http://apple.co/2CrlXDf) **I have decided to write a tutorial about _Core Data Relationships between Entities_.** Persistent Storage has become an essential part of the majority of [iOS](https://hackernoon.com/tagged/ios) apps that are released today. When we speak about persistency in iOS, we should only think on [Core Data](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/index.html). This powerful tool will provide a great experience for you while managing your data storage. ### Core Data Relationships Example For the purposes of this tutorial, I have created a simple project with [Core Data](https://hackernoon.com/tagged/core-data) Entities that will handle both _One-To-One_ and _One-To-Many_ relationships. There are 3 Entities created in the example: 1. **Person** - this will be the main entity, that will have relationships with the _Phone_ and _Friends_ entities. 2. **Phone** - an entity that will keep the Person’s mobile phone information. It will be used as a _One-To-One_ relationship, assuming that the _Person_ has only one phone. 3. **Friends** \- an entity that will keep all the Person’s friends. It will be used as a One-To-Many relationship, assuming that the person has more than one friend.  _As you can see in the above screenshot, I have already created the relationships. I will now explain to you how to that properly (it’s quite straightforward).👇_ #### One-To-One Relationship (Person -> Phone) If you have created the Entities we can proceed with creating the relationship between Person and Phone. You will need to add 3 values in order to create a relationship. 1. **Relationship** - name your relationship. 2. **Destination** - add the entity you want to establish a relationship with (in our case Phone). 3. **Inverse** - create an inverse relationship from Phone and pick it under Person. Apple recommends that you always add an inverse value, so never leave this empty.  **Part 1 (Person)**  **Part 2 (Phone)** #### Code Each Entity contains its own automatically generated [_NSManagedObject_](https://developer.apple.com/documentation/coredata/nsmanagedobject) that you can work within the code. This is one of the advantages of Core Data before others. Here is an example how you can write in _Person_ and its One-To-One Relationship (_Phone_).👇 Simple isn’t it? #### One-To-Many Relationship (Person -> Friends) I hope that by far you understood how relationships work. Now we will go further and create a _One-To-Many_ relationship. The concept is the same as the _One-To-One_ relationship, just with some minor changes. When creating a _One-To-Many_ relationship, you will have to change the type to **_To Many_** from the Data Model Inspector. This isn’t the case with _One-To-One_ because this type is set to **_To One_** by default_._  #### Code Here is an example how you can write in _Person_ and its One-To-Many Relationship (_Friends_).👇 The NSManagedObject contains generic methods like `addToFriends()` where you can pass either a Friends object or an array of Friends_._ > **NOTE:** The code that you saw in this tutorial is written in the AppDelegate for simplicity and to provide faster tests, due to the predefined context and Core Data save method. #### I am using Core Data relationship in my latest project: [**1x2 BET - Soccer Tips & Odds** _HOT ODDS Each day, we generate a list of the hottest odds in the world. These are odds that have dropped the most…_apple.co](https://apple.co/2EIiDpI "https://apple.co/2EIiDpI")[](https://apple.co/2EIiDpI) #### If you have liked my tutorial and it helped you, please 👏 or share this story so others can find it as well. Cheers! 🚀 