[TIL] 내부 저장소, 화면 전환하기

신승현·2024년 4월 15일

TIL

목록 보기
58/72
post-thumbnail

1️⃣ 내부 저장소

  • 내부 저장소란? 앱이 기억하고 있어야 할 비휘발성 데이터를 저장하기 위해 사용되는 개념이며, 디바이스에 저장되기에 많은 데이터를 저장하기에는 적합하지 않다.
  • 디바이스에 저장하는 방법은 크게 4가지가 있다.

1. UserDefaults

  • UserDefaults는 간단한 Key-Value 데이터를 저장하는데 사용된다.
  • 주로 설정 값이나 사용자 기본 설정과 같은 작은 데이터를 저장할 때 사용된다.
  • 여기서 key값은 꼭 String 타입이여야 한다.
// 데이터 Create 및 Update
UserDefaults.standard.set(value, forKey: key)

// 데이터 Read | Any? 타입이여서 as를 사용한 타입 변환 후 사용
UserDefaults.standard.value(forKey: key)

// 데이터 Read | 특정 타입으로 반환할 경우 (String)
UserDefaults.standard.string(forKey: key)

// 데이터 Delete
UserDefaults.standard.removeObject(forKey: key)

2. KeyChain

  • iOS 앱에서 보안 정보를 안전하게 저장하고 관리하기 위한 메커니즘이다.
  • 키체인은 사용자의 비밀번호, 토큰, 인증서, 민감한 데이터와 같은 보안 관련 정보를 저장하는데 사용된다.
  • 키체인은 암호화되어 있어 앱 외부에서 쉽게 접근할 수 없으며, 사용자 데이터의 안전성이 보장된다.

3. 파일 시스템

  • 앱 내부 또는 외부 파일 시스템에 데이터를 저장할 수 있으며, 주로 텍스트 파일, 이미지, 동영상 등의 데이터를 저장할 때 사용된다.
  • 개인적으로 Unity에서 텍스트 파일을 저장하는 방식과 비슷하다고 생각한다.
/// Data Write
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)")
  }
}


/// Data Read
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를 추가해서 구현할 수 있다.
profile
개발자

0개의 댓글