1️⃣ 내부 저장소
- 내부 저장소란? 앱이 기억하고 있어야 할 비휘발성 데이터를 저장하기 위해 사용되는 개념이며, 디바이스에 저장되기에 많은 데이터를 저장하기에는 적합하지 않다.
- 디바이스에 저장하는 방법은 크게 4가지가 있다.
1. UserDefaults
- UserDefaults는 간단한 Key-Value 데이터를 저장하는데 사용된다.
- 주로 설정 값이나 사용자 기본 설정과 같은 작은 데이터를 저장할 때 사용된다.
- 여기서 key값은 꼭 String 타입이여야 한다.
UserDefaults.standard.set(value, forKey: key)
UserDefaults.standard.value(forKey: key)
UserDefaults.standard.string(forKey: key)
UserDefaults.standard.removeObject(forKey: key)
2. KeyChain
- iOS 앱에서 보안 정보를 안전하게 저장하고 관리하기 위한 메커니즘이다.
- 키체인은 사용자의 비밀번호, 토큰, 인증서, 민감한 데이터와 같은 보안 관련 정보를 저장하는데 사용된다.
- 키체인은 암호화되어 있어 앱 외부에서 쉽게 접근할 수 없으며, 사용자 데이터의 안전성이 보장된다.
3. 파일 시스템
- 앱 내부 또는 외부 파일 시스템에 데이터를 저장할 수 있으며, 주로 텍스트 파일, 이미지, 동영상 등의 데이터를 저장할 때 사용된다.
- 개인적으로 Unity에서 텍스트 파일을 저장하는 방식과 비슷하다고 생각한다.
let fileName = "example.txt"
let content = "이것은 파일에 쓰여진 내용입니다."
if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
let fileURL = dir.appendingPathComponent(fileName)
do {
try content.write(to: fileURL, atomically: false, encoding: .utf8)
print("파일이 성공적으로 생성되었습니다.")
} catch {
print("파일 생성 중 에러가 발생했습니다: \(error.localizedDescription)")
}
}
let fileName = "example.txt"
if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
let fileURL = dir.appendingPathComponent(fileName)
do {
let content = try String(contentsOf: fileURL, encoding: .utf8)
print("파일 내용: \(content)")
} catch {
print("파일 읽기 중 에러가 발생했습니다: \(error.localizedDescription)")
}
}
4. Core Data
- iOS 앱에서 데이터를 관리하고 영구적으로 저장하는데 사용되는 프레임워크이며, 데이터 모델을 정의하고 이를 기반으로 데이터를 읽고 쓸 수 있다.
- MySQL, MongoDB, MariaDB 같이 데이터베이스와 비슷하다.
2️⃣ 화면 전환하기
1. Present 방식

- 현재 ViewController위에 새로운 ViewController를 표시하는 방식이다.
- 일반적으로 아래에서 위로 올라오는 형태의 modal interface 구현에 사용된다.
- Manual Segue를 이용해서 구현할 수 있다.
2. Push 방식

- 애니메이션을 사용하여 새로운 ViewController가 푸시되고, 이전 ViewController를 숨기는 방식이다.
- Navigation Controller를 추가해서 구현할 수 있다.