CRUD란?
- Create = 데이터 생성
- Read = 데이터 읽기
- Update = 데이터 업데이트 (쓰기)
- Delete = 데이터 삭제
Swift 로 기기 내 디스크에 데이터를 저장할 수 있는 대표적인 방법으로는 CoreData 와 UserDefaults 가 있음.
UserDefaults
- Key-Value 기반의 경량 데이터 저장소.
- 데이터를 파일 형태로 로컬 디스크에 저장.
- iOS에서 제공하는 가장 단순한 데이터 저장 방식.
- 간단한 설정 데이터(예: 사용자 선호, 앱 설정) 저장.
- 사용자 로그인 상태, 점수, 간단한 문자열 등의 저장.
- 데이터를 구조적으로 저장하거나 검색하지 않아도 되는 경우.
장점:
- 간단한 사용법:
- Key-Value 쌍으로 데이터를 저장하고 읽는 방식이 간단합니다.
- 빠른 저장 및 읽기:
- 작은 데이터를 저장하고 읽는 데 최적화되어 있습니다.
단점:
- 데이터 용량 제한:
- UserDefaults는 경량 데이터(작은 문자열, 숫자, Bool 등) 저장에 적합하며, 수백 KB 이상의 데이터를 저장하면 성능에 문제가 발생할 수 있습니다.
- 복잡한 구조 관리 불가:
- 관계형 데이터(예: 객체 간의 참조)를 저장하거나, 대량의 데이터를 관리하는 데 적합하지 않습니다.
- 데이터 무결성 보장 부족:
- UserDefaults는 데이터베이스가 아니므로, 데이터 무결성을 보장하지 않습니다.
CoreData 란?
- CoreData 는 앱에서 기기의 디스크에 데이터를 읽고 쓸 수 있게 돕는 프레임워크.
- 복잡한 데이터 구조와 관계형 데이터를 관리하기 위해 설계.
장점:
- 복잡한 데이터 관리 가능:
- 관계형 데이터(객체 간의 관계), 페이징, 정렬, 필터링 등 고급 기능을 지원합니다.
- 성능 최적화:
- 대량의 데이터를 처리하거나 조건에 따라 데이터를 검색할 때 성능이 뛰어납니다.
단점:
- 초기 설정 및 사용이 복잡:
- Core Data는 설계와 초기 설정에 시간이 걸립니다.
- 오버헤드:
- 간단한 데이터를 저장하거나 빠르게 작업해야 하는 경우에는 불필요한 복잡성과 오버헤드가 발생할 수 있습니다.
CoreData 의 C, R
func createData(name: String, phoneNumber: String) {
guard let entity = NSEntityDescription.entity(forEntityName: PhoneBook.className, in: self.container.viewContext) else { return }
let newPhoneBook = NSManagedObject(entity: entity, insertInto: self.container.viewContext)
newPhoneBook.setValue(name, forKey: PhoneBook.Key.name)
newPhoneBook.setValue(phoneNumber, forKey: PhoneBook.Key.phoneNumber)
do {
try self.container.viewContext.save()
print("문맥 저장 성공")
} catch {
print("문맥 저장 실패")
}
}
func readAllData() {
do {
let phoneBooks = try self.container.viewContext.fetch(PhoneBook.fetchRequest())
for phoneBook in phoneBooks as [NSManagedObject] {
if let name = phoneBook.value(forKey: PhoneBook.Key.name) as? String,
let phoneNumber = phoneBook.value(forKey: PhoneBook.Key.phoneNumber) {
print("name: \(name), phoneNumber: \(phoneNumber)")
}
}
} catch {
print("데이터 읽기 실패")
}
}
UserDefaults 코드
// Create
UserDefaults.standard.set("010-1111-2222", forKey: "phoneNumber")
// Read
let phoneNumber = UserDefaults.standard.string(forKey: "phoneNumber")
print("저장된 전화번호: \(phoneNumber)")
// Update
// 같은 키에다가 set 을 하면 됨.
UserDefaults.standard.set("010-6666-7777", forKey: "phoneNumber")
let newPhoneNumber = UserDefaults.standard.string(forKey: "phoneNumber")
print("바뀐 전화번호: \(newPhoneNumber)")
// Delete
UserDefaults.standard.removeObject(forKey: "phoneNumber")
print("전화번호가 남아있는가: \(UserDefaults.standard.string(forKey: "phoneNumber"))")
UserDefaults 는 가장 간단한 사용방법 이기에
- 간단한 설정 데이터(예: 사용자 선호, 앱 설정) 저장.
- 사용자 로그인 상태, 점수, 간단한 문자열 등의 저장.
- 데이터를 구조적으로 저장하거나 검색하지 않아도 되는 경우.
에 손쉽게 사용할 수 있다.
Networking
네트워킹을 알기 전에
JSON데이터를 사용한다는 기본 개념이 있어야 한다.
서버와의 통신은 API 로 한다.
서버와의 통신에서 CRUD 가 이루어 질 때
JSON 형태의 데이터로 전달한다.
우리는 스위프트 언어로 인코딩, 디코딩을 하여 데이터를 읽을 수 있다.
URLSession 을 사용하여 통신을 한다.
'내일배움캠프 iOS' 카테고리의 다른 글
UIKit) TIL # 36 포켓몬 연락처 앱 과제 (Lv 1 ~ 4) (1) | 2024.12.09 |
---|---|
UIKit) TIL # 35 날씨앱 클론, 과제 맛보기 (0) | 2024.12.06 |
UIKit) TIL # 33 메모리 관리 이해 (1) | 2024.12.04 |
UIKit) TIL #32 MVC, Delegate Pattern (1) | 2024.12.03 |
UIKit) TIL #31 앱 개발 숙련 강의 - ViewController Lifecycle (1) | 2024.12.02 |