Podcast episodes

Twitter Space on Storage options on iOS

Mon, 04 Apr 2022 • 00:47:50

Send us a text

This Twitter Space Stefan and I share some thoughts on what options you have in storing data on a device and in the cloud on/from iOS.

1. What is the goal of this space?

We won’t give you exact recommendations, storage is highly dependent on maaaany factors!

  • Type of data to be stored (e.g. Booleans, Strings, Images, Large objects)
  • Volume of data to be stored (e.g. settings options, notes app that saves users notes, offline backup for social network data)
  • Needs to work offline?
  • Sensitive data (encryption, data privacy, GDPR)
  • Backed up?

2. What local options are there?

  • UserDefaults
    • Most basic option for small settings data (recommended use from Apple)
    • Optimised for UIKit + SwiftUI
    • Only locally available
  • Simple local file (e.g. Text, JSON)
    • More freedom to use a structure you want
    • More risks because you have to handle all by yourself
  • Local database (e.g. SQLite)
    • provides more powerful options for querying, etc.
    • there are wrappers around it / libraries for easier usage
    • you have to know what you’re doing
  • CoreData
    • most powerful local option
    • can have a steep learning curve
    • gives you a lot of power and flexibility

3. What online options are there?

  • CloudKit
    • Apple’s cross-platform solution
      • can but does not have to be used with CoreData
    • Stefan: planning to use it for a side-project but haven’t used it before
    • great to sync data between user’s devices: iOS/tvOS/iPadOS/macOS/watchOS
    • limitation: only Apple ecosystem
    • mixing reports: some people had syncing issues some didn’t
  • Firebase / Realm / AWS Amplify / Azure probably has a solution as well
    • necessary for apps with collaborative features (or maybe as a convenience for account-functionality)
    • platform-agnostic
      • share data between iOS/Android/Windows/Mac/Web
    • be aware of something called “vendor lock-in”
    • pricing is something to keep track of
      • there are horrible stories of people having incredibly high bills because of loops/bugs they had in their code
    • you give up control for convenience
      • not a bad thing but important to keep in mind

Runway
Put your mobile releases on autopilot and keep the whole team in sync throughout. More info on runway.team

Lead Software Developer 
Learn best practices for being a great lead software developer.

How to Start a Podcast Guide: The Complete Guide
Learn how to plan, record, and launch your podcast with this illustrated guide.

Support the show

Rate me on Apple Podcasts.

Send feedback on SpeakPipe
Or contact me on Mastodon: https://hachyderm.io/@appforce1

Support my podcast with a monthly subscription, it really helps.

My book: Being a Lead Software Developer