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)
			print("Successfully migrated defaults")
		} else {
			print("No need to migrate defaults")
	} else {
		print("Unable to create NSUserDefaults with given app group")


Published in iOS