728x90
SMALL

✅ 현재 화면에서 보이는 카테고리 부분에 추가 문구를 담는 방법
API를 통해 카테고리를 정보를 받아옴
📋 카테고리 목록:
- 한식
- 서양식
- 일식
- 중식
- 이색음식점
- 카페/전통찻집
- 클럽
위의 문구에 App Store에서 처럼 이모지를 추가하여 UI 구현하려고 함

✅ 해결 방법
원본 카테고리에 추가로 이모지를 합친 새로운 배열 생성
📍 "이모지"와 "카테고리" 담을 데이터 모델 생성
/// 이모지를 폼할할 새 모델
struct CategoryEmogi: Hashable {
let id = UUID()
let name: String
let icon: String
var displayName: String {
return "\(icon) \(name)"
}
}
📍 각 카테고리 별로 이모지를 정할 메서드 선언
func updateCategories() {
let emojiMap: [String: String] = [
"한식": "🍚",
"서양식": "🥩",
"일식": "🍣",
"중식": "🍜",
"이색음식점": "🍤",
"카페/전통찻집": "☕️",
"클럽": "🎧"
]
var newCategories: [CategoryEmogi] = []
for category in categories {
let name = category.name
let icon = emojiMap[name] ?? "🥄"
let categoryEmogi = CategoryEmogi(name: name, icon: icon)
newCategories.append(categoryEmogi)
}
self.emojiCategories = newCategories
}
❓ 만약에 카테고리를 받아올 때 중복이 발생한다면?
func updateCategories() {
let emojiMap: [String: String] = [
"한식": "🍚",
"서양식": "🥩",
"일식": "🍣",
"중식": "🍜",
"이색음식점": "🍤",
"카페/전통찻집": "☕️",
"클럽": "🎧"
]
var seen = Set<String>() // 중복 제거용
var orderedUniqueCategories: [String] = [] // 순서를 유지한 이름 배열
// 1. 중복을 제거하면서 순서를 유지한 카테고리 이름 배열 생성
for category in categories {
let name = category.name
if !seen.contains(name) {
seen.insert(name)
orderedUniqueCategories.append(name)
}
}
// 2. 이모지를 붙여 CategoryEmogi 배열 생성
var result: [CategoryEmogi] = []
for categoryName in orderedUniqueCategories {
let icon = emojiMap[categoryName] ?? "🥄"
let emojiCategory = CategoryEmogi(name: categoryName, icon: icon)
result.append(emojiCategory)
}
// 3. 최종 저장
self.emojiCategories = result
}
✅ 고차함수를 통해 좀 더 축약해본다면?
func updateCategories(){
let emojiMap: [String: String] = [
"한식": "🍚",
"서양식": "🥩",
"일식": "🍣",
"중식": "🍜",
"이색음식점": "🍤",
"카페/전통찻집": "☕️",
"클럽": "🎧"
]
self.emojiCategories = categories.map { category in
let name = category.name
let icon = emojiMap[name] ?? "🍽️"
return CategoryEmogi(name: name, icon: icon)
}
}728x90
LIST
'Project > HiddenGem' 카테고리의 다른 글
| 🔨 화면 UI을 동시에 나오게 해서 사용자 친화적으로 해보기 (0) | 2025.05.19 |
|---|---|
| 🤔 MVVM 패턴에서 2개 이상의 값의 변화를 감지해야하는 경우에는?(CombineLatest) (0) | 2025.05.15 |
| 🤔 MVVM 패턴에서 앱 실행 시 자동으로 데이터 가져오는 함수를 꼭 viewDidLoad()에서 호출해야 하나? (0) | 2025.05.14 |
| 🔨 API 호출 함수 손 보기 (에러 처리 과정 적용) (0) | 2025.04.25 |
| 📍tour api를 통해 데이터 가져오기 (데이터를 확인할 목적) (0) | 2025.04.24 |