| SecureStorgageSample | ||
| SecureStorgageSample.xcodeproj | ||
| SecureStorgageSampleTests | ||
| SecureStorgageSampleUITests | ||
| .gitignore | ||
| README.md | ||
SecureStorgageSample
A sample iOS app demonstrating the LocalData package capabilities for secure, typed storage across multiple domains.
Features
This app provides interactive demos for all LocalData storage options:
| Tab | Demo | Storage Domain |
|---|---|---|
| Defaults | Save/load/remove values | UserDefaults |
| Keychain | Secure credentials with biometrics | Keychain |
| Files | User profiles with AnyCodable | File System |
| Encrypted | AES-256 encrypted logs | Encrypted File System |
| Sync | Platform availability & sync policies | Multiple |
Requirements
- iOS 17.0+
- Xcode 15+
Getting Started
- Open
SecureStorgageSample.xcodeproj - Select an iOS simulator or device
- Build and run (⌘R)
Project Structure
SecureStorgageSample/
├── ContentView.swift # Tabbed navigation
├── StorageKeys.swift # 12 example key definitions
├── WatchOptimized.swift # Watch data models
└── Views/
├── UserDefaultsDemo.swift
├── KeychainDemo.swift
├── FileSystemDemo.swift
├── EncryptedStorageDemo.swift
└── PlatformSyncDemo.swift
Storage Key Examples
The app demonstrates various storage configurations:
UserDefaults
- Simple string storage with automatic sync
- Custom suite support
Keychain
- 7 accessibility options (whenUnlocked, afterFirstUnlock, etc.)
- 6 access control options (biometry, passcode, etc.)
File System
- Documents directory (persisted, backed up)
- Caches directory (can be purged)
- JSON and PropertyList serializers
Encrypted Storage
- AES-256-GCM encryption
- PBKDF2 key derivation with configurable iterations
- Complete file protection
Platform & Sync
- Platform availability (phoneOnly, watchOnly, all)
- Sync policies (never, manual, automaticSmall)
Dependencies
- LocalData - Local package for typed secure storage
License
This sample is provided for demonstration purposes.