Skip to content →

Migrate NSUserDefaults to App Groups – Swift

I needed migrate my NSUserDefaults to using App Groups. I came across this post Migrating to App Groups, which was doing exactly what I wanted in Objective-C. Here’s the version I rewrote in Swift:

func migrateUserDefaultsToAppGroups() {

// User Defaults – Old
let userDefaults = NSUserDefaults.standardUserDefaults()

// App Groups Default – New
let groupDefaults = NSUserDefaults(suiteName: "group.myGroup")

// Key to track if we migrated
let didMigrateToAppGroups = "DidMigrateToAppGroups"

if let groupDefaults = groupDefaults {
if !groupDefaults.boolForKey(didMigrateToAppGroups) {
for key in userDefaults.dictionaryRepresentation().keys {
groupDefaults.setObject(userDefaults.dictionaryRepresentation()[key], forKey: key)
}
groupDefaults.setBool(true, forKey: didMigrateToAppGroups)
groupDefaults.synchronize()
print("Successfully migrated defaults")
} else {
print("No need to migrate defaults")
}
} else {
print("Unable to create NSUserDefaults with given app group")
}

}

Gist

Published in iOS