Xcode is Apple’s IDE for building, debugging, and shipping Swift apps. Swift Package Manager (SPM) manages dependencies and multi-target projects—similar to Gradle for Kotlin or npm for JavaScript.
Typical local workflow
swift package init --type executableor create an Xcode project- Add dependencies in
Package.swift swift build/swift testor Cmd+B in Xcode- Run on simulator or device from Xcode schemes
Package.swift sketch
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "MyApp",
targets: [
.executableTarget(name: "MyApp"),
.testTarget(name: "MyAppTests", dependencies: ["MyApp"]),
]
)
Important interview questions and answers
- Q: SPM vs CocoaPods?
A: SPM is built into Swift and Xcode; CocoaPods remains in legacy iOS projects—many teams migrate to SPM. - Q: Can SPM build on Linux?
A: Yes for server-side Swift packages without Apple-only frameworks.
Self-check
- What file declares SPM package metadata?
- What command runs package tests from CLI?
Tip: Commit Package.resolved so CI and teammates resolve the same dependency versions.
Interview prep
- SPM vs CocoaPods?
SPM built into Swift/Xcode; CocoaPods legacy in older iOS projects.
- Test command?
swift test from package root.