{"id":1050,"date":"2025-07-27T10:03:53","date_gmt":"2025-07-27T10:03:53","guid":{"rendered":"https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/"},"modified":"2025-07-27T10:03:53","modified_gmt":"2025-07-27T10:03:53","slug":"userdefaults-storing-simple-user-preferences","status":"publish","type":"post","link":"https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/","title":{"rendered":"UserDefaults: Storing Simple User Preferences"},"content":{"rendered":"<h1>UserDefaults: Mastering Simple User Preferences in Swift \ud83c\udfaf<\/h1>\n<h2 style=\"font-size: 24px\">Executive Summary<\/h2>\n<p>This <strong>Swift UserDefaults tutorial<\/strong> will guide you through the ins and outs of using <code>UserDefaults<\/code> in Swift to store and retrieve simple user preferences in your iOS applications. Imagine your app remembering the user&#8217;s preferred theme, notification settings, or even just their name! \ud83d\udca1 We&#8217;ll explore how UserDefaults provides a convenient way to persist small amounts of data between app launches. This ensures a seamless and personalized user experience. This article covers everything from basic usage to more advanced techniques, arming you with the knowledge you need to confidently manage user preferences in your projects. We&#8217;ll see examples of storing different data types, handling optional values, and best practices for organization and security. By the end, you&#8217;ll be a UserDefaults pro! \u2705<\/p>\n<p>Have you ever wished your app could *remember* things between launches? Like the user&#8217;s preferred font size, theme, or even just whether they&#8217;ve completed the onboarding process?  <code>UserDefaults<\/code> is your answer! It&#8217;s a simple, built-in mechanism in Swift for storing small amounts of data that persists across app sessions.  Think of it as a tiny, lightweight database perfect for user preferences and settings. It allows you to provide a personalized and consistent experience, making your app feel more polished and intuitive.<\/p>\n<h2 style=\"font-size: 24px\">Storing and Retrieving Basic Data<\/h2>\n<p>UserDefaults shines when it comes to storing basic data types like integers, floats, booleans, strings, and even URLs. It&#8217;s like a little treasure chest \ud83d\udc8e where you can stash these tidbits of information for later use. Here&#8217;s how it works:<\/p>\n<ul>\n<li><strong>Setting a Value:<\/strong>  Use the <code>setValue(_:forKey:)<\/code> method to store a value associated with a specific key.  Think of the key as the name tag on your treasure chest \u2013 it&#8217;s how you&#8217;ll find the data later.<\/li>\n<li><strong>Getting a Value:<\/strong> Use methods like <code>integer(forKey:)<\/code>, <code>float(forKey:)<\/code>, <code>bool(forKey:)<\/code>, and <code>string(forKey:)<\/code> to retrieve the stored data.  Make sure to use the correct method for the data type you expect!<\/li>\n<li><strong>Handling Optionals:<\/strong> Values retrieved from UserDefaults are often optionals. Always unwrap them safely to avoid unexpected crashes. \ud83d\udca5<\/li>\n<li><strong>Default Values:<\/strong> Provide default values when retrieving data. This ensures your app doesn&#8217;t break if the user hasn&#8217;t set a preference yet.<\/li>\n<li><strong>Choosing Keys:<\/strong> Select descriptive and consistent keys to keep your code organized and maintainable. Consider using constants for keys. \ud83d\udd11<\/li>\n<li><strong>Data Types:<\/strong> Be mindful of the data types you store. UserDefaults is best for small, simple values, not large or complex objects.<\/li>\n<\/ul>\n<pre><code class=\"language-swift\">\n    \/\/ Storing a boolean value\n    UserDefaults.standard.set(true, forKey: \"isDarkModeEnabled\")\n\n    \/\/ Retrieving a boolean value with a default\n    let isDarkMode = UserDefaults.standard.bool(forKey: \"isDarkModeEnabled\")\n\n    \/\/ Storing an integer value\n    UserDefaults.standard.set(25, forKey: \"userFontSize\")\n\n    \/\/ Retrieving an integer value with a default\n    let fontSize = UserDefaults.standard.integer(forKey: \"userFontSize\")\n\n    \/\/ Storing a string value\n    UserDefaults.standard.set(\"John Doe\", forKey: \"userName\")\n\n    \/\/ Retrieving a string value with a default\n    let userName = UserDefaults.standard.string(forKey: \"userName\") ?? \"Guest\"\n    <\/code><\/pre>\n<h2 style=\"font-size: 24px\">Working with Arrays and Dictionaries<\/h2>\n<p>While UserDefaults is primarily designed for storing primitive data types, it also supports arrays and dictionaries! This opens up possibilities for storing slightly more complex preferences. Imagine saving a list of recently viewed items or a dictionary of user settings. \ud83d\udcc8<\/p>\n<ul>\n<li><strong>Storing Arrays:<\/strong> You can store arrays of strings, numbers, or other supported data types. Keep in mind that UserDefaults stores a *copy* of the array, so modifying the original array won&#8217;t affect the stored value.<\/li>\n<li><strong>Storing Dictionaries:<\/strong> Similar to arrays, you can store dictionaries with string keys and values of supported data types.<\/li>\n<li><strong>Limitations:<\/strong> Avoid storing extremely large arrays or dictionaries in UserDefaults, as this can impact performance. \ud83d\udc0c<\/li>\n<li><strong>Encoding Considerations:<\/strong> Ensure your data types are compatible with UserDefaults. Custom objects need to be encoded and decoded (see more below).<\/li>\n<li><strong>Alternatives:<\/strong> For larger or more complex data, consider using Core Data, Realm, or even simple file storage.<\/li>\n<li><strong>Best Practices:<\/strong> Keep the size of your stored arrays and dictionaries small for optimal performance.<\/li>\n<\/ul>\n<pre><code class=\"language-swift\">\n    \/\/ Storing an array of strings\n    let recentSearches = [\"Swift\", \"UserDefaults\", \"iOS Development\"]\n    UserDefaults.standard.set(recentSearches, forKey: \"recentSearches\")\n\n    \/\/ Retrieving an array of strings\n    if let savedSearches = UserDefaults.standard.array(forKey: \"recentSearches\") as? [String] {\n        print(\"Recent searches: (savedSearches)\")\n    }\n\n    \/\/ Storing a dictionary\n    let userSettings: [String: Any] = [\"notificationsEnabled\": true, \"theme\": \"dark\"]\n    UserDefaults.standard.set(userSettings, forKey: \"userSettings\")\n\n    \/\/ Retrieving a dictionary\n    if let savedSettings = UserDefaults.standard.dictionary(forKey: \"userSettings\") as? [String: Any] {\n        print(\"User settings: (savedSettings)\")\n    }\n    <\/code><\/pre>\n<h2 style=\"font-size: 24px\">Storing Custom Objects (Encoding and Decoding)<\/h2>\n<p>Want to store your own custom objects in UserDefaults? It&#8217;s possible, but requires a little extra work! You&#8217;ll need to make your objects conform to the <code>Codable<\/code> protocol, which allows them to be encoded and decoded into a format that UserDefaults can handle. This is where the magic of data serialization comes in! \u2728<\/p>\n<ul>\n<li><strong>Codable Protocol:<\/strong> Adopt the <code>Codable<\/code> protocol in your custom class or struct. This automatically provides the functionality for encoding and decoding.<\/li>\n<li><strong>JSONEncoder and JSONDecoder:<\/strong> Use <code>JSONEncoder<\/code> to convert your object into JSON data and <code>JSONDecoder<\/code> to convert it back.<\/li>\n<li><strong>Data Type:<\/strong> Store the encoded data as a <code>Data<\/code> object in UserDefaults.<\/li>\n<li><strong>Error Handling:<\/strong> Implement proper error handling to gracefully handle potential encoding and decoding failures.<\/li>\n<li><strong>Object Complexity:<\/strong> Be mindful of the complexity of your custom objects. Very large or deeply nested objects can impact performance.<\/li>\n<li><strong>Security Considerations:<\/strong> If your objects contain sensitive data, consider encrypting them before storing them in UserDefaults.<\/li>\n<\/ul>\n<pre><code class=\"language-swift\">\n    struct UserProfile: Codable {\n        let name: String\n        let age: Int\n    }\n\n    \/\/ Create a UserProfile object\n    let userProfile = UserProfile(name: \"Alice\", age: 30)\n\n    \/\/ Encode the UserProfile object to Data\n    let encoder = JSONEncoder()\n    if let encodedData = try? encoder.encode(userProfile) {\n        UserDefaults.standard.set(encodedData, forKey: \"userProfile\")\n    }\n\n    \/\/ Decode the Data back to a UserProfile object\n    if let savedData = UserDefaults.standard.data(forKey: \"userProfile\") {\n        let decoder = JSONDecoder()\n        if let loadedProfile = try? decoder.decode(UserProfile.self, from: savedData) {\n            print(\"Loaded profile: (loadedProfile)\")\n        }\n    }\n    <\/code><\/pre>\n<h2 style=\"font-size: 24px\">UserDefaults Best Practices and Security Tips<\/h2>\n<p>Using UserDefaults responsibly is key to creating a smooth and secure user experience. There are certain best practices to follow to avoid common pitfalls and potential security vulnerabilities. Think of it as building a solid foundation for your app&#8217;s preferences. \ud83e\uddf1<\/p>\n<ul>\n<li><strong>Key Naming:<\/strong> Use consistent and descriptive key names to avoid confusion and make your code easier to maintain. Consider using constants or enums for keys.<\/li>\n<li><strong>Data Size:<\/strong> Don&#8217;t store large amounts of data in UserDefaults. It&#8217;s designed for small preferences, not for storing entire databases or large files.<\/li>\n<li><strong>Synchronization:<\/strong> While UserDefaults automatically synchronizes to disk periodically, you can manually synchronize using the <code>synchronize()<\/code> method. However, avoid excessive synchronization.<\/li>\n<li><strong>Security:<\/strong> UserDefaults is not a secure storage mechanism. Don&#8217;t store sensitive data like passwords or credit card numbers. Consider using the Keychain for sensitive information.<\/li>\n<li><strong>Data Migration:<\/strong> Plan for data migration when you update your app and change the structure of your UserDefaults data.<\/li>\n<li><strong>Testing:<\/strong> Thoroughly test your UserDefaults implementation to ensure preferences are stored and retrieved correctly.<\/li>\n<\/ul>\n<pre><code class=\"language-swift\">\n    \/\/ Example of using a constant for a key\n    let darkModeKey = \"isDarkModeEnabled\"\n\n    \/\/ Storing a boolean value\n    UserDefaults.standard.set(true, forKey: darkModeKey)\n\n    \/\/ Retrieving a boolean value\n    let isDarkMode = UserDefaults.standard.bool(forKey: darkModeKey)\n    <\/code><\/pre>\n<h2 style=\"font-size: 24px\">UserDefaults and App Groups (Sharing Data)<\/h2>\n<p>UserDefaults can also be used to share data between different apps within the same app group! This is particularly useful for app extensions, such as widgets or custom keyboards, that need to access the same preferences as the main app. It&#8217;s like having a shared workspace for your app family! \ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66<\/p>\n<ul>\n<li><strong>App Groups:<\/strong> Configure an app group in the Apple Developer portal and enable it for all apps and extensions that need to share data.<\/li>\n<li><strong>Shared UserDefaults:<\/strong> Use the <code>init(suiteName:)<\/code> initializer to create a UserDefaults instance associated with the app group.<\/li>\n<li><strong>Data Synchronization:<\/strong> Data stored in the shared UserDefaults is accessible to all apps and extensions within the app group.<\/li>\n<li><strong>Security Considerations:<\/strong> Be mindful of the security implications of sharing data between apps. Only share data that is safe to be accessed by all members of the app group.<\/li>\n<li><strong>Use Cases:<\/strong> Common use cases include sharing login credentials, user settings, or recently accessed data between a main app and its extensions.<\/li>\n<li><strong>Debugging:<\/strong> When debugging app groups, ensure the correct entitlements are set up and that the app group identifier is consistent across all apps and extensions.<\/li>\n<\/ul>\n<pre><code class=\"language-swift\">\n    \/\/ Get the shared UserDefaults for the app group\n    let sharedDefaults = UserDefaults(suiteName: \"group.com.example.myapp\")\n\n    \/\/ Store a value in the shared UserDefaults\n    sharedDefaults?.set(\"Shared Value\", forKey: \"sharedKey\")\n\n    \/\/ Retrieve a value from the shared UserDefaults\n    if let sharedValue = sharedDefaults?.string(forKey: \"sharedKey\") {\n        print(\"Shared value: (sharedValue)\")\n    }\n    <\/code><\/pre>\n<h2 style=\"font-size: 24px\">FAQ \u2753<\/h2>\n<h3 style=\"font-size: 18px\">1. Is UserDefaults secure for storing sensitive information?<\/h3>\n<p>No, UserDefaults is **not** a secure storage mechanism. \ud83d\ude45\u200d\u2642\ufe0f It&#8217;s stored in a plist file that can be potentially accessed by a malicious user with enough technical knowledge.  Never store sensitive information like passwords, credit card details, or personal identifiable information (PII) in UserDefaults.  Instead, use the Keychain for securely storing sensitive data.<\/p>\n<h3 style=\"font-size: 18px\">2. How often does UserDefaults synchronize to disk?<\/h3>\n<p>UserDefaults automatically synchronizes to disk periodically. \u23f1\ufe0f The exact timing of these synchronizations is system-dependent and not guaranteed.  You can manually trigger a synchronization using the <code>synchronize()<\/code> method, but avoid doing this too frequently as it can impact performance.  Rely on the system&#8217;s automatic synchronization for most use cases.<\/p>\n<h3 style=\"font-size: 18px\">3. What happens if I try to store a very large amount of data in UserDefaults?<\/h3>\n<p>Storing a very large amount of data in UserDefaults is **not recommended**. \ud83d\udeab It can lead to performance issues, increased app launch times, and even potential crashes.  UserDefaults is designed for small amounts of data, like user preferences and settings. For larger data sets, consider using Core Data, Realm, or simple file storage using DoHost <a href=\"https:\/\/dohost.us\">https:\/\/dohost.us<\/a> services.<\/p>\n<h2 style=\"font-size: 24px\">Conclusion<\/h2>\n<p>Mastering <strong>Swift UserDefaults tutorial<\/strong> opens up a world of possibilities for personalizing your iOS apps and creating a delightful user experience. By understanding how to store and retrieve simple user preferences, you can make your apps more intuitive and user-friendly. \ud83c\udf1f From saving basic settings to handling custom objects and sharing data between apps, UserDefaults is a powerful tool in any iOS developer&#8217;s arsenal. Remember to use it responsibly, follow best practices, and prioritize security. As the mobile landscape evolves, understanding core persistence mechanisms like UserDefaults remains paramount for building high-quality applications that resonate with your users and keeps them coming back for more. Keep experimenting and improving and your app will be sure to shine. \ud83c\udf89<\/p>\n<h3 style=\"font-size: 18px\">Tags<\/h3>\n<p>    Swift UserDefaults, iOS Development, User Preferences, Data Persistence, Swift Programming<\/p>\n<h3 style=\"font-size: 18px\">Meta Description<\/h3>\n<p>    Learn how to use Swift UserDefaults to store and retrieve simple user preferences in your iOS apps. A comprehensive Swift UserDefaults tutorial with examples.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>UserDefaults: Mastering Simple User Preferences in Swift \ud83c\udfaf Executive Summary This Swift UserDefaults tutorial will guide you through the ins and outs of using UserDefaults in Swift to store and retrieve simple user preferences in your iOS applications. Imagine your app remembering the user&#8217;s preferred theme, notification settings, or even just their name! \ud83d\udca1 We&#8217;ll [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4211],"tags":[4328,498,137,91,4329,4213,4330,4326,4327,4331],"class_list":["post-1050","post","type-post","status-publish","format-standard","hentry","category-ios-development","tag-app-settings","tag-data-persistence","tag-ios-development","tag-mobile-development","tag-nsuserdefaults","tag-swift-programming","tag-swift-tutorial","tag-swift-userdefaults","tag-user-preferences","tag-userdefaults-example"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.0 (Yoast SEO v25.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>UserDefaults: Storing Simple User Preferences - Developers Heaven<\/title>\n<meta name=\"description\" content=\"Learn how to use Swift UserDefaults to store and retrieve simple user preferences in your iOS apps. A comprehensive Swift UserDefaults tutorial with examples.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"UserDefaults: Storing Simple User Preferences\" \/>\n<meta property=\"og:description\" content=\"Learn how to use Swift UserDefaults to store and retrieve simple user preferences in your iOS apps. A comprehensive Swift UserDefaults tutorial with examples.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/\" \/>\n<meta property=\"og:site_name\" content=\"Developers Heaven\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-27T10:03:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/via.placeholder.com\/600x400?text=UserDefaults+Storing+Simple+User+Preferences\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/\",\"url\":\"https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/\",\"name\":\"UserDefaults: Storing Simple User Preferences - Developers Heaven\",\"isPartOf\":{\"@id\":\"https:\/\/developers-heaven.net\/blog\/#website\"},\"datePublished\":\"2025-07-27T10:03:53+00:00\",\"author\":{\"@id\":\"\"},\"description\":\"Learn how to use Swift UserDefaults to store and retrieve simple user preferences in your iOS apps. A comprehensive Swift UserDefaults tutorial with examples.\",\"breadcrumb\":{\"@id\":\"https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developers-heaven.net\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"UserDefaults: Storing Simple User Preferences\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developers-heaven.net\/blog\/#website\",\"url\":\"https:\/\/developers-heaven.net\/blog\/\",\"name\":\"Developers Heaven\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developers-heaven.net\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"UserDefaults: Storing Simple User Preferences - Developers Heaven","description":"Learn how to use Swift UserDefaults to store and retrieve simple user preferences in your iOS apps. A comprehensive Swift UserDefaults tutorial with examples.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/","og_locale":"en_US","og_type":"article","og_title":"UserDefaults: Storing Simple User Preferences","og_description":"Learn how to use Swift UserDefaults to store and retrieve simple user preferences in your iOS apps. A comprehensive Swift UserDefaults tutorial with examples.","og_url":"https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/","og_site_name":"Developers Heaven","article_published_time":"2025-07-27T10:03:53+00:00","og_image":[{"url":"https:\/\/via.placeholder.com\/600x400?text=UserDefaults+Storing+Simple+User+Preferences","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/","url":"https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/","name":"UserDefaults: Storing Simple User Preferences - Developers Heaven","isPartOf":{"@id":"https:\/\/developers-heaven.net\/blog\/#website"},"datePublished":"2025-07-27T10:03:53+00:00","author":{"@id":""},"description":"Learn how to use Swift UserDefaults to store and retrieve simple user preferences in your iOS apps. A comprehensive Swift UserDefaults tutorial with examples.","breadcrumb":{"@id":"https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developers-heaven.net\/blog\/userdefaults-storing-simple-user-preferences\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developers-heaven.net\/blog\/"},{"@type":"ListItem","position":2,"name":"UserDefaults: Storing Simple User Preferences"}]},{"@type":"WebSite","@id":"https:\/\/developers-heaven.net\/blog\/#website","url":"https:\/\/developers-heaven.net\/blog\/","name":"Developers Heaven","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developers-heaven.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/developers-heaven.net\/blog\/wp-json\/wp\/v2\/posts\/1050","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developers-heaven.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/developers-heaven.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/developers-heaven.net\/blog\/wp-json\/wp\/v2\/comments?post=1050"}],"version-history":[{"count":0,"href":"https:\/\/developers-heaven.net\/blog\/wp-json\/wp\/v2\/posts\/1050\/revisions"}],"wp:attachment":[{"href":"https:\/\/developers-heaven.net\/blog\/wp-json\/wp\/v2\/media?parent=1050"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/developers-heaven.net\/blog\/wp-json\/wp\/v2\/categories?post=1050"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/developers-heaven.net\/blog\/wp-json\/wp\/v2\/tags?post=1050"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}