{"id":28386910,"url":"https://github.com/futuretap/fticloudsync","last_synced_at":"2025-08-06T16:34:08.060Z","repository":{"id":4269947,"uuid":"5397681","full_name":"futuretap/FTiCloudSync","owner":"futuretap","description":"Automatically syncs NSUserDefaults across multiple iOS devices using iCloud.","archived":false,"fork":false,"pushed_at":"2023-11-28T10:48:23.000Z","size":47,"stargazers_count":146,"open_issues_count":2,"forks_count":13,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-05-30T19:47:44.418Z","etag":null,"topics":["icloud-sync","ios","nsuserdefaults"],"latest_commit_sha":null,"homepage":"https://www.futuretap.com","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/futuretap.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"futuretap"}},"created_at":"2012-08-13T10:34:47.000Z","updated_at":"2025-03-20T15:32:05.000Z","dependencies_parsed_at":"2024-06-21T13:02:14.652Z","dependency_job_id":"02e26483-af93-4ecb-a807-30a91c927801","html_url":"https://github.com/futuretap/FTiCloudSync","commit_stats":{"total_commits":5,"total_committers":3,"mean_commits":"1.6666666666666667","dds":0.4,"last_synced_commit":"95906d0c8b313a7825cecfb6e878d3c9a4d1fbf6"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/futuretap/FTiCloudSync","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futuretap%2FFTiCloudSync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futuretap%2FFTiCloudSync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futuretap%2FFTiCloudSync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futuretap%2FFTiCloudSync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/futuretap","download_url":"https://codeload.github.com/futuretap/FTiCloudSync/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futuretap%2FFTiCloudSync/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262094334,"owners_count":23257933,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["icloud-sync","ios","nsuserdefaults"],"created_at":"2025-05-30T15:39:07.405Z","updated_at":"2025-06-26T15:31:19.872Z","avatar_url":"https://github.com/futuretap.png","language":"Objective-C","funding_links":["https://github.com/sponsors/futuretap","https://github.com/sponsors/futuretap)!"],"categories":[],"sub_categories":[],"readme":"# FTiCloudSync\n[![License](https://img.shields.io/badge/Platform-iOS-gray)](https://creativecommons.org/licenses/by-sa/4.0/)\n[![License](https://img.shields.io/badge/License-CC--BY--SA_4.0-gray)](https://creativecommons.org/licenses/by-sa/4.0/)\n[![Sponsor](https://img.shields.io/badge/Sponsor-ff40a0)](https://github.com/sponsors/futuretap)\n[![Mastodon](https://img.shields.io/mastodon/follow/000010558?domain=https%3A%2F%2Fmastodon.cloud)](https://mastodon.cloud/@ortwingentz)\n\nAutomatically syncs NSUserDefaults across multiple iOS devices using iCloud key-value storage (`NSUbiquitousKeyValueStore`).\n\n## Installation\nDrag all files into your Xcode project.\n\n\n## Requirements\niCloud requires iOS 5.0 or later. If iCloud is not available, this code does nothing.\n\n\n## Usage\nAll write and remove requests to NSUserDefaults are automatically synchronized with iCloud. To prevent synchronization for individual keys, prefix the key with a ! (exclamation mark).\n\nTo respond to updates from iCloud you can observe the `FTiCloudSyncDidUpdateNotification`. It contains the `NSUserDefaults` object and in the `userInfo` a dictionary with `FTiCloudSyncChangedKeys` and `FTiCloudSyncRemovedKeys`. These are arrays of the changed and removed keys.\n\n\n## Compatibility\nFTiCloudSync is compatible with [InAppSettingsKit](http://www.inappsettingskit.com), a framework to easily add in-app settings to iPhone apps. InAppSettingsKit automatically updates the UI when an iCloud update is received.\n\n\n## Author\nDeveloped by [Ortwin Gentz](https://www.futuretap.com/about/ortwin-gentz) ([Mastodon](https://mastodon.cloud/@ortwingentz)) and used in [FutureTap](https://www.futuretap.com)’s [Where To?](https://wheretoapp.com) and [Streets](https://streets.app) apps – we eat our own dog food!\n\n\n## License\nLicensed under [CC-BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/).\n\nYou are free to share, adapt and make commercial use of the work as long as you give attribution and keep this license. To give credit, we suggest this text in the about screen or App Store description: \"Uses FTiCloudSync by Ortwin Gentz\", with a link to the [GitHub page](https://github.com/futuretap/FTiCloudSync).\n\nIf you need a different license without attribution requirement, please contact me and we can work something out.\n\nIncludes:\n\n- [RegexKitLite](http://regexkit.sourceforge.net/) by John Engelhart. Copyright \u0026copy; 2008-2010 John Engelhart. Licensed under the terms of the BSD License.\n- [MethodSwizzling](http://cocoadev.com/index.pl?MethodSwizzling) by Mike Ash\n\n## Sponsors wanted\nIf you would like to support my Open Source work, consider joining me as a [sponsor](https://github.com/sponsors/futuretap)! 💪️ Your sponsorship enables me to spend more time on this and other community projects. Thank you!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuturetap%2Ffticloudsync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffuturetap%2Ffticloudsync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuturetap%2Ffticloudsync/lists"}