MBurger Headless CMS
User GuideCMS HeadlessEngagement Platform
  • ๐Ÿ”MBurger Documentation๐Ÿ”
  • ๐Ÿ”‘ API
    • Introduction
      • Getting Started
      • Structure
    • Common Path
      • Basics
      • POST Bodies
      • POST Relations
      • Evaluating Responses
    • API Authentication
    • Project
    • Blocks
      • Get Blocks
      • Get Block
    • Sections
      • Get Sections
      • Get Section
      • Create Section
      • Update Section
      • Delete Section
    • Media
      • Get All Media
      • Upload Media
      • Get Media
      • Delete Media
    • Integrations / Extensions
      • Authentication Provider
        • Registration
        • Login
        • Logout
        • Get Profile
        • Update Profile
        • Delete Profile
        • Change Password
        • Forgot Password
      • Live Messages
        • Get All Live Messages
        • Send Live Message
        • Delete Live Message
      • In-App Subscriptions
        • InApp Subscription
        • Resume InApp Subscription
      • Shopify
        • Create a Shopify private app
        • Enable Shopify in MBurger
        • Collections Editor
      • Stripe
        • Create Customer
        • Get Cards
        • Create Card
        • Make Default
        • Delete Card
        • Subscription
        • Cancel Subscription
        • Resume Subscription
        • Payment
    • Going Deeper
      • Available Data Types (Elements)
  • ๐Ÿ“ฑ Android SDK
    • Introduction
    • Installation
    • Initialization
    • Fetch for blocks
    • Fetch sections from blocks
    • Mapping to custom objects
    • Admin
      • Delete a Section/Media
      • Create a new Section
      • Update an existing Section
    • Auth
      • Register a new user
      • Authenticate a user
      • User profile
      • Edit profile
      • Other features
    • Proguard Rules
    • Plugins
    • Sample Apps
      • MBurger Explorer
      • MBurger Radio
    • MBurger Apps
  • ๐Ÿ iOS SDK
    • Introduction
    • Installation
    • Initialization
    • Fetch the project
    • Fetch blocks
    • Fetch sections
    • Media
    • Encoding & Decoding
    • Serialization & Equality
    • Admin
      • Add/Edit a section
      • Delete a section
      • Upload media
      • Delete a media
    • Auth
      • Register a user
      • Authenticate a user
      • Retrieve user information
      • Update user profile
    • Plugins
    • Sample Apps
      • MBurger Explorer
      • MBurger Radio
    • MBurger Apps
  • ๐Ÿ’ป PHP SDK
    • Installation & Configuration
    • How to use
    • Support & Feedback
    • License
  • โ˜• JavaScript SDK
    • Introduction
    • Installation
    • Configuration
    • Methods Reference
    • Support & Feedback
    • License
  • ๐Ÿ”ทFlutter SDK
    • Installation
    • Initialization
    • Fetch the project
    • Fetch blocks
    • Fetch sections
    • Media
    • Admin
      • Add/Edit a section
      • Delete a section
      • Upload a media
      • Delete a media
    • Auth
      • Register a user
      • Authenticate a user
      • Retrieve user information
      • Update user profile
  • โ“How to?
    • Basic interactions
      • Blocks
        • Get a Single Block
        • Get multiple Blocks
      • Sections
        • Get a single Section
        • Get Multiple Sections
        • Create a Section
        • Update a Section
        • Delete a Section
    • Advanced section retrieval
      • Filter sections
      • Obtain distance from a section
      • Manage locales and the fallback language
      • Get a section by SLUG
      • Obtain only sections with a defined relation
    • Advanced section creation
      • Create a section with a relation
      • Set the value of a checkbox element
      • Create a section with a multiple or dropdown element
      • Create a section with a SLUG
      • Create a section with SEO
      • Send or schedule a push when creating a section
    • Set the visibility of a section
    • Get images with various format
  • ๐Ÿ‘ป Sample App
    • Introduction
    • Create an MBurger project
    • Create Home, News and Gallery blocks
    • Create the project
    • Setup the SDK
    • Query the API for items
    • Map your objects from MBurger objects
    • Implement push notifications
    • Take a bite
Powered by GitBook
On this page

Was this helpful?

  1. iOS SDK

Encoding & Decoding

MBurgerSwift has a built in system that can be used to init your custom constructs. You have only to make your construct conform to MBDecodable protocol.

For example a News that's reflecting a newsfeed block in MBurger:

class News: MBDecodable {
    let text: String
    let images: [MBImage]
    let link: String
    let date: Date

    enum DecoderCodingKeys: String, CodingKey {
        case text
        case images
        case link
        case date
    }

    required init(from decoder: MBDecoder) throws {
        let container = try decoder.container(keyedBy: DecoderCodingKeys.self)

        text = try container.decode(String.self, forKey: .text)
        images = try container.decode([MBImage].self, forKey: .images)
        link = try container.decode(String.self, forKey: .link)
        date = try container.decode(Date.self, forKey: . date)
    }
}

And call the decode function of MBDecoder to create and populate an array of news like this:

MBClient.getSections(ofBlock: THE_BLOCK_ID, parameters: nil, elements: true, success: { (sections, _) in
    sections.forEach { section in
         do {
             if let elements = section.elements {
                 let news = try MBDecoder.decode(News.self, elements: elements)
                 newsArray.append(news)
             }
         } catch let error {
              self.showError(error)
         }
     }
}, failure: { error in
      self.showError(error)
})

The DecoderCodingKey needs to match to the name of the element in the MBurger block(e.g. if the element on the dashboard is called Title the decoder key needs to be Title):

enum DecoderCodingKeys: String, CodingKey {
        case text = "Title"
        case images
        case link
        case date
 }

You can find a complete example in the Example project.

PreviousMediaNextSerialization & Equality

Last updated 4 years ago

Was this helpful?

๐Ÿ