-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
개요
- Realm 데이터베이스를 사용하여 포켓몬 카드 정보 저장 및 관리
- 즐겨찾기 기능 구현을 위한 CRUD(Create, Read, Update, Delete) 작업 수행
- Realm 모델 정의 및 데이터 마이그레이션 처리
1. Realm 모델 정의
class RealmPokemonCard: Object {
@Persisted(primaryKey: true) var id: String
@Persisted var name: String
@Persisted var imageURL: String
@Persisted var isFavorite: Bool = false
// ...
convenience init(pokemonCard: PokemonCard) {
self.init()
self.id = pokemonCard.id
self.name = pokemonCard.name
self.imageURL = pokemonCard.imageURL
// ...
}
}- RealmPokemonCard 클래스를 정의하여 Realm 데이터베이스에 저장할 모델 생성
- @persisted 속성 래퍼를 사용하여 각 필드의 저장 방식 지정
- pokemonCard를 받아 RealmPokemonCard 인스턴스를 초기화하는 생성자 구현
2. Realm 데이터베이스 설정 및 초기화
class RealmManager {
static let shared = RealmManager()
private let realm: Realm
private init() {
do {
let config = Realm.Configuration(
schemaVersion: 1,
migrationBlock: { migration, oldSchemaVersion in
// 마이그레이션 처리
}
)
self.realm = try Realm(configuration: config)
} catch {
fatalError("Failed to initialize Realm: \(error)")
}
}
// ...
}- RealmManager 싱글톤 클래스를 생성하여 Realm 데이터베이스 인스턴스 관리
-Realm 설정(Realm.Configuration)을 통해 스키마 버전과 마이그레이션 처리 설정 - 초기화 시 설정을 기반으로 Realm 인스턴스 생성
3. 즐겨찾기 추가/삭제 기능 구현
extension RealmManager {
func addFavorite(_ pokemonCard: PokemonCard) {
let realmPokemonCard = RealmPokemonCard(pokemonCard: pokemonCard)
realmPokemonCard.isFavorite = true
do {
try realm.write {
realm.add(realmPokemonCard, update: .modified)
}
} catch {
print("Failed to add favorite: \(error)")
}
}
func removeFavorite(_ pokemonCard: PokemonCard) {
guard let realmPokemonCard = realm.object(ofType: RealmPokemonCard.self, forPrimaryKey: pokemonCard.id) else {
return
}
do {
try realm.write {
realmPokemonCard.isFavorite = false
if !realmPokemonCard.isFavorite {
realm.delete(realmPokemonCard)
}
}
} catch {
print("Failed to remove favorite: \(error)")
}
}
// ...
}- addFavorite 메서드를 통해 포켓몬 카드를 즐겨찾기에 추가
- removeFavorite 메서드를 통해 포켓몬 카드를 즐겨찾기에서 삭제
- Realm의 write 블록 내에서 데이터 변경 작업 수행
- 에러 처리를 위해 do-catch 문 사용
RealmPokemonCard 모델을 정의하여 Realm에 저장할 데이터 구조 설계
RealmManager를 통해 Realm 데이터베이스 인스턴스 초기화 및 관리
포켓몬 카드를 즐겨찾기에 추가/삭제할 때 addFavorite, removeFavorite 메서드 호출
Realm의 write 블록 내에서 데이터 생성, 수정, 삭제 작업 수행
즐겨찾기 상태 변경 시 UI 업데이트 및 관련 로직 처리
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels