[iOS] 외부 라이브러리 적용과 데이터 모델의 이해

iosSwift
avatar
2025.02.19
·
6 min read

외부 라이브러리는 왜 필요할까?

앱 개발에서 기본 라이브러리만으로 모든 기능을 직접 구현하면 시간이 오래 걸리고 유지보수가 어려울 수 있다.

이를 해결하기 위해 외부 라이브러리(Third-Party Library)를 사용하면 특정 기능을 빠르게 구현할 수 있다.

  • 이런 기능을 직접 구현할 필요 없이 라이브러리를 사용하면 쉽게 해결 가능!

    1. 네트워크 요청 → Alamofire

    2. 이미지 로딩 및 캐싱 → SDWebImage

    3. 데이터 저장 및 관리 → Realm, CoreData

    4. JSON 파싱 → Codable, SwiftyJSON

외부 라이브러리 적용 방법

Swift Package Manager(SPM) 사용

Xcode에서 SPM(Swift Package Manager)을 사용하면 라이브러리를 쉽게 추가할 수 있다.

  1. Xcode에서 프로젝트를 연다.

  2. File → Add Packages Dependencies... 선택

  3. 라이브러리의 GitHub URL 입력 (예: https://github.com/SDWebImage/SDWebImage)

  4. Add Package 클릭

  5. 프로젝트 설정 - TARGETS - General 탭 - Frameworks, Libraries, and Embedded Content에 라이브러리 추가

CocoaPods 사용

CocoaPods은 오랫동안 iOS 개발에서 사용된 라이브러리 관리 도구다.

  1. 설치

    sudo gem install cocoapods
    pod init
  2. Podfile에 라이브러리 추가

    target 'MyApp' do
      use_frameworks!
      pod 'SDWebImage'
    end
  3. 라이브러리 설치

    pod install

Carthage 사용

Carthage는 SPM이나 CocoaPods보다 수동 설정이 필요하지만, 프로젝트에 최소한의 영향을 미치는 방식이다.

  1. 설치

    brew install carthage
  2. Cartfile 작성

    github "Alamofire/Alamofire"
  3. 라이브러리 다운로드

    carthage update --platform iOS

외부 라이브러리 사용 시 주의점

  1. 프로젝트에 맞는 라이브러리를 선택

    • 너무 많은 라이브러리를 사용하면 앱 크기 증가 & 성능 저하 발생 가능

    • 필요한 기능만 최소한으로 적용

  2. 라이브러리의 유지보수 상태 확인

    • GitHub에서 최근 업데이트가 있는지, 이슈가 해결되고 있는지 확인

    • 오래된 라이브러리는 버그가 많거나 보안 이슈가 있을 수 있음

  3. 라이브러리 적용 후 실제 동작 테스트

    • 일부 라이브러리는 앱이 크래시를 일으킬 수도 있으므로 적용 후 반드시 테스트 필요

데이터 모델(Data Model)

데이터 모델이란?

데이터 모델은 앱에서 데이터를 구조화하고 저장하는 방식을 의미한다.

앱이 실행될 때 데이터를 어떻게 저장하고 불러올지 정의하는 것이 중요하다.

사용자(User) 데이터를 저장하는 방법

  1. JSON 데이터 형태 (서버 API 응답)

    {
      "id": 1,
      "name": "메주",
      "email": "meow@example.com"
    }
  2. Swift 구조체 사용 (Codable 적용)

    struct User: Codable {
        let id: Int
        let name: String
        let email: String
    }
  3. Core Data 모델

    class UserEntity: NSManagedObject {
        @NSManaged var id: Int64
        @NSManaged var name: String
        @NSManaged var email: String
    }

데이터 모델을 설계할 때 어떤 방식으로 저장할지에 따라 적절한 도구를 선택해야 한다.

데이터 모델을 관리하는 방법

Core Data

  • Apple이 제공하는 데이터 저장 기술

  • 데이터가 많아질수록 효율적

  • CRUD 기능 제공

    let user = UserEntity(context: CoreDataManager.shared.context)
    user.name = "감태"
    try? CoreDataManager.shared.context.save()

Realm

  • Core Data보다 사용이 간편한 NoSQL 데이터베이스

  • 성능이 좋고 빠른 데이터 저장 가능

    let realm = try! Realm()
    let user = User()
    user.name = "춘장"
    
    try! realm.write {
        realm.add(user)
    }

UserDefaults (간단한 데이터 저장)

  • 간단한 설정 값을 저장할 때 사용

  • 대량의 데이터를 저장하는 용도로는 부적합

    UserDefaults.standard.set("지성", forKey: "username")
    let name = UserDefaults.standard.string(forKey: "username")

데이터 모델을 설계할 때 주의점

  1. 데이터 구조를 미리 계획하기

    • 관계형 데이터(Core Data)가 필요한지, 간단한 데이터(UserDefaults)면 충분한지 판단

    • 데이터 크기와 읽기/쓰기 속도를 고려

  2. 데이터 무결성 유지

    • 저장된 데이터가 올바르게 유지되도록 모델을 설계

    • 예를 들어, User의 이메일 필드는 필수값이어야 한다.

  3. 성능 최적화 고려

    • Core Data에서 fetchBatchSize를 설정해 메모리 사용량을 최적화

    • Realm을 사용할 경우, 쿼리 최적화를 고려







- 컬렉션 아티클