This is my journey towards iOS Development - Learning Swift, building apps, and mastering SwiftUI one project at a time! 🚀
Do you want to test your knowledge and prepare for iOS interviews?
I've compiled a curated list of conceptual & logical questions based on my projects, from beginner to advanced.
Click the glowing button below to dive into the QUESTIONS.md file and level up your skills! 🚀
Tip: These questions are perfect for:
- Swift & SwiftUI concepts review
- Interview preparation
- Practicing logic and problem-solving
Don't just read—try to solve them! 💡
Welcome to my iOS development learning repository! This repo documents my journey as I learn iOS development with Swift and SwiftUI. Here you'll find various projects ranging from simple UI layouts to interactive games and practical utilities.
Started: October 2024
Current Status: Actively Learning & Building
Projects Completed: 4 (and counting!)
IOS-AppDevelopment/
│
├── My First App/ # First SwiftUI app - Tourist card UI
├── War Card Game/ # Interactive card game with game logic
├── BMI Calculator/ # Health utility app with state management
├── To-Do List/ # Task management app with data persistence
├── SwiftCodePlayground.playground/ # Swift fundamentals practice
├── README.md # This file
└── .DS_Store
Created: October 4, 2025
Tech Stack: SwiftUI, ZStack, VStack, HStack
My very first SwiftUI application! A beautiful tourist card showcasing Niagara Falls.
Skills Learned:
- ✅ SwiftUI basic layout components (VStack, HStack, ZStack)
- ✅ Image handling and resizing with
.resizable()and.aspectRatio() - ✅ SF Symbols for system icons
- ✅ Styling with modifiers (
.cornerRadius(),.shadow(),.padding()) - ✅ Color management and
.ignoresSafeArea() - ✅ Text formatting and fonts
- ✅ Layout alignment and spacing
Key Features:
- 🎨 Custom card design with rounded corners and shadows
- ⭐ Star rating display using SF Symbols
- 📱 Responsive layout with proper spacing
- 🖼️ Image aspect ratio handling
Code Highlights:
// Layered layout with ZStack
ZStack {
Color(.systemMint).ignoresSafeArea()
VStack(alignment: .leading, spacing: 20.0) {
// Card content with image, text, and icons
}
}Created: October 4, 2025
Tech Stack: SwiftUI, State Management, Game Logic
An interactive card game where you compete against the CPU! Draw cards and see who wins each round.
Skills Learned:
- ✅
@Stateproperty wrapper for state management - ✅ Button actions and user interaction
- ✅ Function creation and game logic
- ✅ Random number generation with
Int.random(in:) - ✅ String interpolation and conversion
- ✅ Conditional logic (if-else statements)
- ✅ Variable mutation and score tracking
Key Features:
- 🎮 Interactive gameplay with button taps
- 🎲 Random card generation (values 2-14)
- 📊 Real-time score tracking for Player vs CPU
- 🎨 Custom game assets and background
- 🔄 Dynamic UI updates based on game state
Code Highlights:
@State var playerScore: Int = 0
@State var cpuScore: Int = 0
func deal() {
let playerCardValue = Int.random(in: 2...14)
let cpuCardValue = Int.random(in: 2...14)
// Update scores based on comparison
if playerCardValue > cpuCardValue {
playerScore += 1
}
}Created: October 9, 2025
Tech Stack: SwiftUI, Advanced State Management, Data Models, Animations
A comprehensive BMI (Body Mass Index) calculator supporting both Metric and Imperial units with beautiful animations and health advice.
Skills Learned:
- ✅ Complex state management with multiple
@Stateproperties - ✅
@Bindingfor two-way data flow between views - ✅ Custom reusable components
- ✅ Struct data models (
BMIResult) - ✅ Computed properties for validation
- ✅ Optional handling with
guard letandif let - ✅ Switch statements with range patterns
- ✅ Tuple return types
- ✅ String formatting with
String(format:) - ✅ Animations with
withAnimation()and.transition() - ✅ TextField with keyboard type customization
- ✅ Picker with SegmentedPickerStyle
- ✅ Conditional rendering
- ✅ Color opacity and shadow effects
Key Features:
- 📊 Real-time BMI calculation with validation
- 🌍 Support for Metric (kg/cm) and Imperial (lbs/in) units
- 🎨 Beautiful, modern UI with custom components
- 🎭 Animated result display with spring animation
- 💡 Color-coded health categories (Underweight, Normal, Overweight, Obese)
- 📝 Personalized health advice based on BMI
- ✨ Input validation with disabled state
- 🎯 Reusable InputFieldView component
Code Highlights:
// Computed property for validation
private var isInputValid: Bool {
guard let w = Double(weight), let h = Double(height),
w > 0, h > 0 else { return false }
return true
}
// Tuple return for complex data
private func interpretBMI(_ bmi: Double) -> (category: String, color: Color, advice: String) {
switch bmi {
case ..<18.5:
return ("Underweight", .blue, "You may need to gain weight...")
case 18.5..<25:
return ("Normal", .green, "Great! You're in a healthy weight range.")
// ...
}
}
// Smooth animations
withAnimation(.spring()) {
showingResult = true
}Created: October 10, 2025
Tech Stack: SwiftUI, UserDefaults, Data Persistence, List Management
A fully functional task management app with data persistence! Add, complete, and delete tasks that persist between app launches.
Skills Learned:
- ✅ Protocols:
Identifiable,Codablefor model conformance - ✅ UUID: Unique identifier generation for list items
- ✅ UserDefaults: Key-value storage for data persistence
- ✅ JSON Encoding/Decoding: Converting objects to/from JSON
- ✅ List and ForEach: Dynamic list rendering with collections
- ✅ onDelete modifier: Swipe-to-delete gesture handling
- ✅ EditButton: Built-in list editing mode
- ✅ Closures: Function parameters for callbacks
- ✅ Private functions: Encapsulation and code organization
- ✅ guard statements: Early exit patterns for cleaner code
- ✅ Optional chaining: Safe unwrapping with
if let - ✅ Array methods:
firstIndex(where:),remove(atOffsets:) - ✅ Lifecycle methods:
.onAppear()for initialization - ✅ Toolbar customization: Adding navigation bar items
- ✅ Alert dialogs: User feedback with
.alert() - ✅ View composition: Breaking UI into reusable components
- ✅ Ternary operators: Conditional UI rendering
- ✅ ButtonStyle: Customizing button interaction
Key Features:
- 📝 Add new tasks with TextField input
- ✓ Mark tasks as complete/incomplete with checkbox
- 🗑️ Swipe-to-delete functionality
- 💾 Persistent storage using UserDefaults
- 🎨 Empty state with helpful message
- ✏️ Edit mode for managing multiple tasks
- 🔔 Success alert on task addition
- 🎯 Disabled button when input is empty
- 📱 Clean, native iOS interface
- ⚡ Real-time data synchronization
Code Highlights:
// Data model with protocols
struct Task: Identifiable, Codable {
var id: UUID
var title: String
var isCompleted: Bool
}
// Saving with UserDefaults and JSON
private func saveTasks() {
if let encoded = try? JSONEncoder().encode(tasks) {
UserDefaults.standard.set(encoded, forKey: "SavedTasks")
}
}
// Loading persisted data
private func loadTasks() {
if let savedData = UserDefaults.standard.data(forKey: "SavedTasks") {
if let decodedTasks = try? JSONDecoder().decode([Task].self, from: savedData) {
tasks = decodedTasks
}
}
}
// Dynamic list with delete support
List {
ForEach(tasks) { task in
TaskRowView(task: task, onToggle: {
toggleTaskCompletion(task)
})
}
.onDelete(perform: deleteTasks)
}Status: Planning Phase
Planned Features:
- API integration with weather service
- JSON parsing and data handling
- Location-based weather
- 5-day forecast display
- Modern animated UI
- ✅ Variables and Constants (
var,let) - ✅ Data Types (String, Int, Double, Bool)
- ✅ Optionals and Optional Binding
- ✅ Functions and Parameters
- ✅ Control Flow (if-else, switch)
- ✅ Structs and Data Models
- ✅ Computed Properties
- ✅ Tuples
- ✅ String Interpolation and Formatting
- ✅ Random Number Generation
- ✅ Type Conversion
- ✅ Protocols (Identifiable, Codable)
- ✅ UUID Generation
- ✅ Closures and Higher-Order Functions
- ✅ Guard Statements
- ✅ Optional Chaining
- ✅ Array Methods (firstIndex, remove)
- ✅ Ternary Operators
- ✅ Layout: VStack, HStack, ZStack, Spacer, Divider
- ✅ Views: Text, Image, Button, TextField, Picker, List
- ✅ Styling:
.padding(),.foregroundColor(),.font(),.background() - ✅ Visual Effects:
.cornerRadius(),.shadow(),.opacity(),.strikethrough() - ✅ Modifiers:
.resizable(),.aspectRatio(),.frame(),.disabled() - ✅ System Assets: SF Symbols
- ✅ Navigation: NavigationView, Toolbar, EditButton
- ✅ List Features: ForEach, onDelete, listStyle
- ✅ Alerts:
.alert()modifier - ✅ Button Styles: PlainButtonStyle, custom styles
- ✅
@State- Managing local state - ✅
@Binding- Two-way data binding between views - ✅ State mutations and UI updates
- ✅ Conditional rendering based on state
- ✅ UserDefaults: Key-value storage system
- ✅ JSON Encoding: Converting Swift objects to JSON
- ✅ JSON Decoding: Parsing JSON back to objects
- ✅ Data Lifecycle: Loading on appear, saving on changes
- ✅ Error Handling: Optional try with
try?
- ✅ Custom reusable components
- ✅ Component composition
- ✅ Data models with structs
- ✅ Input validation
- ✅ Animations and transitions
- ✅ Keyboard type customization
- ✅ Mathematical calculations
- ✅ Range patterns in switch statements
- ✅ List management and editing
- ✅ Gesture handling (swipe-to-delete)
- ✅ Lifecycle methods (onAppear)
- ✅ Private function encapsulation
- 🔄 Core Data (Upcoming)
- 🔄 MVVM Architecture (Upcoming)
- 🔄 Networking & APIs (Upcoming)
- 📖 100 Days of SwiftUI by Paul Hudson (Hacking with Swift)
- 🎥 YouTube Tutorials - Various iOS development channels
- 📱 Apple Developer Documentation - Official SwiftUI guides
- 💻 Xcode Playground - Experimenting with Swift syntax
- Set up Xcode and development environment
- Learn Swift basics in Playground
- Understand SwiftUI layout system
- Build first UI with VStack/HStack/ZStack
- Work with Images and SF Symbols
- Learn @State for reactive updates
- Implement button actions
- Add game logic and calculations
- Handle user input with TextField
- Create custom reusable components
- Master @Binding for data flow
- Implement form validation
- Add animations and transitions
- Build complex layouts
- Learn UserDefaults
- Implement data saving and loading
- Build To-Do List app
- Understand data persistence patterns
- Master JSON encoding/decoding
- Work with List and ForEach
- Learn MVVM pattern
- Separate business logic from UI
- Implement ObservableObject
- Master @Published and @ObservedObject
- Core Data for complex data
- Networking and API calls
- JSON parsing from APIs
- NavigationStack and routing
- Async/await patterns
| Metric | Count |
|---|---|
| Projects Completed | 4 |
| Days of Learning | 7 |
| SwiftUI Views Mastered | 20+ |
| Lines of Code Written | 800+ |
| Concepts Learned | 40+ |
| Hours Invested | 25+ |
Focus: SwiftUI Fundamentals, State Management & Data Persistence
| Date | Project | Key Achievement |
|---|---|---|
| Oct 4 | My First App | First SwiftUI app with custom layouts |
| Oct 4 | War Card Game | Implemented game logic and state management |
| Oct 9 | BMI Calculator | Advanced state management, custom components, animations |
| Oct 10 | To-Do List | Data persistence with UserDefaults, List management |
Skills This Month:
- SwiftUI layout system
- State management (@State, @Binding)
- Custom components
- Animations
- Input validation
- Data modeling
- UserDefaults persistence
- JSON encoding/decoding
- List and ForEach
- Gesture handling
- macOS: 13.0 Ventura or later
- Xcode: 15.0 or later
- iOS Deployment Target: iOS 17.0+
- Swift Version: 5.9
-
Clone this repository
git clone https://github.com/DebugWithAryan/IOS-AppDevelopment.git cd IOS-AppDevelopment -
Open a project
cd "To-Do List" open *.xcodeproj
-
Run in Simulator or Device
- Select your target device (iPhone 15 recommended)
- Press
⌘ + Ror click the Play button - Explore and experiment!
- Weather App - API integration and JSON parsing
- Quiz App - Multiple choice questions with scoring
- Expense Tracker - Financial management app
- Recipe Book - Browse and save recipes
- Habit Tracker - Daily habit monitoring
- Notes App - Rich text editing with Core Data
Currently no known issues! All apps are functional and tested.
- 🎉 Built first iOS app
- 🎮 Created first game with logic
- 🏗️ Developed first utility app
- 📱 Mastered SwiftUI basics
- 🎨 Implemented custom UI components
- ⚡ Added animations and transitions
- ✅ Implemented input validation
- 💾 Achieved data persistence with UserDefaults
- 📝 Built complete CRUD functionality
- 🔄 Mastered List management
While this is a personal learning repository, I'm open to:
- 💡 Suggestions for improvement
- 🐛 Bug reports
- 📚 Learning resources recommendations
- 🤝 Collaboration on practice projects
Feel free to open an issue or reach out!
- GitHub: @DebugWithAryan
- Email: aryanjaiswal.work@gmail.com
- Portfolio: AryanJaiswalPortfolio
Each project has taught me something valuable:
- My First App showed me how intuitive SwiftUI's declarative syntax is
- War Card Game taught me how state management makes apps interactive
- BMI Calculator demonstrated the power of component reusability and data modeling
- To-Do List revealed the importance of data persistence and practical app architecture
- Understanding the difference between
@Stateand@Binding - Debugging layout issues with nested stacks
- Implementing proper input validation
- Managing optional values safely
- Working with JSON encoding/decoding
- Implementing swipe-to-delete functionality
- Managing app lifecycle and data persistence
I'm excited to dive into networking and API integration! Building a Weather App will teach me how to fetch real-world data and handle asynchronous operations. After that, I'll explore Core Data for more complex data management and eventually move toward MVVM architecture.
This project is licensed under the MIT License - feel free to use any code for your own learning!
- Paul Hudson (Hacking with Swift) - Amazing tutorials
- Apple Developer Documentation - Comprehensive guides
- iOS Development Community - Endless support and inspiration
- Stack Overflow - Helping me debug those tricky issues!
⭐ Star this repo if you're also learning iOS development!
Let's learn together!
Last Updated: October 10, 2024
Made with ❤️ and lots of ☕ by Aryan Jaiswal
"The journey of a thousand apps begins with a single View." 🚀